Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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"
}
}