Example #1
0
 /// <summary>
 /// Sets the User Agent request header if supplied and not already configured.
 /// </summary>
 /// <param name="client">The <see cref="HttpClient"/> instance being used in the typed client.</param>
 /// <param name="settings">The optional <see cref="EmailRepClientSettings"/> instance.</param>
 public static void SetUserAgent(this HttpClient client, EmailRepClientSettings settings)
 {
     if (!client.IsUserAgentConfigured() && (settings != null && settings.UserAgentSpecified))
     {
         client.DefaultRequestHeaders.UserAgent.TryParseAdd(settings.UserAgent);
     }
 }
Example #2
0
 /// <summary>
 /// Sets the Api request header if supplied and not already configured.
 /// </summary>
 /// <param name="client">The <see cref="HttpClient"/> instance being used in the typed client.</param>
 /// <param name="settings">The optional <see cref="EmailRepClientSettings"/> instance.</param>
 public static void SetApiHeader(this HttpClient client, EmailRepClientSettings settings)
 {
     if (!client.IsApiHeaderConfigured() && (settings != null && settings.ApiKeySpecified))
     {
         client.DefaultRequestHeaders.Add(ApiKeyHeader, settings.ApiKey);
     }
 }
Example #3
0
 /// <summary>
 /// Sets the BaseAddress if supplied and not already configured.
 /// </summary>
 /// <param name="client">The <see cref="HttpClient"/> instance being used in the typed client.</param>
 /// <param name="settings">The optional <see cref="EmailRepClientSettings"/> instance.</param>
 public static void SetBaseAddress(this HttpClient client, EmailRepClientSettings settings)
 {
     if (!client.IsBaseAddressConfigured() && (settings != null && settings.BaseUrlSpecified))
     {
         client.BaseAddress = new Uri(settings.BaseUrl);
     }
 }
        /// <summary>
        /// Add email rep client and register associated settings through configuration for the client.
        /// </summary>
        /// <param name="services">The instance of <see cref="IServiceCollection"/> on which the services are to be registered with.</param>
        /// <param name="configuration">The configuration section which contains the email rep configuration section.</param>
        /// <param name="sectionName">The configuration section name to use. Default: "EmailRepNet".</param>
        /// <returns></returns>
        public static IServiceCollection AddEmailRep(this IServiceCollection services, IConfiguration configuration, string sectionName = "EmailRepNet")
        {
            var settings = new EmailRepClientSettings();

            configuration.GetSection(sectionName).Bind(settings);
            services.AddSingleton(settings);

            services.AddHttpClient <IEmailRepClient, EmailRepClient>();
            return(services);
        }
        public void Validate_HappyPath(EmailRepClientSettings settings, HttpClient client)
        {
            // Arrange
            client.SetUserAgent(settings);

            // Act
            Action result = () => client.Validate();

            // Assert
            result.Should().NotThrow <EmailRepConfigurationException>();
        }
        public void SetBaseAddress(EmailRepClientSettings settings, HttpClient sut)
        {
            // Arrange
            sut.BaseAddress = new Uri("https://localhost/");

            // Act
            sut.SetBaseAddress(settings);

            // Assert
            sut.BaseAddress.Host.Should().Be("localhost");
        }
        public void SetupApiHeader_NotSet_NoApiKeySpecified(HttpClient sut)
        {
            // Arrange
            var settings = new EmailRepClientSettings();

            // Act
            sut.SetApiHeader(settings);

            // Assert
            sut.DefaultRequestHeaders.TryGetValues("Key", out _).Should().BeFalse();
        }
        public void SetBaseAddress_NotSet(EmailRepClientSettings settings, HttpClient sut)
        {
            // Arrange
            sut.BaseAddress  = null;
            settings.BaseUrl = null;

            // Act
            sut.SetBaseAddress(settings);

            // Assert
            sut.BaseAddress.Should().BeNull();
        }
        public void SetBaseAddress_FromSettings(EmailRepClientSettings settings, HttpClient sut)
        {
            // Arrange
            sut.BaseAddress  = null;
            settings.BaseUrl = "https://example.com/";

            // Act
            sut.SetBaseAddress(settings);

            // Assert
            sut.BaseAddress.Host.Should().Be("example.com");
        }
        public void SetupApiHeader_SettingsValueWins(EmailRepClientSettings settings, HttpClient sut)
        {
            // Arrange

            // Act
            sut.SetApiHeader(settings);

            // Assert
            var values = sut.DefaultRequestHeaders.GetValues("Key");

            values.Count().Should().Be(1);
            values.FirstOrDefault().Should().Be(settings.ApiKey);
        }
        public void SetupApiHeader_HeaderValueWins(string headerValue, EmailRepClientSettings settings, HttpClient sut)
        {
            // Arrange
            sut.DefaultRequestHeaders.Add("Key", headerValue);

            // Act
            sut.SetApiHeader(settings);

            // Assert
            var values = sut.DefaultRequestHeaders.GetValues("Key");

            values.Count().Should().Be(1);
            values.FirstOrDefault().Should().Be(headerValue);
        }
        public void SetupUserAgent_HeaderValueWins(string headerValue, EmailRepClientSettings settings, HttpClient sut)
        {
            // Arrange
            sut.DefaultRequestHeaders.Add("User-Agent", headerValue);

            // Act
            sut.SetUserAgent(settings);

            // Assert
            var values = sut.DefaultRequestHeaders.UserAgent;

            values.Count().Should().Be(1);
            values.FirstOrDefault().Product.Name.Should().Be(headerValue);
        }
        public void SetupUserAgent_SettingsValueWins(EmailRepClientSettings settings, HttpClient sut)
        {
            // Arrange
            settings.UserAgent = "settings-useragent";
            sut.DefaultRequestHeaders.Remove("User-Agent");

            // Act
            sut.SetUserAgent(settings);

            // Assert
            var values = sut.DefaultRequestHeaders.UserAgent;

            values.Count().Should().Be(1);
            values.FirstOrDefault().Product.Name.Should().Be(settings.UserAgent);
        }