/// <summary> /// Downloads the specified URI with the specified request header. /// </summary> /// <param name="uri">The URI to download.</param> /// <param name="requestHeader">The request header to use.</param> public Download WithUri(string uri, RequestHeader requestHeader = null) { _urls.Add(new DownloadInstruction(uri, requestHeader)); return(this); }
public DownloadInstruction(string uri, RequestHeader requestHeader) : this(uri) { RequestHeader = requestHeader; }
/// <summary> /// Downloads the specified URI with the specified request header. /// </summary> /// <param name="uri">The URI to download.</param> /// <param name="requestHeader">The request header to use.</param> public Download(string uri, RequestHeader requestHeader) { WithUri(uri, requestHeader); }
public void SingleImageDownloadWithRequestHeader() { IDocument document = Substitute.For<IDocument>(); Stream stream = null; IEnumerable<KeyValuePair<string, object>> metadata = null; IExecutionContext context = Substitute.For<IExecutionContext>(); context .When(x => x.GetDocument(Arg.Any<string>(), Arg.Any<Stream>(), Arg.Any<IEnumerable<KeyValuePair<string, object>>>())) .Do(x => { stream = x.Arg<Stream>(); metadata = x.Arg<IEnumerable<KeyValuePair<string, object>>>(); }); var header = new RequestHeader(); header.Accept.Add("image/jpeg"); IModule download = new Download().WithUri("http://siwawi.com/images/cover/617215_113386155490459_1547184305_o-cover.jpg", header); context.OutputFolder.Returns(x => AssemblyDirectory); // When download.Execute(new[] { document }, context).ToList(); // Make sure to materialize the result list // Then stream.Seek(0, SeekOrigin.Begin); var path = Path.Combine(context.OutputFolder, "test-with-request-header.jpg"); File.WriteAllBytes(path, ReadToByte(stream)); stream.Dispose(); Assert.IsTrue(File.Exists(path), "Download cannot be empty"); }
private void ModifyRequestHeader(HttpRequestHeaders request, RequestHeader requestHeader) { foreach (string a in requestHeader.Accept) { request.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue(a)); } foreach (string a in requestHeader.AcceptCharset) { request.AcceptCharset.Add(new System.Net.Http.Headers.StringWithQualityHeaderValue(a)); } foreach (string a in requestHeader.AcceptEncoding) { request.AcceptEncoding.Add(new System.Net.Http.Headers.StringWithQualityHeaderValue(a)); } foreach (string a in requestHeader.AcceptLanguage) { request.AcceptLanguage.Add(new System.Net.Http.Headers.StringWithQualityHeaderValue(a)); } if (requestHeader.BasicAuthorization != null) { Tuple <string, string> auth = requestHeader.BasicAuthorization; request.Authorization = new AuthenticationHeaderValue("Basic", Convert.ToBase64String(Encoding.ASCII.GetBytes($"{auth.Item1}:{auth.Item2}"))); } foreach (string c in requestHeader.Connection) { request.Connection.Add(c); } if (requestHeader.Date.HasValue) { request.Date = requestHeader.Date; } foreach (string e in requestHeader.Expect) { request.Expect.Add(new NameValueWithParametersHeaderValue(e)); } if (requestHeader.ExpectContinue.HasValue) { request.ExpectContinue = requestHeader.ExpectContinue; } if (!string.IsNullOrWhiteSpace(requestHeader.From)) { request.From = requestHeader.From; } if (!string.IsNullOrWhiteSpace(requestHeader.Host)) { request.Host = requestHeader.Host; } foreach (string i in requestHeader.IfMatch) { request.IfMatch.Add(new EntityTagHeaderValue(i)); } if (requestHeader.IfModifiedSince.HasValue) { request.IfModifiedSince = requestHeader.IfModifiedSince; } foreach (string i in requestHeader.IfNoneMatch) { request.IfNoneMatch.Add(new EntityTagHeaderValue(i)); } if (requestHeader.IfUnmodifiedSince.HasValue) { request.IfUnmodifiedSince = requestHeader.IfUnmodifiedSince; } if (requestHeader.MaxForwards.HasValue) { request.MaxForwards = requestHeader.MaxForwards; } if (requestHeader.Referrer != null) { request.Referrer = requestHeader.Referrer; } foreach (string t in requestHeader.TransferEncoding) { request.TransferEncoding.Add(new TransferCodingHeaderValue(t)); } if (requestHeader.TransferEncodingChunked.HasValue) { request.TransferEncodingChunked = requestHeader.TransferEncodingChunked; } }
/// <summary> /// Downloads the specified URI with the specified request header. /// </summary> /// <param name="uri">The URI to download.</param> /// <param name="requestHeader">The request header to use.</param> public Download WithUri(string uri, RequestHeader requestHeader = null) { _urls.Add(new DownloadInstruction(uri, requestHeader)); return this; }
private void ModifyRequestHeader(HttpRequestHeaders request, RequestHeader requestHeader) { foreach (string a in requestHeader.Accept) { request.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue(a)); } foreach (string a in requestHeader.AcceptCharset) { request.AcceptCharset.Add(new System.Net.Http.Headers.StringWithQualityHeaderValue(a)); } foreach (string a in requestHeader.AcceptEncoding) { request.AcceptEncoding.Add(new System.Net.Http.Headers.StringWithQualityHeaderValue(a)); } foreach (string a in requestHeader.AcceptLanguage) { request.AcceptLanguage.Add(new System.Net.Http.Headers.StringWithQualityHeaderValue(a)); } if (requestHeader.BasicAuthorization != null) { Tuple<string, string> auth = requestHeader.BasicAuthorization; request.Authorization = new AuthenticationHeaderValue("Basic", Convert.ToBase64String(Encoding.ASCII.GetBytes($"{auth.Item1}:{auth.Item2}"))); } foreach (string c in requestHeader.Connection) { request.Connection.Add(c); } if (requestHeader.Date.HasValue) { request.Date = requestHeader.Date; } foreach (string e in requestHeader.Expect) { request.Expect.Add(new NameValueWithParametersHeaderValue(e)); } if (requestHeader.ExpectContinue.HasValue) { request.ExpectContinue = requestHeader.ExpectContinue; } if (!string.IsNullOrWhiteSpace(requestHeader.From)) { request.From = requestHeader.From; } if (!string.IsNullOrWhiteSpace(requestHeader.Host)) { request.Host = requestHeader.Host; } foreach (string i in requestHeader.IfMatch) { request.IfMatch.Add(new EntityTagHeaderValue(i)); } if (requestHeader.IfModifiedSince.HasValue) { request.IfModifiedSince = requestHeader.IfModifiedSince; } foreach (string i in requestHeader.IfNoneMatch) { request.IfNoneMatch.Add(new EntityTagHeaderValue(i)); } if (requestHeader.IfUnmodifiedSince.HasValue) { request.IfUnmodifiedSince = requestHeader.IfUnmodifiedSince; } if (requestHeader.MaxForwards.HasValue) { request.MaxForwards = requestHeader.MaxForwards; } if (requestHeader.Referrer != null) { request.Referrer = requestHeader.Referrer; } foreach (string t in requestHeader.TransferEncoding) { request.TransferEncoding.Add(new TransferCodingHeaderValue(t)); } if (requestHeader.TransferEncodingChunked.HasValue) { request.TransferEncodingChunked = requestHeader.TransferEncodingChunked; } }
public void SingleImageDownloadWithRequestHeader() { IDocument document = Substitute.For<IDocument>(); Stream stream = null; IEnumerable<KeyValuePair<string, object>> metadata = null; IExecutionContext context = Substitute.For<IExecutionContext>(); context .When(x => x.GetDocument(Arg.Any<FilePath>(), Arg.Any<Stream>(), Arg.Any<IEnumerable<KeyValuePair<string, object>>>())) .Do(x => { stream = x.Arg<Stream>(); metadata = x.Arg<IEnumerable<KeyValuePair<string, object>>>(); }); var header = new RequestHeader(); header.Accept.Add("image/jpeg"); IModule download = new Download().WithUri("http://wyam.io/Content/images/nav-logo.png", header); // When download.Execute(new[] { document }, context).ToList(); // Make sure to materialize the result list // Then stream.Seek(0, SeekOrigin.Begin); Assert.AreNotEqual(-1, stream.ReadByte()); stream.Dispose(); }