feat : change api name, add account route api, add methods

This commit is contained in:
2025-08-01 13:38:36 +08:00
parent 518debd531
commit 6a82898765
3 changed files with 76 additions and 21 deletions

67
Controllers/Account.cs Normal file
View File

@@ -0,0 +1,67 @@
using fubon_api.Models;
using FubonNeo.Sdk;
using Microsoft.AspNetCore.Mvc;
namespace fubon_api.Controllers;
[ApiController]
[Route("account/[controller]")]
public class FubonSdkAccountController : ControllerBase
{
private readonly FubonSDK _sdk;
private Account _account;
private readonly ILogger<FubonSdkAccountController> _logger;
public FubonSdkAccountController(ILogger<FubonSdkAccountController> logger, FubonSDK sdk, Account account)
{
_sdk = sdk;
_account = account;
_logger = logger;
}
[HttpPost("Login")]
public LoginResponse Login([FromBody] LoginRequest request)
{
if (request == null)
{
throw new ArgumentException("Invalid login request.");
}
var result = _sdk.Login(request.Id, request.Password, "Your Cert Path", "Your Cert Password");
_account = result.data[0];
return result;
}
[HttpGet("Inventories")]
public InventoryResponse GetInventories()
{
var result = _sdk.Accounting.Inventories(_account);
return result;
}
[HttpGet("Unrealized")]
public UnRealizedResponse GetUnrealized()
{
var result = _sdk.Accounting.UnrealizedGainsAndLoses(_account);
return result;
}
[HttpGet("Realized")]
public RealizedResponse GetRealized()
{
var result = _sdk.Accounting.RealizedGainsAndLoses(_account);
return result;
}
[HttpGet("Settlement")]
public SettlementResponse GetSettlement()
{
var result = _sdk.Accounting.QuerySettlement(_account, "0d");
return result;
}
}

View File

@@ -5,33 +5,20 @@ using Microsoft.AspNetCore.Mvc;
namespace fubon_api.Controllers;
[ApiController]
[Route("api/[controller]")]
public class FubonSdkController : ControllerBase
[Route("trade/[controller]")]
public class FubonSdkTradeController : ControllerBase
{
private readonly FubonSDK _sdk;
private static Account account;
private readonly ILogger<FubonSdkController> _logger;
private Account _account;
private readonly ILogger<FubonSdkTradeController> _logger;
public FubonSdkController(ILogger<FubonSdkController> logger, FubonSDK sdk)
public FubonSdkTradeController(ILogger<FubonSdkTradeController> logger, FubonSDK sdk, Account account)
{
_sdk = sdk;
_account = account;
_logger = logger;
}
[HttpPost("Login")]
public LoginResponse Login([FromBody] LoginRequest request)
{
if (request == null)
{
throw new ArgumentException("Invalid login request.");
}
var result = _sdk.Login(request.Id, request.Password, "Your Cert Path", "Your Cert Password");
account = result.data[0];
return result;
}
[HttpPost("PlaceOrder")]
public bool PlaceOrder([FromBody] OrderRequest request)
{
@@ -47,7 +34,7 @@ public class FubonSdkController : ControllerBase
null
);
_sdk.Stock.PlaceOrder(account, order);
_sdk.Stock.PlaceOrder(_account, order);
Console.WriteLine(request.ToString());
return true;
@@ -56,7 +43,7 @@ public class FubonSdkController : ControllerBase
[HttpGet("OrderResult")]
public IEnumerable<OrderResult> GetOrderResult()
{
var orderResults = _sdk.Stock.GetOrderResults(account);
var orderResults = _sdk.Stock.GetOrderResults(_account);
return orderResults.data;
}

View File

@@ -11,6 +11,7 @@ builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
builder.Services.AddSingleton<FubonSDK>();
builder.Services.AddSingleton<Account>();
var app = builder.Build();