Exemplo n.º 1
0
        /// <summary>
        /// Extract API response entity from web response
        /// </summary>
        /// <typeparam name="TResponse">Response type</typeparam>
        /// <returns></returns>
        protected TResponse ExtractAPIResponse <TResponse>(HttpWebResponse resp)
            where TResponse : APIResponse
        {
            // Get response content
            var content = resp.GetResponseContent();

            // Parse it
            var response = ParseResponseContent <TResponse>(content);

            // Check if valid
            if (response.IsValid)
            {
                // Is valid
                return(response);
            }

            // Check if over query limit
            if (response.IsOverQueryLimit)
            {
                // Retriable exception
                throw new RetriableRequestException();
            }

            // API error
            if (response.HasErrorMessage)
            {
                throw new APIErrorException(response.Status, response.ErrorMessage);
            }
            throw new APIErrorException(response.Status);
        }
Exemplo n.º 2
0
        private static GetDistanceMatrixResponse ExtractResponseBody(HttpWebResponse webResponse)
        {
            var response = JsonConvert.DeserializeObject <GetDistanceMatrixResponse>(webResponse.GetResponseContent());

            if (response.IsOverQueryLimit && response.HasErrorMessage && response.ErrorMessage.ToLower().Contains("daily request quota"))
            {
                throw new Exception("Over query limit");
            }
            return(response);
        }
Exemplo n.º 3
0
        public static void TraceResponse(this HttpWebResponse response,
                                         IProgress <string> progress)
        {
            if (response == null)
            {
                throw new ArgumentNullException("response");
            }

            if (progress == null)
            {
                return;
            }

            var headerStringBuilder = new StringBuilder();

            foreach (var header in response.Headers.AllKeys)
            {
                headerStringBuilder.AppendFormat("{0}{1}='{2}'",
                                                 Environment.NewLine,
                                                 header,
                                                 response.Headers[header]);
            }

            var sb = new StringBuilder();

            sb.AppendFormat("[{0}] Response> ", GetTimeString());
            sb.AppendFormat("({0} {1}) ", (int)response.StatusCode, response.StatusCode);
            sb.AppendFormat("{0} ", response.Method);
            sb.Append(response.ResponseUri);
            sb.AppendLine("");
            sb.AppendLine(headerStringBuilder.ToString());
            sb.AppendLine("");
            sb.AppendLine(response.GetResponseContent());

            progress.Report(sb.ToString());
        }
Exemplo n.º 4
0
 /// <summary>
 /// Get response body
 /// </summary>
 /// <param name="resp">Response</param>
 /// <returns>Body</returns>
 private string GetBody(HttpWebResponse resp)
 {
     // Get response content
     return(resp.GetResponseContent());
 }