Exemplo n.º 1
0
 /// <summary>
 /// Safely constructs the parameter string to gaurd against null values.
 /// </summary>
 /// <param name="parameter">The parameter object to construct.</param>
 /// <returns>The formated parameter string.</returns>
 private string ConstructParameterString(IHttpRequestParameter parameter)
 {
     if (parameter == null)
     {
         return(string.Empty);
     }
     return(parameter.Format());
 }
Exemplo n.º 2
0
        /// <summary>
        /// Sends an HTTP request to the server and handles the response.
        /// </summary>
        /// <param name="verb">The HTTP verb to use for the request.</param>
        /// <param name="urlParameter">Any URL parameters to send.</param>
        /// <param name="bodyParameter">Any body parameters to send.</param>
        /// <returns>The HTTP Response information.</returns>
        /// <exception cref="System.NotImplementedException">Thrown when the HTTP verb given has not been
        /// implemented yet.</exception>
        /// <exception cref="System.InvalidOperationException">Thrown when the request was already sent by
        /// the client instance or the URI is invalid.</exception>
        public async Task <HttpResponse> Send(HttpVerb verb, IHttpRequestParameter urlParameter = null, IHttpRequestParameter bodyParameter = null)
        {
            string              fullRequestUrl  = $"{_requestUrl}{ConstructParameterString(urlParameter)}";
            HttpContent         content         = new StringContent(ConstructParameterString(bodyParameter));
            HttpResponseMessage responseMessage = null;

            try
            {
                switch (verb)
                {
                case HttpVerb.DELETE:
                    responseMessage = await _httpClient.DeleteAsync(fullRequestUrl);

                    break;

                case HttpVerb.GET:
                    responseMessage = await _httpClient.GetAsync(fullRequestUrl);

                    break;

                case HttpVerb.POST:
                    responseMessage = await _httpClient.PostAsync(fullRequestUrl, content);

                    break;

                case HttpVerb.PUT:
                    responseMessage = await _httpClient.PutAsync(fullRequestUrl, content);

                    break;

                default:
                    throw new NotImplementedException($"HTTP Verb not implemented: {verb.ToString()}");
                }
            }
            catch (HttpRequestException ex)
            {
                string error = ExceptionUtilities.GetAllExceptionMessages(ex);
                return(new HttpResponse(
                           fullRequestUrl,
                           System.Net.HttpStatusCode.InternalServerError,
                           error,
                           verb
                           ));
            }

            string responseBody = await responseMessage.Content.ReadAsStringAsync();

            return(new HttpResponse(
                       fullRequestUrl,
                       responseMessage.StatusCode,
                       responseBody,
                       verb
                       ));
        }