diff --git a/Icon/pagbank-dotnet.png b/Icon/pagbank-dotnet.png new file mode 100644 index 0000000..178674a Binary files /dev/null and b/Icon/pagbank-dotnet.png differ diff --git a/PagBank/Client/PagBankClient.cs b/PagBank/Client/PagBankClient.cs index 9ad8fa2..93f220d 100644 --- a/PagBank/Client/PagBankClient.cs +++ b/PagBank/Client/PagBankClient.cs @@ -2,43 +2,25 @@ { public class PagBankClient : IPagBankClient { - private readonly string _token; - private readonly BaseUrl _baseUrl; - private readonly IRestClient _restClient; + private readonly PagBankConfig _pagBankConfig; - public PagBankClient(BaseUrl baseUrl, string token, IRestClient? restClient = null) + public PagBankClient(PagBankConfig pagBankConfig) { - _token = token; - _baseUrl = baseUrl; - _restClient = restClient ?? new RestClient(RestClientOptions()); + _pagBankConfig = pagBankConfig; } public async Task ExecuteAsync(PagBankRequest pagBankRequest) where T : class { + _pagBankConfig.RestClient ??= new RestClient(PagBankUtil.RestClientOptions(_pagBankConfig)); var request = new RestRequest(pagBankRequest.Endpoint, (RestSharp.Method)pagBankRequest.Method); if (pagBankRequest.Body != null) request.AddJsonBody(pagBankRequest.Body, ContentType.Json); request.AddOrUpdateHeader("accept", ContentType.Json); - request.AddOrUpdateHeader("user-agent", GetUserAgent()); + request.AddOrUpdateHeader("user-agent", PagBankUtil.GetUserAgent()); if (pagBankRequest.Headers != null) foreach (var header in pagBankRequest.Headers) request.AddOrUpdateHeader(header.Key, header.Value); - return await _restClient.ExecuteAsync(request); - } - - private RestClientOptions RestClientOptions() - { - var options = new RestClientOptions(_baseUrl.GetDescription()); - options.Authenticator = new OAuth2AuthorizationRequestHeaderAuthenticator(_token, "Bearer"); - return options; - } - - internal static string GetUserAgent() - { - var assembly = Assembly.GetExecutingAssembly(); - var attribute = assembly.GetCustomAttribute(); - var version = attribute?.InformationalVersion; - return $"pagbank-dotnet/{version}"; + return await _pagBankConfig.RestClient.ExecuteAsync(request); } } } diff --git a/PagBank/Config/Interface/IPagBankConfig.cs b/PagBank/Config/Interface/IPagBankConfig.cs new file mode 100644 index 0000000..aad86cc --- /dev/null +++ b/PagBank/Config/Interface/IPagBankConfig.cs @@ -0,0 +1,9 @@ +namespace PagBank +{ + public interface IPagBankConfig + { + BaseUrl BaseUrl { get; } + string Token { get; } + IRestClient? RestClient { get; } + } +} diff --git a/PagBank/Config/PagBankConfig.cs b/PagBank/Config/PagBankConfig.cs new file mode 100644 index 0000000..269399c --- /dev/null +++ b/PagBank/Config/PagBankConfig.cs @@ -0,0 +1,9 @@ +namespace PagBank +{ + public class PagBankConfig : IPagBankConfig + { + public required BaseUrl BaseUrl { get; set; } + public required string Token { get; set; } + public IRestClient? RestClient { get; set; } + } +} diff --git a/PagBank/PagBank.csproj b/PagBank/PagBank.csproj index 9c806c4..1865dcc 100644 --- a/PagBank/PagBank.csproj +++ b/PagBank/PagBank.csproj @@ -4,8 +4,8 @@ net7.0 enable enable - 1.0.2 - Matheus Miranda + 1.0.3 + Matheus Miranda, PagBank True pagbank;dotnet @@ -18,9 +18,14 @@ LICENSE Copyright (c) 2023 Matheus Miranda README.md + pagbank-dotnet.png + + True + \ + True \ @@ -35,4 +40,8 @@ + + + + diff --git a/PagBank/Usings.cs b/PagBank/Usings.cs index 2ba55aa..c187309 100644 --- a/PagBank/Usings.cs +++ b/PagBank/Usings.cs @@ -1,5 +1,5 @@ global using PagBank.Extension; global using RestSharp; -global using RestSharp.Authenticators.OAuth2; global using System.ComponentModel; global using System.Reflection; +global using RestSharp.Authenticators.OAuth2; diff --git a/PagBank/Util/PagBankUtil.cs b/PagBank/Util/PagBankUtil.cs new file mode 100644 index 0000000..c2e1ff2 --- /dev/null +++ b/PagBank/Util/PagBankUtil.cs @@ -0,0 +1,20 @@ +namespace PagBank +{ + public class PagBankUtil + { + internal static string GetUserAgent() + { + var assembly = Assembly.GetExecutingAssembly(); + var attribute = assembly.GetCustomAttribute(); + var version = attribute?.InformationalVersion; + return $"pagbank-dotnet/{version}"; + } + + internal static RestClientOptions RestClientOptions(PagBankConfig pagBankConfig) + { + var options = new RestClientOptions(pagBankConfig.BaseUrl.GetDescription()); + options.Authenticator = new OAuth2AuthorizationRequestHeaderAuthenticator(pagBankConfig.Token, "Bearer"); + return options; + } + } +} diff --git a/PagBankTest/UnitTest1.cs b/PagBankTest/UnitTest1.cs index 3281ad0..8a5b9e1 100644 --- a/PagBankTest/UnitTest1.cs +++ b/PagBankTest/UnitTest1.cs @@ -10,13 +10,6 @@ public class Tests [Test] public async Task MockCriarPedido() { - // Define o seu token - var token = "123"; - - // Crie header - //var header = new Dictionary(); - //header.Add("accept", "application/json"); - // Crie objeto var body = new { @@ -53,11 +46,17 @@ public async Task MockCriarPedido() .Setup(x => x.ExecuteAsync(It.IsAny(), default)) .ReturnsAsync(restResponse); + var config = new PagBankConfig + { + BaseUrl = BaseUrl.Sandbox, + Token = "123", + RestClient = mockRestClient.Object + }; + // Create the PagBankClient using the mocked IRestClient - var pagBankClient = new PagBankClient(BaseUrl.Sandbox, token, mockRestClient.Object); + var pagBankClient = new PagBankClient(config); // Chame o método que utiliza o método ExecuteAsync - //var response = await pagBankClient.ExecuteAsync(pagBankRequest); var response = await pagBankClient.ExecuteAsync(pagBankRequest); // Verifique o resultado