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 dev
sudo systemctl start mongod
Se 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.
![Exemplo de requisição a API para obter posts ordenados via Postman](https://private-user-images.githubusercontent.com/87145566/381987002-65640926-3ff4-4335-a098-f0f384c4e8b3.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkwNTczMjUsIm5iZiI6MTczOTA1NzAyNSwicGF0aCI6Ii84NzE0NTU2Ni8zODE5ODcwMDItNjU2NDA5MjYtM2ZmNC00MzM1LWEwOTgtZjBmMzg0YzRlOGIzLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA4VDIzMjM0NVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWIxMGUyNDgzNDgxMzlmZjY4NTg3ODg2YjkwMGYxNDg4ZTA0MzVkYmIwZmE4NjNmMTNmN2Q2Zjg2ZDEyYzAwZTcmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.4Rysu3x5DIu2EQaUmB_fxIWVDF2mkg0RcWHG-lDsKME)
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 test
sudo systemctl start mongod
@Igor Felipe