using Bitget_Server.Application.Services; using Bitget_Server.Domain.Models; using Microsoft.AspNetCore.Mvc; namespace Bitget_Server.Api.Controllers; /// /// 기존 WinForms 코인 선택 그리드 데이터를 REST 화. /// [ApiController] [Route("api/coins")] [Produces("application/json")] public class CoinsController : ControllerBase { private readonly SettingsService _settings; private readonly ILogger _logger; public CoinsController(SettingsService settings, ILogger logger) { _settings = settings; _logger = logger; } /// /// USDT 기준 Bitget 선물 마켓 정보 목록을 반환한다. /// 내부적으로 BitgetClient 캐시(_state.marketInfoList)를 우선 사용하고 비어 있으면 호출. /// [HttpGet] [ProducesResponseType(typeof(IEnumerable), StatusCodes.Status200OK)] [ProducesResponseType(typeof(ProblemDetails), StatusCodes.Status502BadGateway)] public async Task>> GetCoins(CancellationToken ct) { try { var coins = await _settings.GetCoinsAsync(ct); return Ok(coins); } catch (Exception ex) { _logger.LogError(ex, "코인 조회 실패"); return Problem( detail: ex.Message, statusCode: StatusCodes.Status502BadGateway, title: "Failed to fetch coins from Bitget"); } } }