From 70bbd3c4815ba0b45581e9974f8b140c262c3e75 Mon Sep 17 00:00:00 2001 From: Denis Prokhorchik Date: Fri, 14 Jan 2022 07:01:24 +0300 Subject: [PATCH] feat(issue-153): add polly lib for the web gateway api --- .../Features/E-Sender/Services/ESenderService.cs | 4 ++-- .../O2NextGen.Web.BFF.Core.csproj | 3 +++ .../O2NextGen.Web.BFF.Core/Startup.cs | 15 +++++++++++---- 3 files changed, 16 insertions(+), 6 deletions(-) diff --git a/src/ApiGateways/O2NextGen.Web.BFF.Core/O2NextGen.Web.BFF.Core/Features/E-Sender/Services/ESenderService.cs b/src/ApiGateways/O2NextGen.Web.BFF.Core/O2NextGen.Web.BFF.Core/Features/E-Sender/Services/ESenderService.cs index 3020ce7a..cd5bcd93 100644 --- a/src/ApiGateways/O2NextGen.Web.BFF.Core/O2NextGen.Web.BFF.Core/Features/E-Sender/Services/ESenderService.cs +++ b/src/ApiGateways/O2NextGen.Web.BFF.Core/O2NextGen.Web.BFF.Core/Features/E-Sender/Services/ESenderService.cs @@ -21,13 +21,13 @@ public ESenderService(HttpClient httpClient, IOptions config) } public async Task AddAsync(MailRequestViewModel model, CancellationToken ct) { - var response = await _httpClient.PostAsJsonAsync(_config.Value.ESenderUrl+"/api/emailsender",model,ct); + var response = await _httpClient.PostAsJsonAsync("api/emailsender",model,ct); return await response.Content.ReadAsAsync(ct); } public async Task GetAsync(long id, CancellationToken ct) { - var response = await _httpClient.GetAsync(_config.Value.ESenderUrl+$"/api/emailsender/{id}",ct); + var response = await _httpClient.GetAsync($"api/emailsender/{id}",ct); return await response.Content.ReadAsAsync(ct); } diff --git a/src/ApiGateways/O2NextGen.Web.BFF.Core/O2NextGen.Web.BFF.Core/O2NextGen.Web.BFF.Core.csproj b/src/ApiGateways/O2NextGen.Web.BFF.Core/O2NextGen.Web.BFF.Core/O2NextGen.Web.BFF.Core.csproj index 70010504..20031ec9 100644 --- a/src/ApiGateways/O2NextGen.Web.BFF.Core/O2NextGen.Web.BFF.Core/O2NextGen.Web.BFF.Core.csproj +++ b/src/ApiGateways/O2NextGen.Web.BFF.Core/O2NextGen.Web.BFF.Core/O2NextGen.Web.BFF.Core.csproj @@ -13,6 +13,9 @@ + + 2.2.0 + diff --git a/src/ApiGateways/O2NextGen.Web.BFF.Core/O2NextGen.Web.BFF.Core/Startup.cs b/src/ApiGateways/O2NextGen.Web.BFF.Core/O2NextGen.Web.BFF.Core/Startup.cs index ae1b3a77..073f60c6 100644 --- a/src/ApiGateways/O2NextGen.Web.BFF.Core/O2NextGen.Web.BFF.Core/Startup.cs +++ b/src/ApiGateways/O2NextGen.Web.BFF.Core/O2NextGen.Web.BFF.Core/Startup.cs @@ -1,4 +1,5 @@ -using System.IdentityModel.Tokens.Jwt; +using System; +using System.IdentityModel.Tokens.Jwt; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Http; @@ -7,6 +8,7 @@ using Microsoft.Extensions.DependencyInjection; using O2NextGen.Web.BFF.Core.Config; using O2NextGen.Web.BFF.Core.Features.E_Sender.Services; +using Polly; namespace O2NextGen.Web.BFF.Core { @@ -22,7 +24,7 @@ public Startup(IConfiguration configuration) public void ConfigureServices(IServiceCollection services) { services.AddCustomMvc(Configuration); - services.AddApplicationServices(); + services.AddApplicationServices(Configuration); } public void Configure(IApplicationBuilder app, IHostingEnvironment env) @@ -69,7 +71,7 @@ public static IServiceCollection AddCustomAuthentication(this IServiceCollection return services; } - public static IServiceCollection AddApplicationServices(this IServiceCollection services) + public static IServiceCollection AddApplicationServices(this IServiceCollection services,IConfiguration configuration) { //register delegating handlers // services.AddTransient(); @@ -77,7 +79,12 @@ public static IServiceCollection AddApplicationServices(this IServiceCollection //register http services services - .AddHttpClient(); + .AddHttpClient("E-Sender",client => + { + client.BaseAddress = new Uri(configuration.GetValue("urls:ESenderUrl")); + }) + .AddTransientHttpErrorPolicy(builder => builder.WaitAndRetryAsync(5,arrempt=>TimeSpan.FromSeconds(arrempt*2) + )); return services; }