SoftTraderBackend/Controller/NewsSentimentController.cs
2026-03-20 10:42:48 -04:00

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() });
}
}
}
}