コード例 #1
0
ファイル: Download.cs プロジェクト: jango2015/Wyam
 /// <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);
 }
コード例 #2
0
ファイル: Download.cs プロジェクト: jango2015/Wyam
 public DownloadInstruction(string uri, RequestHeader requestHeader) : this(uri)
 {
     RequestHeader = requestHeader;
 }
コード例 #3
0
ファイル: Download.cs プロジェクト: jango2015/Wyam
 /// <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);
 }
コード例 #4
0
ファイル: DownloadTests.cs プロジェクト: ryanrousseau/Wyam
            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");
            }
コード例 #5
0
ファイル: Download.cs プロジェクト: jango2015/Wyam
        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;
            }
        }
コード例 #6
0
ファイル: Download.cs プロジェクト: ryanrousseau/Wyam
 /// <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;
 }
コード例 #7
0
ファイル: Download.cs プロジェクト: ryanrousseau/Wyam
 /// <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);
 }
コード例 #8
0
ファイル: Download.cs プロジェクト: ryanrousseau/Wyam
 public DownloadInstruction(string uri, RequestHeader requestHeader) : this(uri)
 {
     RequestHeader = requestHeader;
 }
コード例 #9
0
ファイル: Download.cs プロジェクト: ryanrousseau/Wyam
        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;
            }
        }
コード例 #10
0
ファイル: DownloadTests.cs プロジェクト: ibebbs/Wyam
            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();
            }