Skip to content

Commit

Permalink
feat(issue-162): add feature e-sender service to o2-auth
Browse files Browse the repository at this point in the history
Merge pull request #169 from live-dev999/live-dev999/issue162
  • Loading branch information
live-dev999 committed Jan 22, 2022
2 parents 9543975 + 025a0ad commit 31218d4
Show file tree
Hide file tree
Showing 5 changed files with 94 additions and 4 deletions.
36 changes: 36 additions & 0 deletions src/Services/auth/O2NextGen.Auth.Web/Services/ESenderService.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
using System;
using System.Net.Http;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.Extensions.Options;

namespace O2NextGen.Auth.Web.Services
{
public interface IESenderService
{
Task Send(string email, string subject, string htmlMessage);
}
public class ESenderService: IESenderService
{
private readonly HttpClient _httpClient;
private readonly IOptions<UrlsConfig> _config;

public ESenderService(HttpClient httpClient, IOptions<UrlsConfig> config)
{
_httpClient = httpClient ?? throw new ArgumentNullException(nameof(httpClient));
_config = config ?? throw new ArgumentNullException(nameof(config));
}

public async Task Send(string email, string subject, string htmlMessage)
{
var model = new MailRequestViewModel()
{
Subject = subject,
To = email,
Body = htmlMessage
};
var response = await _httpClient.PostAsJsonAsync("api/emailsender",model,CancellationToken.None);
await response.Content.ReadAsAsync<MailRequestViewModel>(CancellationToken.None);
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
namespace O2NextGen.Auth.Web.Services
{
public class MailRequestViewModel
{
public long Id { get; set; }
public string From { get; set; }
public string To { get; set; }
public string Body { get; set; }
public string Subject { get; set; }
}
}
7 changes: 7 additions & 0 deletions src/Services/auth/O2NextGen.Auth.Web/Services/UrlsConfig.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
namespace O2NextGen.Auth.Web.Services
{
public class UrlsConfig
{
public string ESenderUrl { get; set; }
}
}
39 changes: 36 additions & 3 deletions src/Services/auth/O2NextGen.Auth.Web/Startup.cs
Original file line number Diff line number Diff line change
@@ -1,21 +1,31 @@
using System.Text.Encodings.Web;
using System;
using System.Text.Encodings.Web;
using System.Threading.Tasks;
using System.Web;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Identity;
using Microsoft.AspNetCore.Identity.UI.Services;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
using O2NextGen.Auth.Web.Data;
using O2NextGen.Auth.Web.Extensions;
using O2NextGen.Auth.Web.Services;

namespace O2NextGen.Auth.Web
{
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}

public IConfiguration Configuration { get; }
public void ConfigureServices(IServiceCollection services)
{

Expand All @@ -29,8 +39,9 @@ public void ConfigureServices(IServiceCollection services)
.AddEntityFrameworkStores<AuthDbContext>()
.AddDefaultTokenProviders();


services.AddApplicationServices(Configuration);
services.AddSingleton<IEmailSender, DummyEmailSender>();

}

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
Expand All @@ -46,22 +57,44 @@ public void Configure(IApplicationBuilder app, IHostingEnvironment env)
app.UseRequestLocalization(v);
app.UseAuthentication();
app.UseMvcWithDefaultRoute();


}
}

public static class ServiceCollectionExtensions
{
public static IServiceCollection AddApplicationServices(this IServiceCollection services,IConfiguration configuration)
{
//register delegating handlers
// services.AddTransient<HttpClientAuthorizationDelegatingHandler>();
services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();

//register http services
services
.AddHttpClient<IESenderService, ESenderService>("E-Sender", client =>
{
client.BaseAddress = new Uri(configuration.GetValue<string>("urls:ESenderUrl"));
});

return services;
}
}
internal class DummyEmailSender : IEmailSender
{
private readonly ILogger<DummyEmailSender> _logger;
private readonly IESenderService _service;

public DummyEmailSender(ILogger<DummyEmailSender> logger)
public DummyEmailSender(ILogger<DummyEmailSender> logger, IESenderService service)
{
_logger = logger;
_service = service;
}
public Task SendEmailAsync(string email, string subject, string htmlMessage)
{
_logger.LogWarning("EmailSender implementation is being used!!!!");
_logger.LogWarning($"htmlMessage = { HttpUtility.HtmlDecode(htmlMessage)}");
_service.Send(email,subject,htmlMessage);
return Task.CompletedTask;
}
}
Expand Down
5 changes: 4 additions & 1 deletion src/Services/auth/O2NextGen.Auth.Web/appsettings.json
Original file line number Diff line number Diff line change
Expand Up @@ -24,5 +24,8 @@
"Microsoft.Hosting.Lifetime": "Information"
}
},
"AllowedHosts": "*"
"AllowedHosts": "*",
"urls": {
"ESenderUrl": "https://e-sender"
}
}

0 comments on commit 31218d4

Please sign in to comment.