Configuration for Broker.
This commit is contained in:
@ -0,0 +1,13 @@
|
|||||||
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<TargetFramework>net9.0</TargetFramework>
|
||||||
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
|
<Nullable>disable</Nullable>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="..\..\subm\messengerapi\code\MessengerApi.Configuration\MessengerApi.Configuration.csproj" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
</Project>
|
||||||
@ -0,0 +1,51 @@
|
|||||||
|
using MessengerApi.Configuration.Model.Persistence.Base;
|
||||||
|
using MessengerApi.Configuration.Parsers;
|
||||||
|
using MessengerApi.Configuration.Sources.Environment;
|
||||||
|
using MessengerBroker.Configuration.Model.Servers;
|
||||||
|
using MessengerBroker.Configuration.Parsers;
|
||||||
|
using MessengerBroker.Configuration.Sources.Environment;
|
||||||
|
|
||||||
|
namespace MessengerBroker.Configuration.Model
|
||||||
|
{
|
||||||
|
public class BrokerConfiguration
|
||||||
|
{
|
||||||
|
public PersistenceConfiguration ApiPersistenceConfiguration { get; set; }
|
||||||
|
|
||||||
|
public PersistenceConfiguration BrokerPersistenceConfiguration { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// List of proxies that are trusted to provide forwarding headers.
|
||||||
|
/// </summary>
|
||||||
|
public string[] Proxies { get; set; }
|
||||||
|
|
||||||
|
public Guid BrokerId { get; set; }
|
||||||
|
|
||||||
|
public MasterServer[] MasterServers { get; set; }
|
||||||
|
|
||||||
|
public SlaveServer[] SlaveServers { get; set; }
|
||||||
|
|
||||||
|
public BrokerConfiguration(
|
||||||
|
PersistenceConfiguration apiPersistenceConfiguration,
|
||||||
|
PersistenceConfiguration broPersistenceConfiguration,
|
||||||
|
Guid brokerId,
|
||||||
|
MasterServer[] masters,
|
||||||
|
SlaveServer[] slaves)
|
||||||
|
{
|
||||||
|
this.ApiPersistenceConfiguration = apiPersistenceConfiguration;
|
||||||
|
this.BrokerPersistenceConfiguration = broPersistenceConfiguration;
|
||||||
|
this.BrokerId = brokerId;
|
||||||
|
this.MasterServers = masters;
|
||||||
|
this.SlaveServers = slaves;
|
||||||
|
this.Proxies = [];
|
||||||
|
}
|
||||||
|
|
||||||
|
public BrokerConfiguration(IEnvironmentConfigurationSource config):this(
|
||||||
|
ApiEnvironmentPersistenceConfigurationParser.Parse(config),
|
||||||
|
EnvironmentPersistenceConfigurationParser.Parse(config),
|
||||||
|
config.GetValue<Guid>(Constants.EnvironmentVariables.BROKER_ID),
|
||||||
|
MasterServerParser.Parse(config.GetValue<string>(Constants.EnvironmentVariables.MASTER_SERVERS)),
|
||||||
|
SlaveServerParser.Parse(config.GetValue<string>(Constants.EnvironmentVariables.SLAVE_SERVERS)))
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,9 @@
|
|||||||
|
namespace MessengerBroker.Configuration.Model.Servers.Base
|
||||||
|
{
|
||||||
|
public class Server
|
||||||
|
{
|
||||||
|
public Guid BrokerId { get; set; }
|
||||||
|
|
||||||
|
public string Name { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,15 @@
|
|||||||
|
using MessengerBroker.Configuration.Model.Servers.Base;
|
||||||
|
|
||||||
|
namespace MessengerBroker.Configuration.Model.Servers
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Server that we have to pull data from and provide alternate service for.
|
||||||
|
/// </summary>
|
||||||
|
public class MasterServer : Server
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Url of the Broker API we use to download the data.
|
||||||
|
/// </summary>
|
||||||
|
public string BrokerUrl { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,11 @@
|
|||||||
|
using MessengerBroker.Configuration.Model.Servers.Base;
|
||||||
|
|
||||||
|
namespace MessengerBroker.Configuration.Model.Servers
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Server that is pulling data from us and has to provide alternate service for us.
|
||||||
|
/// </summary>
|
||||||
|
public class SlaveServer : Server
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,27 @@
|
|||||||
|
using MessengerApi.Configuration.Model.Persistence;
|
||||||
|
using MessengerApi.Configuration.Model.Persistence.Base;
|
||||||
|
using MessengerApi.Configuration.Parsers;
|
||||||
|
using MessengerApi.Configuration.Sources.Environment;
|
||||||
|
using MessengerBroker.Configuration.Sources.Environment;
|
||||||
|
|
||||||
|
namespace MessengerBroker.Configuration.Parsers
|
||||||
|
{
|
||||||
|
public class ApiEnvironmentPersistenceConfigurationParser
|
||||||
|
{
|
||||||
|
public static PersistenceConfiguration Parse(IEnvironmentConfigurationSource config)
|
||||||
|
{
|
||||||
|
var type = PersistenceTypeParser.Parse(config.GetValue<string>(Constants.EnvironmentVariables.API_PERSISTENCE_TYPE));
|
||||||
|
|
||||||
|
if (type == MessengerApi.Configuration.Enums.PersistenceTypes.Sql)
|
||||||
|
{
|
||||||
|
return new SqlPersistenceConfiguration(config);
|
||||||
|
}
|
||||||
|
else if (type == MessengerApi.Configuration.Enums.PersistenceTypes.PostgreSql)
|
||||||
|
{
|
||||||
|
return new NpgPersistenceConfiguration(config);
|
||||||
|
}
|
||||||
|
|
||||||
|
throw new InvalidOperationException("Unrecognized persistence type.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,27 @@
|
|||||||
|
using MessengerBroker.Configuration.Model.Servers;
|
||||||
|
|
||||||
|
namespace MessengerBroker.Configuration.Parsers
|
||||||
|
{
|
||||||
|
public class MasterServerParser
|
||||||
|
{
|
||||||
|
public static MasterServer[] Parse(string value)
|
||||||
|
{
|
||||||
|
var servers = new List<MasterServer>();
|
||||||
|
var values = value.Split(';', StringSplitOptions.RemoveEmptyEntries | StringSplitOptions.TrimEntries);
|
||||||
|
|
||||||
|
foreach(var v in values)
|
||||||
|
{
|
||||||
|
var props = v.Split(',', StringSplitOptions.RemoveEmptyEntries | StringSplitOptions.TrimEntries);
|
||||||
|
|
||||||
|
servers.Add(new MasterServer
|
||||||
|
{
|
||||||
|
BrokerId = Guid.Parse(props[0]),
|
||||||
|
BrokerUrl = props[1],
|
||||||
|
Name = props[2]
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
return servers.ToArray();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,26 @@
|
|||||||
|
using MessengerBroker.Configuration.Model.Servers;
|
||||||
|
|
||||||
|
namespace MessengerBroker.Configuration.Parsers
|
||||||
|
{
|
||||||
|
public static class SlaveServerParser
|
||||||
|
{
|
||||||
|
public static SlaveServer[] Parse(string value)
|
||||||
|
{
|
||||||
|
var servers = new List<SlaveServer>();
|
||||||
|
var values = value.Split(';', StringSplitOptions.RemoveEmptyEntries | StringSplitOptions.TrimEntries);
|
||||||
|
|
||||||
|
foreach (var v in values)
|
||||||
|
{
|
||||||
|
var props = v.Split(',', StringSplitOptions.RemoveEmptyEntries | StringSplitOptions.TrimEntries);
|
||||||
|
|
||||||
|
servers.Add(new SlaveServer
|
||||||
|
{
|
||||||
|
BrokerId = Guid.Parse(props[0]),
|
||||||
|
Name = props[1]
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
return servers.ToArray();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,16 @@
|
|||||||
|
|
||||||
|
namespace MessengerBroker.Configuration.Sources.Environment
|
||||||
|
{
|
||||||
|
public class Constants
|
||||||
|
{
|
||||||
|
public static class EnvironmentVariables
|
||||||
|
{
|
||||||
|
public const string API_PERSISTENCE_TYPE = nameof(API_PERSISTENCE_TYPE);
|
||||||
|
public const string API_SQL_CONNECTIONSTRING = nameof(API_SQL_CONNECTIONSTRING);
|
||||||
|
public const string API_NPG_CONNECTIONSTRING = nameof(API_NPG_CONNECTIONSTRING);
|
||||||
|
public const string BROKER_ID = nameof(BROKER_ID);
|
||||||
|
public const string MASTER_SERVERS = nameof(MASTER_SERVERS);
|
||||||
|
public const string SLAVE_SERVERS = nameof(SLAVE_SERVERS);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user