public void Create_GetRequest_Correct() { var request = _factory.Create( "http://fakeurl.com", new Dictionary <string, object>() { { "param", "test" } }, "GET"); Assert.IsNotNull(request); Assert.AreEqual("http://fakeurl.com/", request.RequestUri.AbsoluteUri); Assert.AreEqual(-1, request.ContentLength); }
private (IHttpWebRequest request, UriBuilder uri, SolrCacheEntity cache) PrepareGetWebRequest(string relativeUrl, IEnumerable <KeyValuePair <string, string> > parameters) { var u = new UriBuilder(serverURL); u.Path += relativeUrl; u.Query = GetQuery(parameters); var request = HttpWebRequestFactory.Create(u.Uri); request.Method = HttpWebRequestMethod.GET; request.KeepAlive = true; request.AutomaticDecompression = DecompressionMethods.Deflate | DecompressionMethods.GZip; var cached = Cache[u.Uri.ToString()]; if (cached != null) { request.Headers.Add(HttpRequestHeader.IfNoneMatch, cached.ETag); } if (Timeout > 0) { request.ReadWriteTimeout = Timeout; request.Timeout = Timeout; } return(request, u, cached); }
private IHttpWebRequest PreparePostStreamWebRequest(string relativeUrl, string contentType, Stream content, IEnumerable <KeyValuePair <string, string> > parameters) { var u = new UriBuilder(serverURL); u.Path += relativeUrl; u.Query = GetQuery(parameters); var request = HttpWebRequestFactory.Create(u.Uri); request.Method = HttpWebRequestMethod.POST; request.KeepAlive = true; request.AutomaticDecompression = DecompressionMethods.Deflate | DecompressionMethods.GZip; if (Timeout > 0) { request.ReadWriteTimeout = Timeout; request.Timeout = Timeout; } if (contentType != null) { request.ContentType = contentType; } request.ContentLength = content.Length; request.ProtocolVersion = HttpVersion.Version11; return(request); }
public (IHttpWebRequest request, string queryString) PrepareGet(string relativeUrl, IEnumerable <KeyValuePair <string, string> > parameters) { var u = new UriBuilder(serverUrl); u.Path += relativeUrl; var request = HttpWebRequestFactory.Create(u.Uri); request.Method = HttpWebRequestMethod.POST; request.ContentType = "application/x-www-form-urlencoded"; var param = new List <KeyValuePair <string, string> >(); if (parameters != null) { param.AddRange(parameters); } param.Add(KV.Create("wt", "xml")); var qs = string.Join("&", param .Select(kv => string.Format("{0}={1}", WebUtility.UrlEncode(kv.Key), WebUtility.UrlEncode(kv.Value))) .ToArray()); request.ContentLength = Encoding.UTF8.GetByteCount(qs); request.ProtocolVersion = HttpVersion.Version11; request.KeepAlive = true; return(request, qs); }
public IHttpRequest Resource(string resource, Action <HttpHeader> httpHeaderOptions) { var request = HttpWebRequestFactory.Create(new Uri(Uri, resource)); var httpHeader = new HttpHeader(request, this); httpHeaderOptions?.Invoke(httpHeader); return(new HttpRequest(request, this)); }
public string Get(string relativeUrl, IEnumerable <KeyValuePair <string, string> > parameters) { var u = new UriBuilder(serverURL); u.Path += relativeUrl; u.Query = GetQuery(parameters); var request = HttpWebRequestFactory.Create(u.Uri); request.Method = HttpWebRequestMethod.GET; request.KeepAlive = true; request.AutomaticDecompression = DecompressionMethods.Deflate | DecompressionMethods.GZip; var cached = Cache[u.Uri.ToString()]; if (cached != null) { request.Headers.Add(HttpRequestHeader.IfNoneMatch, cached.ETag); } if (Timeout > 0) { request.ReadWriteTimeout = Timeout; request.Timeout = Timeout; } if (Certificate != null) { request.ProtocolVersion = HttpVersion.Version10; request.PreAuthenticate = true; request.ClientCertificates.Add(Certificate); ServicePointManager.Expect100Continue = true; ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3; ServicePointManager.ServerCertificateValidationCallback += AcceptSelfSignedCertificate; } try { var response = GetResponse(request); if (response.ETag != null) { Cache.Add(new SolrCacheEntity(u.Uri.ToString(), response.ETag, response.Data)); } return(response.Data); } catch (WebException e) { if (e.Response != null) { using (e.Response) { var r = new HttpWebResponseAdapter(e.Response); if (r.StatusCode == HttpStatusCode.NotModified) { return(cached.Data); } using (var s = e.Response.GetResponseStream()) using (var sr = new StreamReader(s)) { throw new SolrConnectionException(sr.ReadToEnd(), e, u.Uri.ToString()); } } } throw new SolrConnectionException(e, u.Uri.ToString()); } }
public string Get(string relativeUrl, IEnumerable <KeyValuePair <string, string> > parameters) { var u = new UriBuilder(serverURL); u.Path += relativeUrl; u.Query = GetQuery(parameters); var request = HttpWebRequestFactory.Create(u.Uri); request.Method = HttpWebRequestMethod.GET; request.KeepAlive = true; request.AutomaticDecompression = DecompressionMethods.Deflate | DecompressionMethods.GZip; var cached = Cache[u.Uri.ToString()]; if (cached != null) { request.Headers.Add(HttpRequestHeader.IfNoneMatch, cached.ETag); } if (Timeout > 0) { request.ReadWriteTimeout = Timeout; request.Timeout = Timeout; } try { var response = GetResponse(request); if (response.ETag != null) { Cache.Add(new SolrCacheEntity(u.Uri.ToString(), response.ETag, response.Data)); } return(response.Data); } catch (WebException e) { var msg = e.Message; if (e.Response != null) { HttpStatusCode solrHttpStatusCode; using (e.Response) { var r = new HttpWebResponseAdapter(e.Response); solrHttpStatusCode = r.StatusCode; if (solrHttpStatusCode == HttpStatusCode.NotModified) { return(cached.Data); } using (var s = e.Response.GetResponseStream()) using (var sr = new StreamReader(s)) msg = sr.ReadToEnd(); } throw new SolrConnectionException(msg, e, u.Uri.ToString(), solrHttpStatusCode); } throw new SolrConnectionException(msg, e, u.Uri.ToString()); } }
/// <summary> /// Constructs a web request to create a new container. /// </summary> /// <param name="uri">A <see cref="System.Uri"/> specifying the absolute URI to the container.</param> /// <param name="timeout">An integer specifying the server timeout interval.</param> /// <param name="useVersionHeader">A flag indicating whether to set the x-ms-version HTTP header.</param> /// <param name="operationContext">An <see cref="OperationContext"/> object that represents the context for the current operation.</param> /// <param name="accessType">An <see cref="BlobContainerPublicAccessType"/> object that specifies whether data in the container may be accessed publicly and the level of access.</param> /// <returns>A <see cref="System.Net.HttpWebRequest"/> object.</returns> public static HttpWebRequest Create(Uri uri, int?timeout, bool useVersionHeader, OperationContext operationContext, BlobContainerPublicAccessType accessType) { UriQueryBuilder containerBuilder = GetContainerUriQueryBuilder(); HttpWebRequest request = HttpWebRequestFactory.Create(uri, timeout, containerBuilder, useVersionHeader, operationContext); if (accessType != BlobContainerPublicAccessType.Off) { request.Headers.Add(Constants.HeaderConstants.ContainerPublicAccessType, accessType.ToString().ToLower(CultureInfo.InvariantCulture)); } return(request); }
public string PostStream(string relativeUrl, string contentType, Stream content, IEnumerable <KeyValuePair <string, string> > parameters) { var u = new UriBuilder(serverURL); u.Path += relativeUrl; u.Query = GetQuery(parameters); var request = HttpWebRequestFactory.Create(u.Uri); request.Method = HttpWebRequestMethod.POST; request.KeepAlive = true; request.AutomaticDecompression = DecompressionMethods.Deflate | DecompressionMethods.GZip; if (Timeout > 0) { request.ReadWriteTimeout = Timeout; request.Timeout = Timeout; } if (contentType != null) { request.ContentType = contentType; } request.ContentLength = content.Length; request.ProtocolVersion = HttpVersion.Version11; if (Certificate != null) { request.ProtocolVersion = HttpVersion.Version10; request.PreAuthenticate = true; request.ClientCertificates.Add(Certificate); ServicePointManager.Expect100Continue = true; ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3; ServicePointManager.ServerCertificateValidationCallback += AcceptSelfSignedCertificate; } try { using (var postStream = request.GetRequestStream()) { CopyTo(content, postStream); } return(GetResponse(request).Data); } catch (WebException e) { var msg = e.Message; if (e.Response != null) { using (var s = e.Response.GetResponseStream()) using (var sr = new StreamReader(s)) msg = sr.ReadToEnd(); } throw new SolrConnectionException(msg, e, request.RequestUri.ToString()); } }
/// <summary> /// Constructs a web request to create a new share. /// </summary> /// <param name="uri">The absolute URI to the share.</param> /// <param name="properties">Properties to set on the share.</param> /// <param name="timeout">The server timeout interval.</param> /// <param name="useVersionHeader">A boolean value indicating whether to set the <i>x-ms-version</i> HTTP header.</param> /// <param name="operationContext">An <see cref="OperationContext" /> object for tracking the current operation.</param> /// <returns>A web request to use to perform the operation.</returns> public static HttpWebRequest Create(Uri uri, FileShareProperties properties, int?timeout, bool useVersionHeader, OperationContext operationContext) { UriQueryBuilder shareBuilder = GetShareUriQueryBuilder(); HttpWebRequest request = HttpWebRequestFactory.Create(uri, timeout, shareBuilder, useVersionHeader, operationContext); if (properties != null && properties.Quota.HasValue) { request.AddOptionalHeader(Constants.HeaderConstants.ShareQuota, properties.Quota); } return(request); }
public string PostStream(string relativeUrl, string contentType, Stream content, IEnumerable <KeyValuePair <string, string> > parameters) { var u = new UriBuilder(serverURL); u.Path += relativeUrl; u.Query = GetQuery(parameters); var request = HttpWebRequestFactory.Create(u.Uri); request.Method = HttpWebRequestMethod.POST; request.KeepAlive = true; request.AutomaticDecompression = DecompressionMethods.Deflate | DecompressionMethods.GZip; if (Timeout > 0) { request.ReadWriteTimeout = Timeout; request.Timeout = Timeout; } if (contentType != null) { request.ContentType = contentType; } request.ContentLength = content.Length; request.ProtocolVersion = HttpVersion.Version11; try { using (var postStream = request.GetRequestStream()) { CopyTo(content, postStream); } return(GetResponse(request).Data); } catch (WebException e) { var msg = e.Message; if (e.Response != null) { HttpStatusCode solrHttpStatusCode; using (e.Response) { using (var s = e.Response.GetResponseStream()) using (var sr = new StreamReader(s)) msg = sr.ReadToEnd(); solrHttpStatusCode = (new HttpWebResponseAdapter(e.Response)).StatusCode; } throw new SolrConnectionException(msg, e, request.RequestUri.ToString(), solrHttpStatusCode); } throw new SolrConnectionException(msg, e, request.RequestUri.ToString()); } }
public string Get(string relativeUrl, IEnumerable <KeyValuePair <string, string> > parameters) { var u = new UriBuilder(serverURL); u.Path += relativeUrl; u.Query = GetQuery(parameters); var request = HttpWebRequestFactory.Create(u.Uri); request.Method = HttpWebRequestMethod.GET; request.KeepAlive = true; //Issue request headers to say we can accept a compressed response request.Headers.Add(HttpRequestHeader.AcceptEncoding, "gzip,deflate"); var cached = Cache[u.Uri.ToString()]; if (cached != null) { request.Headers.Add(HttpRequestHeader.IfNoneMatch, cached.ETag); } if (Timeout > 0) { request.ReadWriteTimeout = Timeout; request.Timeout = Timeout; } try { var response = GetResponse(request); if (response.ETag != null) { Cache.Add(new SolrCacheEntity(u.Uri.ToString(), response.ETag, response.Data)); } return(response.Data); } catch (WebException e) { if (e.Response != null) { var r = new HttpWebResponseAdapter(e.Response); if (r.StatusCode == HttpStatusCode.NotModified) { return(cached.Data); } if (r.StatusCode == HttpStatusCode.BadRequest) { throw new InvalidFieldException(r.StatusDescription, e); } } throw new SolrConnectionException(e); } }
/// <summary> /// Constructs a web request to create a new container. /// </summary> /// <param name="uri">A <see cref="System.Uri"/> specifying the absolute URI to the container.</param> /// <param name="timeout">An integer specifying the server timeout interval.</param> /// <param name="useVersionHeader">A boolean value indicating whether to set the <i>x-ms-version</i> HTTP header.</param> /// <param name="operationContext">An <see cref="OperationContext"/> object that represents the context for the current operation.</param> /// <param name="accessType">An <see cref="BlobContainerPublicAccessType"/> object that specifies whether data in the container may be accessed publicly and the level of access.</param> /// <returns>A <see cref="System.Net.HttpWebRequest"/> object.</returns> public static HttpWebRequest Create(Uri uri, int?timeout, bool useVersionHeader, OperationContext operationContext, BlobContainerPublicAccessType accessType) { if (accessType == BlobContainerPublicAccessType.Unknown) { throw new ArgumentException(SR.ArgumentOutOfRangeError, "accessType"); } UriQueryBuilder containerBuilder = GetContainerUriQueryBuilder(); HttpWebRequest request = HttpWebRequestFactory.Create(uri, timeout, containerBuilder, useVersionHeader, operationContext); if (accessType != BlobContainerPublicAccessType.Off) { request.Headers.Add(Constants.HeaderConstants.ContainerPublicAccessType, accessType.ToString().ToLower(CultureInfo.InvariantCulture)); } return(request); }
/// <summary> /// Constructs a web request to create a new queue. /// </summary> /// <param name="uri">A <see cref="System.Uri"/> specifying the absolute URI to the queue.</param> /// <param name="timeout">An integer specifying the server timeout interval.</param> /// <param name="useVersionHeader">A boolean value indicating whether to set the <i>x-ms-version</i> HTTP header.</param> /// <param name="operationContext">An <see cref="OperationContext"/> object that represents the context for the current operation.</param> /// <returns>A <see cref="System.Net.HttpWebRequest"/> object.</returns> public static HttpWebRequest Create(Uri uri, int?timeout, bool useVersionHeader, OperationContext operationContext) { return(HttpWebRequestFactory.Create(uri, timeout, null, useVersionHeader, operationContext)); }
/// <summary> /// Constructs a web request to create a new queue. /// </summary> /// <param name="uri">The absolute URI to the queue.</param> /// <param name="timeout">The server timeout interval.</param> /// <param name="operationContext">An <see cref="OperationContext"/> object for tracking the current operation.</param> /// <returns>A web request to use to perform the operation.</returns> public static HttpWebRequest Create(Uri uri, int?timeout, OperationContext operationContext) { return(HttpWebRequestFactory.Create(uri, timeout, null, operationContext)); }
/// <summary> /// Constructs a web request to create a new container. /// </summary> /// <param name="uri">The absolute URI to the container.</param> /// <param name="timeout">The server timeout interval.</param> /// <param name="operationContext">An <see cref="OperationContext"/> object for tracking the current operation.</param> /// <returns>A web request to use to perform the operation.</returns> public static HttpWebRequest Create(Uri uri, int?timeout, OperationContext operationContext) { UriQueryBuilder containerBuilder = GetContainerUriQueryBuilder(); return(HttpWebRequestFactory.Create(uri, timeout, containerBuilder, operationContext)); }
/// <summary> /// Constructs a web request to create a new directory. /// </summary> /// <param name="uri">The absolute URI to the directory.</param> /// <param name="timeout">The server timeout interval.</param> /// <param name="useVersionHeader">A boolean value indicating whether to set the <i>x-ms-version</i> HTTP header.</param> /// <param name="operationContext">An <see cref="OperationContext" /> object for tracking the current operation.</param> /// <returns>A web request to use to perform the operation.</returns> public static HttpWebRequest Create(Uri uri, int?timeout, bool useVersionHeader, OperationContext operationContext) { UriQueryBuilder directoryBuilder = GetDirectoryUriQueryBuilder(); return(HttpWebRequestFactory.Create(uri, timeout, directoryBuilder, useVersionHeader, operationContext)); }