47 lines
992 B
C#
47 lines
992 B
C#
using Backend.ServiceHander;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
|
|
namespace Backend.Controller
|
|
{
|
|
[ApiController]
|
|
[Route("api/news-sentiment")]
|
|
public sealed class NewsSentimentController : ControllerBase
|
|
{
|
|
private readonly NewsSentimentService _service;
|
|
|
|
public NewsSentimentController(NewsSentimentService service)
|
|
{
|
|
_service = service;
|
|
}
|
|
|
|
[HttpGet]
|
|
public async Task<IActionResult> Analyze(
|
|
[FromQuery] string keyword,
|
|
CancellationToken cancellationToken)
|
|
{
|
|
try
|
|
{
|
|
var results = await _service.AnalyzeAsync(keyword, cancellationToken);
|
|
return Ok(results.Select(r => new
|
|
{
|
|
source = r.Source,
|
|
keyword = r.Keyword,
|
|
publishedAt = r.PublishedAt,
|
|
title = r.Title,
|
|
score = r.Score,
|
|
sentimentLabel = r.SentimentLabel,
|
|
url = r.Url
|
|
}));
|
|
}
|
|
catch (ArgumentException ex)
|
|
{
|
|
return BadRequest(ex.Message);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
return StatusCode(500, new { error = ex.ToString() });
|
|
}
|
|
}
|
|
}
|
|
}
|