示例#1
0
        private static void EnsureSuccessfulResponse(HttpClient client, HttpStatusCode expectedStatusCode = HttpStatusCode.OK)
        {
            HttpWebResponse response = null;

            try
            {
                response = (HttpWebResponse)client.GetResponse();
                if (response != null && expectedStatusCode != response.StatusCode)
                {
                    throw new InvalidOperationException(String.Format(CultureInfo.CurrentCulture, NuGetResources.PackageServerError, response.StatusDescription, String.Empty));
                }
            }
            catch (WebException e)
            {
                if (e.Response == null)
                {
                    throw;
                }
                response = (HttpWebResponse)e.Response;
                if (expectedStatusCode != response.StatusCode)
                {
                    throw new InvalidOperationException(String.Format(CultureInfo.CurrentCulture, NuGetResources.PackageServerError, response.StatusDescription, e.Message), e);
                }
            }
            finally
            {
                if (response != null)
                {
                    response.Close();
                    response = null;
                }
            }
        }
示例#2
0
 private System.Uri GetResponseUri(HttpClient client)
 {
     using (WebResponse response = client.GetResponse())
     {
         if (response == null)
         {
             object[] args = new object[] { this.Uri };
             throw new InvalidOperationException(string.Format(CultureInfo.CurrentCulture, NuGetResources.UnableToResolveUri, args));
         }
         return(response.ResponseUri);
     }
 }
        private Uri GetResponseUri(HttpClient client)
        {
            using (WebResponse response = client.GetResponse())
            {
                if (response == null)
                {
                    throw new InvalidOperationException(
                        String.Format(CultureInfo.CurrentCulture,
                                      NuGetResources.UnableToResolveUri,
                                      Uri));
                }

                return response.ResponseUri;
            }
        }
示例#4
0
        private Uri GetResponseUri(HttpClient client)
        {
            using (WebResponse response = client.GetResponse())
            {
                if (response == null)
                {
                    throw new InvalidOperationException(
                              String.Format(CultureInfo.CurrentCulture,
                                            NuGetResources.UnableToResolveUri,
                                            Uri));
                }

                return(response.ResponseUri);
            }
        }
示例#5
0
        private static void EnsureSuccessfulResponse(HttpClient client, HttpStatusCode?expectedStatusCode = null)
        {
            HttpWebResponse response = null;

            try
            {
                response = (HttpWebResponse)client.GetResponse();
                if (response != null &&
                    ((expectedStatusCode.HasValue && expectedStatusCode.Value != response.StatusCode) ||

                     // If expected status code isn't provided, just look for anything 400 (Client Errors) or higher (incl. 500-series, Server Errors)
                     // 100-series is protocol changes, 200-series is success, 300-series is redirect.
                     (!expectedStatusCode.HasValue && (int)response.StatusCode >= 400)))
                {
                    throw new InvalidOperationException(String.Format(CultureInfo.CurrentCulture, NuGetResources.PackageServerError, response.StatusDescription, String.Empty));
                }
            }
            catch (WebException e)
            {
                if (e.Response == null)
                {
                    throw;
                }
                response = (HttpWebResponse)e.Response;
                if (expectedStatusCode != response.StatusCode)
                {
                    throw new InvalidOperationException(String.Format(CultureInfo.CurrentCulture, NuGetResources.PackageServerError, response.StatusDescription, e.Message), e);
                }
            }
            finally
            {
                if (response != null)
                {
                    response.Close();
                    response = null;
                }
            }
        }
示例#6
0
        private static void EnsureSuccessfulResponse(HttpClient client)
        {
            WebResponse response = null;
            try
            {
                response = client.GetResponse();
            }
            catch (WebException e)
            {
                if (e.Response == null)
                {
                    throw;
                }

                response = e.Response;

                var httpResponse = (HttpWebResponse)e.Response;
                if (httpResponse != null && !AcceptableStatusCodes.Contains(httpResponse.StatusCode))
                {
                    throw new InvalidOperationException(String.Format(CultureInfo.CurrentCulture, NuGetResources.PackageServerError, httpResponse.StatusDescription, e.Message), e);
                }
            }
            finally
            {
                if (response != null)
                {
                    response.Close();
                    response = null;
                }
            }
        }
示例#7
0
        /// <summary>
        /// Ensures that success response is received.
        /// </summary>
        /// <param name="client">The client that is making the request.</param>
        /// <param name="expectedStatusCode">The exected status code.</param>
        /// <returns>True if success response is received; false if redirection response is received.
        /// In this case, _baseUri will be updated to be the new redirected Uri and the requrest
        /// should be retried.</returns>
        private bool EnsureSuccessfulResponse(HttpClient client, HttpStatusCode?expectedStatusCode = null)
        {
            HttpWebResponse response = null;

            try
            {
                response = (HttpWebResponse)client.GetResponse();
                if (response != null &&
                    ((expectedStatusCode.HasValue && expectedStatusCode.Value != response.StatusCode) ||

                     // If expected status code isn't provided, just look for anything 400 (Client Errors) or higher (incl. 500-series, Server Errors)
                     // 100-series is protocol changes, 200-series is success, 300-series is redirect.
                     (!expectedStatusCode.HasValue && (int)response.StatusCode >= 400)))
                {
                    throw new InvalidOperationException(String.Format(CultureInfo.CurrentCulture, NuGetResources.PackageServerError, response.StatusDescription, String.Empty));
                }

                return(true);
            }
            catch (WebException e)
            {
                if (e.Response == null)
                {
                    throw;
                }
                response = (HttpWebResponse)e.Response;

                // Check if the error is caused by redirection
                if (response.StatusCode == HttpStatusCode.MultipleChoices ||
                    response.StatusCode == HttpStatusCode.MovedPermanently ||
                    response.StatusCode == HttpStatusCode.Found ||
                    response.StatusCode == HttpStatusCode.SeeOther ||
                    response.StatusCode == HttpStatusCode.TemporaryRedirect)
                {
                    var location = response.Headers["Location"];
                    Uri newUri;
                    if (!Uri.TryCreate(client.Uri, location, out newUri))
                    {
                        throw;
                    }

                    _baseUri = new Lazy <Uri>(() => newUri);
                    return(false);
                }

                if (expectedStatusCode != response.StatusCode)
                {
                    throw new InvalidOperationException(String.Format(CultureInfo.CurrentCulture, NuGetResources.PackageServerError, response.StatusDescription, e.Message), e);
                }

                return(true);
            }
            finally
            {
                if (response != null)
                {
                    response.Close();
                    response = null;
                }
            }
        }
示例#8
0
		static Stream GetResponseStream (Uri uri)
		{
			if (uri.IsFile) {
				var request = WebRequest.Create (uri);
				return request.GetResponse ().GetResponseStream ();
			}

			var httpClient = new HttpClient (uri);
			return httpClient.GetResponse ().GetResponseStream ();
		}
示例#9
0
        /// <summary>
        /// Ensures that success response is received. 
        /// </summary>
        /// <param name="client">The client that is making the request.</param>
        /// <param name="expectedStatusCode">The exected status code.</param>
        /// <returns>True if success response is received; false if redirection response is received. 
        /// In this case, _baseUri will be updated to be the new redirected Uri and the requrest 
        /// should be retried.</returns>
        private bool EnsureSuccessfulResponse(HttpClient client, HttpStatusCode? expectedStatusCode = null)
        {
            HttpWebResponse response = null;
            try
            {
                response = (HttpWebResponse)client.GetResponse();
                if (response != null && 
                    ((expectedStatusCode.HasValue && expectedStatusCode.Value != response.StatusCode) || 

                    // If expected status code isn't provided, just look for anything 400 (Client Errors) or higher (incl. 500-series, Server Errors)
                    // 100-series is protocol changes, 200-series is success, 300-series is redirect.
                    (!expectedStatusCode.HasValue && (int)response.StatusCode >= 400)))
                {
                    throw new InvalidOperationException(String.Format(CultureInfo.CurrentCulture, NuGetResources.PackageServerError, response.StatusDescription, String.Empty));
                }

                return true;
            }
            catch (WebException e)
            {
                if (e.Response == null)
                {
                    throw;
                }
                response = (HttpWebResponse)e.Response;

                // Check if the error is caused by redirection
                if (response.StatusCode == HttpStatusCode.MultipleChoices ||
                    response.StatusCode == HttpStatusCode.MovedPermanently ||
                    response.StatusCode == HttpStatusCode.Found ||
                    response.StatusCode == HttpStatusCode.SeeOther || 
                    response.StatusCode == HttpStatusCode.TemporaryRedirect)
                {
                    var location = response.Headers["Location"];
                    Uri newUri;
                    if (!Uri.TryCreate(client.Uri, location, out newUri))
                    {
                        throw;
                    }
                    
                    _baseUri = new Lazy<Uri>(() => newUri);
                    return false;
                } 

                if (expectedStatusCode != response.StatusCode)
                {
                    throw new InvalidOperationException(String.Format(CultureInfo.CurrentCulture, NuGetResources.PackageServerError, response.StatusDescription, e.Message), e);
                }

                return true;
            }
            finally
            {
                if (response != null)
                {
                    response.Close();
                    response = null;
                }
            }
        }
示例#10
0
        /// <summary>
        ///   Ensures that success response is received.
        /// </summary>
        /// <param name="client">The client that is making the request.</param>
        /// <param name="expectedStatusCode">The exected status code.</param>
        /// <returns>
        ///   True if success response is received; false if redirection response is received.
        ///   In this case, _baseUri will be updated to be the new redirected Uri and the requrest
        ///   should be retried.
        /// </returns>
        public NuGetServiceGetClientResult ensure_successful_response(HttpClient client, HttpStatusCode? expectedStatusCode = null)
        {
            this.Log().Debug(() => "Reaching out to '{0}'".format_with(client.Uri.to_string()));

            var result = new NuGetServiceGetClientResult
            {
                Success = false
            };

            HttpWebResponse response = null;
            try
            {
                response = (HttpWebResponse)client.GetResponse();

                result.Messages.Add(
                    new ResultMessage
                    {
                        MessageType = ResultType.Note,
                        Message = response != null ? response.StatusDescription : "Response was null"
                    });

                if (response != null &&
                    ((expectedStatusCode.HasValue && expectedStatusCode.Value != response.StatusCode) ||
                     // If expected status code isn't provided, just look for anything 400 (Client Errors) or higher (incl. 500-series, Server Errors)
                     // 100-series is protocol changes, 200-series is success, 300-series is redirect.
                     (!expectedStatusCode.HasValue && (int)response.StatusCode >= 400))) Bootstrap.handle_exception(new InvalidOperationException("Failed to process request.{0} '{1}'".format_with(Environment.NewLine, response.StatusDescription)));
                else result.Success = true;

                return result;
            }
            catch (WebException e)
            {
                if (e.Response == null)
                {
                    Bootstrap.handle_exception(e);
                    return result;
                }

                response = (HttpWebResponse)e.Response;
                // Check if the error is caused by redirection
                if (response.StatusCode == HttpStatusCode.MultipleChoices ||
                    response.StatusCode == HttpStatusCode.MovedPermanently ||
                    response.StatusCode == HttpStatusCode.Found ||
                    response.StatusCode == HttpStatusCode.SeeOther ||
                    response.StatusCode == HttpStatusCode.TemporaryRedirect)
                {
                    var location = response.Headers["Location"];
                    Uri newUri;
                    if (!Uri.TryCreate(client.Uri, location, out newUri))
                    {
                        Bootstrap.handle_exception(e);
                        return result;
                    }

                    result.RedirectUrl = newUri.ToString();

                    return result;
                }

                result.Messages.Add(
                    new ResultMessage
                    {
                        MessageType = ResultType.Note,
                        Message = response.StatusDescription
                    });

                if (expectedStatusCode != response.StatusCode) Bootstrap.handle_exception(new InvalidOperationException("Failed to process request.{0} '{1}':{0} {2}".format_with(Environment.NewLine, response.StatusDescription, e.Message), e));
                else result.Success = true;

                return result;
            }
            finally
            {
                if (response != null)
                {
                    response.Close();
                    response = null;
                }
            }
        }
示例#11
0
		static Stream GetResponseStream (Uri uri)
		{
			WebResponse response = null;
			if (uri.IsFile) {
				var request = WebRequest.Create (uri);
				response = request.GetResponse ();
			} else {
				var httpClient = new HttpClient (uri);
				response = httpClient.GetResponse ();
			}

			var stream = new MemoryStream ();
			response.GetResponseStream ().CopyTo (stream); // force the download to complete
			stream.Position = 0;
			return stream;
		}
示例#12
0
 private static void EnsureSuccessfulResponse(HttpClient client, HttpStatusCode expectedStatusCode = HttpStatusCode.OK)
 {
     HttpWebResponse response = null;
     try
     {
         response = (HttpWebResponse)client.GetResponse();
         if (response != null && expectedStatusCode != response.StatusCode)
         {
             throw new InvalidOperationException(String.Format(CultureInfo.CurrentCulture, NuGetResources.PackageServerError, response.StatusDescription, String.Empty));
         }
     }
     catch (WebException e)
     {
         if (e.Response == null)
         {
             throw;
         }
         response = (HttpWebResponse)e.Response;
         if (expectedStatusCode != response.StatusCode)
         {
             throw new InvalidOperationException(String.Format(CultureInfo.CurrentCulture, NuGetResources.PackageServerError, response.StatusDescription, e.Message), e);
         }
     }
     finally
     {
         if (response != null)
         {
             response.Close();
             response = null;
         }
     }
 }
示例#13
0
        private static void EnsureSuccessfulResponse(HttpClient client, HttpStatusCode? expectedStatusCode = null)
        {
            HttpWebResponse response = null;
            try
            {
                response = (HttpWebResponse)client.GetResponse();
                if (response != null && 
                    ((expectedStatusCode.HasValue && expectedStatusCode.Value != response.StatusCode) || 

                    // If expected status code isn't provided, just look for anything 400 (Client Errors) or higher (incl. 500-series, Server Errors)
                    // 100-series is protocol changes, 200-series is success, 300-series is redirect.
                    (!expectedStatusCode.HasValue && (int)response.StatusCode >= 400)))
                {
                    throw new InvalidOperationException(String.Format(CultureInfo.CurrentCulture, NuGetResources.PackageServerError, response.StatusDescription, String.Empty));
                }
            }
            catch (WebException e)
            {
                if (e.Response == null)
                {
                    throw;
                }
                response = (HttpWebResponse)e.Response;
                if (expectedStatusCode != response.StatusCode)
                {
                    throw new InvalidOperationException(String.Format(CultureInfo.CurrentCulture, NuGetResources.PackageServerError, response.StatusDescription, e.Message), e);
                }
            }
            finally
            {
                if (response != null)
                {
                    response.Close();
                    response = null;
                }
            }
        }
		ImageLoadedEventArgs LoadImage (Uri uri, object state)
		{
			try {
				var httpClient = new HttpClient (uri);
				Stream stream = httpClient.GetResponse ().GetResponseStream ();
				Image image = Image.FromStream (stream);

				return new ImageLoadedEventArgs (image, uri, state);
			} catch (Exception ex) {
				return new ImageLoadedEventArgs (ex, uri, state);
			}
		}