diff --git a/Controllers/Account.cs b/Controllers/Account.cs index da000c6..436788b 100644 --- a/Controllers/Account.cs +++ b/Controllers/Account.cs @@ -9,7 +9,7 @@ namespace fubon_api.Controllers; public class FubonSdkAccountController : ControllerBase { private readonly FubonSDK _sdk; - private Account _account; + private readonly Account _account; private readonly ILogger _logger; public FubonSdkAccountController(ILogger logger, FubonSDK sdk, Account account) @@ -19,18 +19,10 @@ public class FubonSdkAccountController : ControllerBase _logger = logger; } - [HttpPost("Login")] - public LoginResponse Login([FromBody] LoginRequest request) + [HttpGet("Account")] + public Account GetAccount() { - 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; + return _account; } [HttpGet("Inventories")] diff --git a/Models/FubonSettings.cs b/Models/FubonSettings.cs new file mode 100644 index 0000000..fb1c934 --- /dev/null +++ b/Models/FubonSettings.cs @@ -0,0 +1,9 @@ +namespace fubon_api.Models; + +public class FubonSettings +{ + public string Id { get; set; } + public string Password { get; set; } + public string CertPath { get; set; } + public string CertPassword{ get; set; } +} \ No newline at end of file diff --git a/Program.cs b/Program.cs index 5d949ee..c52d0d7 100644 --- a/Program.cs +++ b/Program.cs @@ -1,18 +1,36 @@ using fubon_api.Controllers; +using fubon_api.Models; using FubonNeo.Sdk; var builder = WebApplication.CreateBuilder(args); +// appsettings +var fubonSettings = builder.Configuration.GetSection("FubonSettings").Get(); +if (fubonSettings == null) +{ + throw new InvalidOperationException("FubonSettings is missing."); +} + // Add services to the container. builder.Services.AddControllers(); // Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle builder.Services.AddEndpointsApiExplorer(); builder.Services.AddSwaggerGen(); - builder.Services.AddSingleton(); -builder.Services.AddSingleton(); +builder.Services.AddSingleton(provider => +{ + var sdk = provider.GetRequiredService(); + var logger = provider.GetRequiredService>(); + var loginResponse = sdk.Login(fubonSettings.Id, fubonSettings.Password, fubonSettings.CertPath, fubonSettings.CertPassword); + if (loginResponse.isSuccess != true || loginResponse.data[0] == null) + { + logger.LogError("Login failed."); + throw new Exception("Login failed."); + } + return loginResponse.data[0]; +}); var app = builder.Build(); // Configure the HTTP request pipeline. diff --git a/appsettings.Development.json b/appsettings.Development.json index 0c208ae..75b99b7 100644 --- a/appsettings.Development.json +++ b/appsettings.Development.json @@ -4,5 +4,11 @@ "Default": "Information", "Microsoft.AspNetCore": "Warning" } + }, + "FubonSettings":{ + "Id": "UserId", + "Password": "Password", + "CertPath": "./static", + "CertPassword":"CertPassword" } -} +} \ No newline at end of file diff --git a/appsettings.json b/appsettings.json index 10f68b8..b906b3c 100644 --- a/appsettings.json +++ b/appsettings.json @@ -5,5 +5,11 @@ "Microsoft.AspNetCore": "Warning" } }, + "FubonSettings":{ + "Id": "UserId", + "Password": "Password", + "CertPath": "./static", + "CertPassword":"CertPassword" + }, "AllowedHosts": "*" }