/// <summary>
        /// Registers <see cref="ISyntheticFiatFeedClient"/> in Autofac container using <see cref="SyntheticFiatFeedServiceClientSettings"/>.
        /// </summary>
        /// <param name="builder">Autofac container builder.</param>
        /// <param name="settings">SyntheticFiatFeed client settings.</param>
        /// <param name="builderConfigure">Optional <see cref="HttpClientGeneratorBuilder"/> configure handler.</param>
        public static void RegisterSyntheticFiatFeedClient(
            [NotNull] this ContainerBuilder builder,
            [NotNull] SyntheticFiatFeedServiceClientSettings settings,
            [CanBeNull] Func <HttpClientGeneratorBuilder, HttpClientGeneratorBuilder> builderConfigure)
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }
            if (settings == null)
            {
                throw new ArgumentNullException(nameof(settings));
            }
            if (string.IsNullOrWhiteSpace(settings.ServiceUrl))
            {
                throw new ArgumentException("Value cannot be null or whitespace.", nameof(SyntheticFiatFeedServiceClientSettings.ServiceUrl));
            }

            var clientBuilder = HttpClientGenerator.HttpClientGenerator.BuildForUrl(settings.ServiceUrl)
                                .WithAdditionalCallsWrapper(new ExceptionHandlerCallsWrapper());

            clientBuilder = builderConfigure?.Invoke(clientBuilder) ?? clientBuilder.WithoutRetries();

            builder.RegisterInstance(new SyntheticFiatFeedClient(clientBuilder.Create()))
            .As <ISyntheticFiatFeedClient>()
            .SingleInstance();
        }
Ejemplo n.º 2
0
 public static void RegisterSyntheticFiatFeedClient(this ContainerBuilder builder, SyntheticFiatFeedServiceClientSettings settings)
 {
     builder.RegisterSyntheticFiatFeedClient(settings?.ServiceUrl);
 }