A HubNewsCollection é uma API REST construída com ASP.NET Core 8.0 que agrega notícias de negócios obtidas via MediaStack. O serviço mantém um cache em memória das matérias retornadas pela API externa e permite sincronizar, listar, atualizar e excluir artigos. https://hubnewsapi-grfgdpgrbtd4g3cj.brazilsouth-01.azurewebsites.net/swagger/index.html
- .NET SDK 8.0 ou superior
- Acesso à internet para consumir o endpoint do MediaStack (chave de acesso configurada em
FetchApiNewsService
)
- Restaure as dependências
dotnet restore
- Execute a aplicação
dotnet run
- A API ficará disponível em
https://localhost:7066
(HTTPS) ehttp://localhost:5066
(HTTP) por padrão. - No perfil de desenvolvimento o Swagger UI pode ser acessado em
https://localhost:7066/swagger
.
FetchApiNewsService
: realiza a chamada HTTP ao MediaStack.HubNewsService
: armazena os artigos em um banco de dados e controla as operações de sincronização, atualização e exclusão.
A rota base do controlador é api/HubNews
.
POST /api/HubNews/admin/notices
Dispara a sincronização com o MediaStack e inclui no cache todos os artigos ainda não cadastrados (deduplicação por URL). Não requer corpo na requisição.
Respostas
201 Created
– Sincronização realizada com sucesso.
GET /api/HubNews/Feed
Retorna a lista de artigos ordenada por published_at
(mais recentes primeiro).
Respostas
200 OK
– Retorna um array de objetosArticles
:[ { "id": "f6d4f3e1-4f1c-4d0a-8b4e-a8d56af33e11", "author": "...", "title": "...", "description": "...", "url": "https://exemplo.com/noticia", "image": "https://exemplo.com/imagem.jpg", "category": "business", "source": "mediastack", "published_at": "2024-01-01T12:00:00Z" } ]
PUT /api/HubNews/admin/articles/{id}
Permite alterar o título e/ou URL de um artigo existente.
Body (JSON)
{
"title": "Novo título opcional",
"url": "https://nova-url-opcional.com"
}
Pelo menos um dos campos (title
ou url
) deve ser enviado. Caso a URL seja alterada, a API garante que ela não esteja sendo usada por outro artigo.
Respostas
200 OK
– Retorna o objetoArticles
atualizado.400 Bad Request
– Nenhum campo enviado para atualização.404 Not Found
– Artigo não localizado ou tentativa de usar uma URL já cadastrada.
DELETE /api/HubNews/admin/articles/{id}
Remove um artigo do cache em memória.
Respostas
204 No Content
– Exclusão realizada.404 Not Found
– Artigo não localizado.
Os artigos seguem o modelo definido em Domain/Model/Articles.cs
:
Campo | Tipo | Descrição |
---|---|---|
id |
Guid |
Identificador único gerado pela API. |
author |
string? |
Autor da matéria (quando informado). |
title |
string |
Título da notícia. |
description |
string |
Resumo da notícia. |
url |
string |
URL original do artigo (usada para deduplicação). |
image |
string? |
URL da imagem principal. |
category |
string |
Categoria atribuída ao artigo (padrão business ). |
source |
string? |
Fonte da notícia. |
published_at |
DateTime? |
Data/hora de publicação em UTC. |
A URL do MediaStack está definida diretamente em Service/FetchApiNewsService.cs
. Caso precise trocar o token access_key
ou outros parâmetros, ajuste o valor da variável url
naquele arquivo ou utilize variáveis de ambiente/injeção de configuração conforme a necessidade.