Adding the customisationUrl to the tenantManager rather than hardcoding into the eventBus implementation.

This commit is contained in:
espent1004 2020-02-02 19:59:00 +01:00
parent 4f2bb08d25
commit 341023decd
4 changed files with 17 additions and 19 deletions

View File

@ -274,7 +274,7 @@ namespace Microsoft.eShopOnContainers.BuildingBlocks.EventBusRabbitMQ
return channel; return channel;
} }
private async void SendEventToTenant(String content, String id, String eventName) private async void SendEventToTenant(String content, String id, String eventName, String url)
{ {
var temp = new SavedEvent(); var temp = new SavedEvent();
temp.Content = content; temp.Content = content;
@ -285,9 +285,8 @@ namespace Microsoft.eShopOnContainers.BuildingBlocks.EventBusRabbitMQ
{ {
try try
{ {
//TODO replace URL with response from tenantmanager
var response = await client.PostAsync( var response = await client.PostAsync(
tenantACustomisationUrl + "api/SavedEvents", url,
new StringContent(myJson, Encoding.UTF8, "application/json")); new StringContent(myJson, Encoding.UTF8, "application/json"));
response.EnsureSuccessStatusCode(); response.EnsureSuccessStatusCode();
_logger.LogInformation("----- Event sent to tenant{@id} -----", id); _logger.LogInformation("----- Event sent to tenant{@id} -----", id);
@ -300,12 +299,12 @@ namespace Microsoft.eShopOnContainers.BuildingBlocks.EventBusRabbitMQ
} }
} }
private async Task<Boolean> IsEventCustomised(String eventName, int tenantId) private async Task<String> GetCustomisation(String eventName, int tenantId)
{ {
CustomisationInfo customisationInfo = new CustomisationInfo(); CustomisationInfo customisationInfo = new CustomisationInfo();
customisationInfo.EventName = eventName; customisationInfo.EventName = eventName;
customisationInfo.TenantId = tenantId; customisationInfo.TenantId = tenantId;
Boolean isCustomised = false; String customisationUrl = null;
var builder = new UriBuilder(tenantManagerUrl + "api/Customisations/IsCustomised"); var builder = new UriBuilder(tenantManagerUrl + "api/Customisations/IsCustomised");
builder.Port = -1; builder.Port = -1;
@ -322,8 +321,7 @@ namespace Microsoft.eShopOnContainers.BuildingBlocks.EventBusRabbitMQ
var response = await client.GetAsync( var response = await client.GetAsync(
url); url);
response.EnsureSuccessStatusCode(); response.EnsureSuccessStatusCode();
isCustomised = customisationUrl = response.Content.ReadAsStringAsync().Result;
JsonConvert.DeserializeObject<Boolean>(response.Content.ReadAsStringAsync().Result);
} }
catch (Exception e) catch (Exception e)
{ {
@ -331,7 +329,7 @@ namespace Microsoft.eShopOnContainers.BuildingBlocks.EventBusRabbitMQ
} }
} }
return isCustomised; return customisationUrl;
} }
private async Task ProcessEvent(string eventName, string message) private async Task ProcessEvent(string eventName, string message)
@ -364,14 +362,13 @@ namespace Microsoft.eShopOnContainers.BuildingBlocks.EventBusRabbitMQ
var eventType = _subsManager.GetEventTypeByName(eventName); var eventType = _subsManager.GetEventTypeByName(eventName);
var integrationEvent = JsonConvert.DeserializeObject(message, eventType); var integrationEvent = JsonConvert.DeserializeObject(message, eventType);
IntegrationEvent evt = (IntegrationEvent) integrationEvent; IntegrationEvent evt = (IntegrationEvent) integrationEvent;
if (IsEventCustomised(eventName, evt.TenantId).Result) //TODO fix tenantId part of request var customisationUrl = GetCustomisation(eventName, evt.TenantId).Result;
if (evt.CheckForCustomisation && !String.IsNullOrEmpty(customisationUrl))
{ {
//Checking if event should be sent to tenant, or handled normally //Checking if event should be sent to tenant, or handled normally
if (evt.CheckForCustomisation && evt.TenantId == 1)//TODO use tenantId to choose the correct endpoint to send the event to SendEventToTenant(message, evt.Id.ToString(), eventName,
{ customisationUrl);
SendEventToTenant(message, evt.Id.ToString(), eventName); break;
break;
}
} }
var concreteType = typeof(IIntegrationEventHandler<>).MakeGenericType(eventType); var concreteType = typeof(IIntegrationEventHandler<>).MakeGenericType(eventType);

View File

@ -44,16 +44,16 @@ namespace TenantManager.Controllers
// GET: api/Customisations/5 // GET: api/Customisations/5
[HttpGet("isCustomised")] [HttpGet("isCustomised")]
public async Task<ActionResult<Boolean>> IsCustomised(String eventName, int tenantId) public async Task<ActionResult<string>> IsCustomised(String eventName, int tenantId)
{ {
var customisation = await _context.Customisation.Include(c => c.Method).Include(c => c.Tenant).Where(c => c.Method.MethodName.Equals(eventName) && c.TenantId == tenantId).FirstOrDefaultAsync(); var customisation = await _context.Customisation.Include(c => c.Method).Include(c => c.Tenant).Where(c => c.Method.MethodName.Equals(eventName) && c.TenantId == tenantId).FirstOrDefaultAsync();
if (customisation == null) if (customisation == null)
{ {
return false; return NotFound();
} }
return true; return customisation.CustomisationUrl;
} }
// PUT: api/Customisations/5 // PUT: api/Customisations/5

View File

@ -33,8 +33,8 @@ namespace TenantManager.Database
var customisations = new[] var customisations = new[]
{ {
new Customisation {Tenant=tenant1, Method=method1 }, new Customisation {Tenant=tenant1, Method=method1, CustomisationUrl = @"http://tenantacustomisation/api/savedevents"},
new Customisation {Tenant=tenant1, Method=method2} new Customisation {Tenant=tenant1, Method=method2, CustomisationUrl = @"http://tenantacustomisation/api/savedevents"}
}; };
foreach(Customisation c in customisations) foreach(Customisation c in customisations)

View File

@ -9,6 +9,7 @@ namespace TenantManager.Models
public class Customisation public class Customisation
{ {
public int CustomisationId { get; set; } public int CustomisationId { get; set; }
public String CustomisationUrl { get; set; }
//Foreign keys //Foreign keys
public int TenantId { get; set; } public int TenantId { get; set; }