Criar um programa que consulta diariamente a API do Reddit para coletar e armazenar postagens em destaque do subreddit "artificial". O programa também implementa endpoints REST para permitir a consulta das postagens em intervalos de datas específicos.
- Clone o repositório:
git clone [email protected]:iigorfelipe/reddit-posts-viewer.git- Entre na pasta do projeto:
cd reddit-posts-viewer- Instale as dependências:
npm install- Crie o arquivo .env: Copie o arquivo de exemplo para criar seu próprio arquivo de configuração:
cp .env.example .env- Execute o projeto:
npm run devsudo systemctl start mongodSe encontrar qualquer dificuldade, sinta-se à vontade para me contatar através dos links fornecidos ao final desta documentação.
http://localhost:3000/posts?start_date=2024-10-01T00:00:00.000Z&end_date=2024-10-30T00:00:00.000Z
Este endpoint recupera posts com base no intervalo de datas especificado.
-
start_date(string): A data de início para o intervalo de datas no formato ISO 8601. -
end_date(string): A data de fim para o intervalo de datas no formato ISO 8601.
Após uma requisição bem-sucedida, o servidor responderá com um código de status 200 e um array JSON contendo objetos de post. Cada objeto de post inclui os seguintes campos:
-
id(string): O identificador do post. -
title(string): O título do post. -
author(string): O autor do post. -
created_utc(number): O timestamp de criação do post. -
ups(number): O número de upvotes para o post. -
num_comments(number): The O número de comentários no post.http://localhost:3000/posts/sorted?start_date=2024-10-01T00:00:00.000Z&end_date=2024-10-30T00:00:00.000Z&order=ups
Este endpoint realiza uma requisição HTTP GET para recuperar uma lista de posts ordenados por um intervalo de datas especificado e ordem.
-
start_date(string): A data de início para o intervalo de datas no formato ISO 8601. -
end_date(string): A data de fim para o intervalo de datas no formato ISO 8601. -
order(string): A ordem pela qual os posts devem ser ordenados ("ups" ou "comments").
Após uma execução bem-sucedida, o servidor responderá com um código de status 200 e um array JSON contendo os posts ordenados, com a mesma estrutura descrita na seção de resposta acima.
Exemplo de requisição à API para obter posts ordenados, utilizando o Postman.
Este projeto inclui testes automatizados para garantir o funcionamento correto da API. Os testes são escritos utilizando Jest e Supertest.
Para executar os testes, siga os passos abaixo:
- Instale as Dependências: Se você ainda não fez isso, instale as dependências do projeto:
npm install- Execute os Testes
npm testsudo systemctl start mongod@Igor Felipe