Browse Source

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

pull/1240/head
espent1004 5 years ago
parent
commit
341023decd
4 changed files with 17 additions and 19 deletions
  1. +11
    -14
      src/BuildingBlocks/EventBus/EventBusRabbitMQ/EventBusRabbitMQ.cs
  2. +3
    -3
      src/Services/TenantManager/TenantManager/Controllers/CustomisationsController.cs
  3. +2
    -2
      src/Services/TenantManager/TenantManager/Database/DbInitializer.cs
  4. +1
    -0
      src/Services/TenantManager/TenantManager/Models/Customisation.cs

+ 11
- 14
src/BuildingBlocks/EventBus/EventBusRabbitMQ/EventBusRabbitMQ.cs View File

@ -274,7 +274,7 @@ namespace Microsoft.eShopOnContainers.BuildingBlocks.EventBusRabbitMQ
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();
temp.Content = content;
@ -285,9 +285,8 @@ namespace Microsoft.eShopOnContainers.BuildingBlocks.EventBusRabbitMQ
{
try
{
//TODO replace URL with response from tenantmanager
var response = await client.PostAsync(
tenantACustomisationUrl + "api/SavedEvents",
url,
new StringContent(myJson, Encoding.UTF8, "application/json"));
response.EnsureSuccessStatusCode();
_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.EventName = eventName;
customisationInfo.TenantId = tenantId;
Boolean isCustomised = false;
String customisationUrl = null;
var builder = new UriBuilder(tenantManagerUrl + "api/Customisations/IsCustomised");
builder.Port = -1;
@ -322,8 +321,7 @@ namespace Microsoft.eShopOnContainers.BuildingBlocks.EventBusRabbitMQ
var response = await client.GetAsync(
url);
response.EnsureSuccessStatusCode();
isCustomised =
JsonConvert.DeserializeObject<Boolean>(response.Content.ReadAsStringAsync().Result);
customisationUrl = response.Content.ReadAsStringAsync().Result;
}
catch (Exception e)
{
@ -331,7 +329,7 @@ namespace Microsoft.eShopOnContainers.BuildingBlocks.EventBusRabbitMQ
}
}
return isCustomised;
return customisationUrl;
}
private async Task ProcessEvent(string eventName, string message)
@ -364,14 +362,13 @@ namespace Microsoft.eShopOnContainers.BuildingBlocks.EventBusRabbitMQ
var eventType = _subsManager.GetEventTypeByName(eventName);
var integrationEvent = JsonConvert.DeserializeObject(message, eventType);
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
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);
break;
}
SendEventToTenant(message, evt.Id.ToString(), eventName,
customisationUrl);
break;
}
var concreteType = typeof(IIntegrationEventHandler<>).MakeGenericType(eventType);


+ 3
- 3
src/Services/TenantManager/TenantManager/Controllers/CustomisationsController.cs View File

@ -44,16 +44,16 @@ namespace TenantManager.Controllers
// GET: api/Customisations/5
[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();
if (customisation == null)
{
return false;
return NotFound();
}
return true;
return customisation.CustomisationUrl;
}
// PUT: api/Customisations/5


+ 2
- 2
src/Services/TenantManager/TenantManager/Database/DbInitializer.cs View File

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


+ 1
- 0
src/Services/TenantManager/TenantManager/Models/Customisation.cs View File

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


Loading…
Cancel
Save