Beispiel #1
0
        public string GetUriRequest(Common.Utils.IContactRequest typeRequest, IRequestSettings <T> config, Common.Partners.IContact.IContactRequest requestFrmOuter)
        {
            requestFrm = requestFrmOuter;
            string uri = CreatetUriRequest(config.mailingProvider, typeRequest);

            return(uri);
        }
Beispiel #2
0
        /// <summary>
        /// Specific settings to be used for the request.  These settings are merged
        /// into the default setting of the IRequestClient instance.
        /// </summary>
        /// <param name="settings">The request specific settings.</param>
        /// <returns>The API request instance updated with the request specific settings.</returns>
        public ApiRequest UsingSettings(IRequestSettings settings)
        {
            Settings = settings ?? throw new ArgumentNullException(nameof(settings),
                                                                   "Settings cannot be null.");

            return(this);
        }
Beispiel #3
0
        public string GetUriRequest(IContactRequest typeRequest, IRequestSettings <T> config, IContactRequest requestFrmOuter)
        {
            requestFrm = requestFrmOuter;
            string uri = CreatetUriRequest(config.mailingProvider, typeRequest);

            return(uri);
        }
Beispiel #4
0
        private void IContactConfigureRequestJson(HttpWebRequest request, IRequestSettings <T> config)
        {
            // Get data from config.headers dictionary
            string Username   = config.headers["Username"];
            string Password   = config.headers["Password"];
            string ApiVersion = config.headers["API-Version"];
            string AppId      = config.headers["API-AppId"];
            string Data       = config.data;


            // config request with IRequestSettings
            request.KeepAlive = false;
            request.Method    = config.method;
            request.Accept    = config.accept;
            request.Headers.Add("API-Version", ApiVersion);
            request.Headers.Add("API-AppId", AppId);
            request.Headers.Add("API-Username", Username);
            request.Headers.Add("API-Password", Password);
            request.Headers.Add("Authorization", string.Format("{0} {1}", Username, Password));
            request.ContentType = config.contentType;
            request.Credentials = new NetworkCredential(Username, Password);

            // config body of request
            if (Data != null)
            {
                byte[] DataBytes = Encoding.ASCII.GetBytes(Data);
                request.ContentLength = DataBytes.Length;

                using (var stream = request.GetRequestStream())
                {
                    stream.Write(DataBytes, 0, DataBytes.Length);
                }
            }
        }
Beispiel #5
0
 private void ValidateRequestSettings(IRequestSettings <T> config, IContactRequest typeRequest)
 {
     TypeSwitch.Do(
         config.mailingProvider,
         TypeSwitch.Case <IIContactRequest>(() => { IContactValidateRequestSettings(config, typeRequest); }),
         TypeSwitch.Default(() => { }));
 }
Beispiel #6
0
        public HttpClient GetHttpClient(IRequestSettings <T> config, IContactRequest typeRequest)
        {
            HttpClient client = new HttpClient();

            string username    = requestFrm.ApiUserName == string.Empty ? throw new ArgumentException("[Username] not found in settings, this key es required.") : requestFrm.ApiUserName;
            string password    = requestFrm.ApiUserPassword == string.Empty ? throw new ArgumentException("[Password] not found in settings, this key es required.") : requestFrm.ApiUserPassword;
            string apiversion  = requestFrm.ApiVersion == string.Empty ? throw new ArgumentException("[API-Version] not found in settings, this key es required.") : requestFrm.ApiVersion;
            string appid       = requestFrm.ApiAppId == string.Empty ? throw new ArgumentException("[API-AppId] not found in settings, this key es required.") : requestFrm.ApiAppId;
            string accept      = config.accept == string.Empty ? throw new ArgumentException("[Accept] not found in settings, this key es required.") : config.accept;
            string contenttype = config.contentType == string.Empty ? throw new ArgumentException("[contentType] not found in settings, this key es required.") : config.contentType;

            AuthenticationHeaderValue authorization = new AuthenticationHeaderValue(
                "Basic",
                Convert.ToBase64String(
                    System.Text.ASCIIEncoding.ASCII.GetBytes(
                        string.Format("{0}:{1}", username, password))));

            //Todo
            client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue(contenttype));
            client.DefaultRequestHeaders.Add("Username", username);
            client.DefaultRequestHeaders.Add("Password", password);
            client.DefaultRequestHeaders.Add("API-Version", apiversion);
            client.DefaultRequestHeaders.Add("API-AppId", appid);
            client.DefaultRequestHeaders.Add("Accept", accept);
            client.DefaultRequestHeaders.Add("API-Username", username);
            client.DefaultRequestHeaders.Add("API-Password", password);
            client.DefaultRequestHeaders.Authorization = authorization;



            return(client);
        }
Beispiel #7
0
        public HttpWebRequest GetWebRequest(IContactRequest typeRequest, IRequestSettings <T> config, IContactRequest requestFrmOuter)
        {
            requestFrm = requestFrmOuter;
            ValidateRequestSettings(config, typeRequest);
            string         uri     = CreatetUriRequest(config.mailingProvider, typeRequest);
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri);

            ConfigureRequest(request, config);
            return(request);
        }
Beispiel #8
0
 private void ConfigureRequest(HttpWebRequest request, IRequestSettings <T> config)
 {
     TypeSwitch.Do(
         config.mailingProvider,
         TypeSwitch.Case <IIContactRequest>(() => {
         //IContactConfigureRequest(request, config);
         IContactConfigureRequestJson(request, config);
     }),
         TypeSwitch.Default(() => { }));
 }
Beispiel #9
0
 public ErrorStatusContext(
     IRequestClient client,
     HttpResponseMessage response,
     IRequestSettings defaultSettings,
     IRequestSettings requestSettings)
 {
     Client          = client ?? throw new ArgumentNullException(nameof(client));
     Response        = response ?? throw new ArgumentNullException(nameof(response));
     DefaultSettings = defaultSettings ?? throw new ArgumentNullException(nameof(defaultSettings));
     Settings        = requestSettings ?? throw new ArgumentNullException(nameof(requestSettings));
 }
Beispiel #10
0
        private void RegisterClientsWithFactory(ClientFactorySettings factorySettings)
        {
            RequestClientFactory.Instance.RegisterMediaTypeSerializer <JsonMediaTypeSerializer>();
            RequestClientFactory.Instance.RegisterMediaTypeSerializer <JsonMediaTypeSerializer>(InternetMediaTypes.HalJson);

            // Register each defined client within the configuration settings with the RequestClientFactory.
            foreach (ClientSettings clientSettings in factorySettings.Clients)
            {
                IRequestSettings requestSettings = BuildRequestSettings(clientSettings);
                RequestClientFactory.Instance.RegisterBaseAddress(clientSettings.BaseAddress, requestSettings);
            }
        }
        public IRequestSettings GetMerged(IRequestSettings requestSettings)
        {
            if (requestSettings == null)
            {
                return(this);
            }

            return(new RequestSettings()
            {
                Headers = Headers.GetMergedHeaders(requestSettings.Headers),
                QueryString = QueryString.GetMerged(requestSettings.QueryString)
            });
        }
        public static RequestSettings Create(IRequestSettings contractObject)
        {
            if (null == contractObject)
            {
                return(null);
            }

            if (contractObject is RequestSettings businessObject)
            {
                return(businessObject);
            }

            return(Mapper.Map <RequestSettings>(contractObject));
        }
        /// <summary>
        /// Called at the beginning of the consuming application to register base
        /// API addresses for which IResourceClient instances should be created.
        /// </summary>
        /// <param name="baseAddress">The base address to associated with the client.</param>
        /// <param name="settings">The default settings applied when making a request.</param>
        public void RegisterBaseAddress(string baseAddress, IRequestSettings requestSettings)
        {
            if (String.IsNullOrWhiteSpace(baseAddress))
            {
                throw new ArgumentException("Client base address not specified.", nameof(baseAddress));
            }

            if (_baseAddressRegistrations.ContainsKey(baseAddress))
            {
                throw new InvalidOperationException(
                          $"The base address: {baseAddress} is already registered.");
            }

            _baseAddressRegistrations[baseAddress] = requestSettings ??
                                                     throw new ArgumentNullException(nameof(requestSettings), "Default client settings not specified.");
        }
        public IServiceResponse Get(IServiceRequest request, IRequestSettings restSettings)
        {
            if (Auth != null)
                client.Authenticator = Auth;

            var restRequest = new RestRequest(request.Uri, Method.GET);
            var response = client.Execute(restRequest);

            return new ServiceResponse
            {
                Data = response.Content,
                StatusCode = response.StatusCode,
                ErrorException = response.ErrorException,
                ErrorMessage = response.ErrorMessage
            };
        }
Beispiel #15
0
        private void IContactValidateRequestSettings(IRequestSettings <T> config, IContactRequest typeRequest)
        {
            //Tem var
            string username    = requestFrm.ApiUserName == string.Empty ? throw new ArgumentException("[Username] not found in settings, this key es required.") : requestFrm.ApiUserName;
            string password    = requestFrm.ApiUserPassword == string.Empty ? throw new ArgumentException("[Password] not found in settings, this key es required.") : requestFrm.ApiUserPassword;
            string apiversion  = requestFrm.ApiVersion == string.Empty ? throw new ArgumentException("[API-Version] not found in settings, this key es required.") : requestFrm.ApiVersion;
            string appid       = requestFrm.ApiAppId == string.Empty ? throw new ArgumentException("[API-AppId] not found in settings, this key es required.") : requestFrm.ApiAppId;
            string accept      = config.accept == string.Empty ? throw new ArgumentException("[Accept] not found in settings, this key es required.") : config.accept;
            string contenttype = config.contentType == string.Empty ? throw new ArgumentException("[contentType] not found in settings, this key es required.") : config.contentType;

            //Add to header
            config.headers.Add("Username", username);
            config.headers.Add("Password", password);
            config.headers.Add("API-Version", apiversion);
            config.headers.Add("API-AppId", appid);
            config.headers.Add("Accept", accept);
            config.headers.Add("contentType", contenttype);



            if (
                typeRequest == IContactRequest.AddMessage ||
                typeRequest == IContactRequest.AddSends)
            {
                if (config.data == string.Empty)
                {
                    throw new ArgumentException("[Data] not found in settings, this key es required.");
                }

                config.method = "POST";
            }
            else if (typeRequest == IContactRequest.AddCampaign)
            {
                config.method = "POST";
            }
            else
            {
                config.method = "GET";
            }

            // Config
            string method = config.method == string.Empty ? throw new ArgumentException("[Method] not found in settings, this key es required.") : config.method;

            config.authorization = string.Format("{0} {1}", username, password);
            config.headers.Add("Method", method);
        }
Beispiel #16
0
        /// <summary>
        /// Applies the settings commonly used when submitting and consuming
        /// REST/HAL based requests.
        /// </summary>
        /// <returns>Reference to the settings being configured.<returns>
        /// <param name="requestSettings">The request settings to configure.</param>
        public static IRequestSettings UseHalDefaults(this IRequestSettings requestSettings)
        {
            if (requestSettings == null)
            {
                throw new ArgumentNullException(nameof(requestSettings), "Request Settings must be specified.");
            }

            requestSettings.Headers.AcceptMediaType(InternetMediaTypes.HalJson);
            requestSettings.Headers.AcceptMediaType(InternetMediaTypes.Json);

            // If the settings content-type is not specified assume JSON serialized
            // content will be submitted to the server.
            if (requestSettings.Headers.ContentType == null)
            {
                requestSettings.Headers.ContentMediaType(InternetMediaTypes.Json);
            }
            return(requestSettings);
        }
        public IServiceResponse Get(IServiceRequest request, IRequestSettings restSettings)
        {
            if (Auth != null)
            {
                client.Authenticator = Auth;
            }

            var restRequest = new RestRequest(request.Uri, Method.GET);
            var response    = client.Execute(restRequest);


            return(new ServiceResponse
            {
                Data = response.Content,
                StatusCode = response.StatusCode,
                ErrorException = response.ErrorException,
                ErrorMessage = response.ErrorMessage
            });
        }
Beispiel #18
0
        public IRequestSettings GetMerged(IRequestSettings requestSettings)
        {
            if (requestSettings != null)
            {
                return(new RequestSettings
                {
                    Headers = Headers.GetMergedHeaders(requestSettings.Headers),
                    QueryString = QueryString.GetMerged(requestSettings.QueryString),
                    SuppressStatusCodeHandlers = requestSettings.SuppressStatusCodeHandlers ?? SuppressStatusCodeHandlers ?? false
                });
            }

            return(new RequestSettings
            {
                Headers = Headers,
                QueryString = QueryString,
                SuppressStatusCodeHandlers = SuppressStatusCodeHandlers ?? false
            });
        }
Beispiel #19
0
        /// <summary>
        /// Initializes an instance of the client with its associated HttpClient delegated to
        /// for making network requests.
        /// </summary>
        /// <param name="httpClient">Reference to a HttpClient instance.</param>
        /// <param name="logger">The logger to use for log messages.</param>
        /// <param name="contentSerializers">Dictionary of serializers keyed by media-type.</param>
        /// <param name="requestSettings">The default request settings to be used for each request.</param>
        public RequestClient(HttpClient httpClient,
                             ILogger logger,
                             IDictionary <string, IMediaTypeSerializer> contentSerializers,
                             IRequestSettings requestSettings)
        {
            _httpClient = httpClient ?? throw new ArgumentNullException(nameof(httpClient),
                                                                        "HTTP Client cannot be null.");

            _logger = logger ?? throw new ArgumentNullException(nameof(httpClient),
                                                                "Logger cannot be null.");

            _defaultRequestSettings = requestSettings ?? throw new ArgumentNullException(nameof(requestSettings),
                                                                                         "Default Request Settings cannot be null.");

            if (contentSerializers == null)
            {
                throw new ArgumentNullException(nameof(contentSerializers), "HTTP Context Serializers cannot be null.");
            }

            _mediaTypeSerializers = new ConcurrentDictionary <string, IMediaTypeSerializer>(contentSerializers);
        }
Beispiel #20
0
        public static IRequestClient CreateTestClient(this IRequestSettings requestSettings,
                                                      MockAppHostPlugin hostPlugin,
                                                      IMockedService mockService = null)
        {
            requestSettings.UseHalDefaults();

            var serializers = new Dictionary <string, IMediaTypeSerializer>
            {
                { InternetMediaTypes.Json, new JsonMediaTypeSerializer() },
                { InternetMediaTypes.HalJson, new JsonMediaTypeSerializer() }
            };

            var builder = new WebHostBuilder()
                          .ConfigureServices(services =>
            {
                // Add the needed ResourcePlugin modules since this is
                // what the unit tests will be testing.
                hostPlugin.UseResourcePlugin();

                // Creates the typical StartUp class used by ASP.NET Core.
                var startup = new TestStartup(hostPlugin);
                services.AddSingleton <IStartup>(startup);

                // This service will be injected by the WebApi controller and
                // can be used to very the system under test.
                services.AddSingleton <IMockedService>(mockService ?? new NullUnitTestService());
            });

            // Create an instance of the server and create an HTTP Client
            // to communicate with in-memory web-host.
            var server     = new TestServer(builder);
            var httpClient = server.CreateClient();

            // Return an instance of the ResourceClient to be tested.
            return(new RequestClient(httpClient, serializers, requestSettings));
        }
Beispiel #21
0
        public HttpWebRequest GetRequest(KindAds.Common.Utils.IContactRequest type, IRequestSettings <IIContactRequest> config, IContactRequest requestFrm)
        {
            HttpWebRequest request = requestManager.GetWebRequest(type, config, requestFrm);

            return(request);
        }
 /// <summary>
 /// Specifies the default settings that should be used for each request.  Any request specific settings,
 /// if specified, will be merged into the default settings.  If not specified, the default settings are
 /// initialized for the most common usage.
 /// </summary>
 /// <param name="requestSettings">Request setting to use for each request.</param>
 /// <returns>Builder for method chaining.</returns>
 public RequestClientBuilder UsingDefaultSettings(IRequestSettings requestSettings)
 {
     _defaultRequestSettings = requestSettings ??
                               throw new ArgumentNullException(nameof(requestSettings));
     return(this);
 }
 public void Post(IServiceRequest request, IRequestSettings restSettings)
 {
     throw new NotImplementedException();
 }
 public DistrictCollectionDataResolver(IRequestSettings requestSettings)
 {
     _requestSettings = requestSettings;
 }
 public void Post(IServiceRequest request, IRequestSettings restSettings)
 {
     throw new NotImplementedException();
 }