/// <summary> /// Add support for payments with Sovrin Token /// </summary> /// <param name="agentFrameworkBuilder"></param> /// <returns></returns> public static AriesFrameworkBuilder AddSovrinToken(this AriesFrameworkBuilder agentFrameworkBuilder) { agentFrameworkBuilder.Services.AddHostedService <SovrinTokenConfigurationService>(); agentFrameworkBuilder.Services.AddSingleton <IPaymentService, SovrinPaymentService>(); agentFrameworkBuilder.Services.AddSingleton <IAgentMiddleware, PaymentsAgentMiddleware>(); return(agentFrameworkBuilder); }
/// <summary> /// Registers and provisions an agent. /// </summary> /// <param name="builder"></param> /// <param name="options"></param> /// <param name="delayProvisioning"></param> /// <returns></returns> public static AriesFrameworkBuilder RegisterEdgeAgent ( this AriesFrameworkBuilder builder, Action <AgentOptions> options, bool delayProvisioning = false) => RegisterEdgeAgent <DefaultAgent>(builder, options, delayProvisioning );
/// <summary> /// Registers and provisions an agent with custom implementation /// </summary> /// <param name="builder"></param> /// <param name="options"></param> /// <returns></returns> public static AriesFrameworkBuilder RegisterMediatorAgent <T>( this AriesFrameworkBuilder builder, Action <AgentOptions> options) where T : class, IAgent { builder.AddAgentProvider(); builder.Services.AddDefaultMessageHandlers(); builder.Services.AddMessageHandler <MediatorForwardHandler>(); builder.Services.AddMessageHandler <RoutingInboxHandler>(); builder.Services.AddMessageHandler <DefaultStoreBackupHandler>(); builder.Services.AddMessageHandler <RetrieveBackupHandler>(); builder.Services.AddSingleton <IRoutingStore, DefaultRoutingStore>(); builder.Services.AddSingleton <IStorageService, DefaultStorageService>(); builder.Services.AddSingleton <IAgent, T>(); builder.Services.Configure(options); builder.Services.AddHostedService <MediatorProvisioningService>(); builder.Services.AddSingleton <MediatorDiscoveryMiddleware>(); if (Environment.GetEnvironmentVariable("Agent_GenesisFilename") != null) { builder.Services.AddHostedService <PoolConfigurationService>(); } return(builder); }
/// <summary> /// Registers the agent framework required services and invokes an agent builder /// </summary> /// <param name="services">Services.</param> /// <param name="builder">Builder.</param> public static AriesFrameworkBuilder AddAriesFramework(this IServiceCollection services, Action <AriesFrameworkBuilder> builder) { AddAriesFramework(services); var frameworkBuilder = new AriesFrameworkBuilder(services); builder.Invoke(frameworkBuilder); return(frameworkBuilder); }
/// <summary> /// Registers and provisions an agent with custom implementation /// </summary> /// <param name="builder"></param> /// <param name="options"></param> /// <returns></returns> public static AriesFrameworkBuilder RegisterAgent <T>( this AriesFrameworkBuilder builder, Action <AgentOptions> options) where T : class, IAgent { builder.AddAgentProvider(); builder.Services.AddDefaultMessageHandlers(); builder.Services.AddSingleton <IAgent, T>(); builder.Services.Configure(options); builder.Services.AddHostedService <DefaultProvisioningHostedService>(); builder.Services.AddHostedService <PoolConfigurationService>(); return(builder); }
/// <summary> /// Registers and provisions an agent with custom implementation /// </summary> /// <param name="builder"></param> /// <param name="options"></param> /// <returns></returns> public static AriesFrameworkBuilder RegisterMediatorAgent <T>( this AriesFrameworkBuilder builder, Action <AgentOptions> options) where T : class, IAgent { builder.AddAgentProvider(); builder.Services.AddDefaultMessageHandlers(); builder.Services.AddMessageHandler <MediatorForwardHandler>(); builder.Services.AddMessageHandler <RoutingInboxHandler>(); builder.Services.AddSingleton <IRoutingStore, DefaultRoutingStore>(); builder.Services.AddSingleton <IAgent, T>(); builder.Services.Configure(options); builder.Services.AddHostedService <MediatorProvisioningService>(); builder.Services.AddSingleton <MediatorDiscoveryMiddleware>(); return(builder); }
/// <summary> /// Registers and provisions an agent with custom implementation /// </summary> /// <param name="builder"></param> /// <param name="options"></param> /// <returns></returns> public static AriesFrameworkBuilder RegisterEdgeAgent <T>( this AriesFrameworkBuilder builder, Action <AgentOptions> options, bool delayProvisioning = false) where T : class, IAgent { builder.AddAgentProvider(); builder.Services.AddDefaultMessageHandlers(); builder.Services.AddSingleton <IAgent, T>(); builder.Services.Configure(options); builder.Services.AddSingleton <IEdgeClientService, EdgeClientService>(); builder.Services.AddSingleton <IEdgeProvisioningService, EdgeProvisioningService>(); builder.Services.AddExtendedConnectionService <EdgeConnectionService>(); if (!delayProvisioning) { builder.Services.AddHostedService <EdgeProvisioningService>(); } return(builder); }
/// <summary> /// Registers and provisions an agent. /// </summary> /// <param name="builder"></param> /// <param name="options"></param> /// <returns></returns> public static AriesFrameworkBuilder RegisterMediatorAgent( this AriesFrameworkBuilder builder, Action <AgentOptions> options) => RegisterMediatorAgent <DefaultMediatorAgent>(builder, options);
/// <summary> /// Adds agent provider services /// </summary> /// <param name="builder"></param> /// <returns></returns> public static AriesFrameworkBuilder AddAgentProvider(this AriesFrameworkBuilder builder) { builder.Services.AddSingleton <IAgentProvider, DefaultAgentProvider>(); return(builder); }
/// <summary> /// Accepts the latest transaction author agreement on service startup /// and stores the configuration in the <see cref="ProvisioningRecord" />. /// </summary> /// <param name="builder"></param> /// <returns></returns> public static AriesFrameworkBuilder AcceptTxnAuthorAgreement(this AriesFrameworkBuilder builder) { builder.Services.AddHostedService <TxnAuthorAcceptanceService>(); return(builder); }
/// <summary> /// Confgures the default payment address by adding support for determinstic address generation /// </summary> /// <param name="builder"></param> /// <param name="options"></param> /// <returns></returns> public static AriesFrameworkBuilder ConfigurePaymentAddress(this AriesFrameworkBuilder builder, Action <AddressOptions> options) { builder.Services.Configure <AddressOptions>(options); return(builder); }