From c7f2b07a9bcf8d7511bf4b5bd03a4f6aeeaf2a3e Mon Sep 17 00:00:00 2001 From: Yami An Date: Sat, 3 Feb 2024 09:29:49 +0700 Subject: [PATCH] remote ecommerce --- .../Responses/CertificateResponse.cs | 5 +++++ .../Responses/DeveloperResponse.cs | 9 +++++++++ .../Responses/DeveloperTypeResponse.cs | 4 ++++ .../Services/IEcommerceService.cs | 4 ++-- .../RemoteService/RemoteService.cs | 13 +++++++++---- src/YANLib.Application/Services/EcommerceService.cs | 11 +++++------ src/YANLib.Domain/YANLibConsts.cs | 2 +- 7 files changed, 35 insertions(+), 13 deletions(-) diff --git a/src/YANLib.Application.Contracts/Responses/CertificateResponse.cs b/src/YANLib.Application.Contracts/Responses/CertificateResponse.cs index c5d77d46..eb283307 100644 --- a/src/YANLib.Application.Contracts/Responses/CertificateResponse.cs +++ b/src/YANLib.Application.Contracts/Responses/CertificateResponse.cs @@ -5,9 +5,14 @@ namespace YANLib.Responses; public sealed record CertificateResponse { public string Id { get; set; } + public string Name { get; set; } + public double? GPA { get; set; } + public string DeveloperId { get; set; } + public DateTime CreatedAt { get; set; } + public DateTime? UpdatedAt { get; set; } } diff --git a/src/YANLib.Application.Contracts/Responses/DeveloperResponse.cs b/src/YANLib.Application.Contracts/Responses/DeveloperResponse.cs index 53ba1faf..669a00ea 100644 --- a/src/YANLib.Application.Contracts/Responses/DeveloperResponse.cs +++ b/src/YANLib.Application.Contracts/Responses/DeveloperResponse.cs @@ -6,13 +6,22 @@ namespace YANLib.Responses; public sealed record DeveloperResponse { public string Id { get; set; } + public string Name { get; set; } + public string Phone { get; set; } + public string IdCard { get; set; } + public bool IsActive { get; set; } + public int Version { get; set; } + public DateTime CreatedAt { get; set; } + public DateTime? UpdatedAt { get; set; } + public DeveloperTypeResponse DeveloperType { get; set; } + public List Certificates { get; set; } } diff --git a/src/YANLib.Application.Contracts/Responses/DeveloperTypeResponse.cs b/src/YANLib.Application.Contracts/Responses/DeveloperTypeResponse.cs index 672e591f..e2b9d08f 100644 --- a/src/YANLib.Application.Contracts/Responses/DeveloperTypeResponse.cs +++ b/src/YANLib.Application.Contracts/Responses/DeveloperTypeResponse.cs @@ -5,8 +5,12 @@ namespace YANLib.Responses; public sealed record DeveloperTypeResponse { public int Code { get; set; } + public string Name { get; set; } + public bool IsActive { get; set; } + public DateTime CreatedAt { get; set; } + public DateTime? UpdatedAt { get; set; } } diff --git a/src/YANLib.Application.Contracts/Services/IEcommerceService.cs b/src/YANLib.Application.Contracts/Services/IEcommerceService.cs index 07f6d861..fcd18938 100644 --- a/src/YANLib.Application.Contracts/Services/IEcommerceService.cs +++ b/src/YANLib.Application.Contracts/Services/IEcommerceService.cs @@ -6,7 +6,7 @@ namespace YANLib.Services; public interface IEcommerceService : IApplicationService { - public ValueTask GetAccessToken(EcommerceLoginRequest request); + public ValueTask GetAccessToken(EcommerceLoginRequest request); - public ValueTask GetRefreshToken(string accessToken); + public ValueTask GetRefreshToken(string accessToken); } diff --git a/src/YANLib.Application/RemoteService/RemoteService.cs b/src/YANLib.Application/RemoteService/RemoteService.cs index a48d8505..070f55ff 100644 --- a/src/YANLib.Application/RemoteService/RemoteService.cs +++ b/src/YANLib.Application/RemoteService/RemoteService.cs @@ -32,16 +32,21 @@ public async ValueTask InvokeApi(string remoteRoot, string path, Method me if (headers.IsNotEmptyAndNull()) { headers.ForEach(x => req.AddHeader(x.Key, x.Value)); + + if (jsonInput.IsNotWhiteSpaceAndNull()) + { + _ = req.AddParameter(headers["Content-Type"], jsonInput, RequestBody); + } } else { _ = req.AddHeader("Accept", "*/*"); _ = req.AddHeader("Content-Type", "application/json"); - } - if (jsonInput.IsNotWhiteSpaceAndNull()) - { - _ = req.AddParameter("application/json", jsonInput, RequestBody); + if (jsonInput.IsNotWhiteSpaceAndNull()) + { + _ = req.AddParameter("application/json", jsonInput, RequestBody); + } } if (queryParams.IsNotEmptyAndNull()) diff --git a/src/YANLib.Application/Services/EcommerceService.cs b/src/YANLib.Application/Services/EcommerceService.cs index a050ffc7..aea1e2ef 100644 --- a/src/YANLib.Application/Services/EcommerceService.cs +++ b/src/YANLib.Application/Services/EcommerceService.cs @@ -19,18 +19,17 @@ IRemoteService remoteService private readonly ILogger _logger = logger; private readonly IRemoteService _remoteService = remoteService; - public async ValueTask GetAccessToken(EcommerceLoginRequest request) + public async ValueTask GetAccessToken(EcommerceLoginRequest request) { var json = request.Serialize(); try { - var hdrs = new Dictionary + return await _remoteService.InvokeApi(EcommerceApi, Login, Post, headers: new Dictionary { { "Accept", "*/*" }, { "Content-Type", "application/x-www-form-urlencoded" } - }; - return await _remoteService.InvokeApi(EcommerceApi, Login, Post, jsonInput: json); + }, queryParams: request.Serialize().Deserialize>()); } catch (Exception ex) { @@ -40,11 +39,11 @@ public async ValueTask GetAccessToken(EcommerceLoginRequest request) } } - public async ValueTask GetRefreshToken(string accessToken) + public async ValueTask GetRefreshToken(string accessToken) { try { - return await _remoteService.InvokeApi(EcommerceApi, Refresh, Get, new Dictionary + return await _remoteService.InvokeApi(EcommerceApi, TokenRefresh, Get, new Dictionary { { "Authorization", $"Bearer {accessToken}" } }); diff --git a/src/YANLib.Domain/YANLibConsts.cs b/src/YANLib.Domain/YANLibConsts.cs index 35c2fab4..aa914a53 100644 --- a/src/YANLib.Domain/YANLibConsts.cs +++ b/src/YANLib.Domain/YANLibConsts.cs @@ -50,7 +50,7 @@ public readonly struct RemoteService public readonly struct Path { public const string Login = "login"; - public const string Refresh = "refresh"; + public const string TokenRefresh = "token/refresh"; } } }