Ejemplo n.º 1
0
        void SendToTarget(Uri targetUrl, LinkbackSendParameters parameters)
        {
            HttpWebRequestAbstraction request = HttpWebRequestAbstraction.Create(targetUrl);

            SetupRequest(request, parameters);

            using (HttpWebResponseAbstraction response = request.GetResponse())
            {
                if (!response.IsHttpStatusCode2XX)
                {
                    throw new LinkbackSendException(String.Format(CultureInfo.InvariantCulture, "Http error while sending {0} for {1}", Name, targetUrl));
                }

                Stream receiveStream = response.GetResponseStream();

                if (response.ContentEncoding.ToUpperInvariant().Contains("GZIP"))
                {
                    receiveStream = new GZipStream(receiveStream, CompressionMode.Decompress);
                }
                else if (response.ContentEncoding.ToUpperInvariant().Contains("DEFLATE"))
                {
                    receiveStream = new DeflateStream(receiveStream, CompressionMode.Decompress);
                }

                StreamReader streamReader = new StreamReader(receiveStream, Encoding.UTF8);

                ParseResponse(targetUrl, streamReader.ReadToEnd());
            }
        }
Ejemplo n.º 2
0
        public void SetupRequestForPingback(HttpWebRequestAbstraction request)
        {
            if (SourceUrl == null)
            {
                throw new InvalidOperationException("SourceUrl is null");
            }

            if (TargetUrl == null)
            {
                throw new InvalidOperationException("TargetUrl is null");
            }

            string post_content = String.Format(CultureInfo.InvariantCulture, "<?xml version=\"1.0\"?><methodCall><methodName>pingback.ping</methodName><params><param><value><string>{0}</string></value></param><param><value><string>{1}</string></value></param></params></methodCall>", SourceUrl.AbsoluteUri, TargetUrl.AbsoluteUri);

            byte[] post_bytes = new UTF8Encoding().GetBytes(post_content);

            request.Method        = "POST";
            request.ContentType   = "text/xml";
            request.ContentLength = post_bytes.Length;

            using (Stream writeStream = request.GetRequestStream())
            {
                writeStream.Write(post_bytes, 0, post_bytes.Length);
            }
        }
Ejemplo n.º 3
0
        protected override Uri DiscoveryTargetUrl(Uri sendUrl, LinkbackSendParameters parameters)
        {
            HttpWebRequestAbstraction request = HttpWebRequestAbstraction.Create(sendUrl);

            using (HttpWebResponseAbstraction response = request.GetResponse())
            {
                if (response.IsHttpStatusCode2XX)
                {
                    return(FindTargetUrl(sendUrl, response));
                }
            }

            throw new LinkbackSendException(String.Format(CultureInfo.InvariantCulture, "Http error while discovering {0} url for {1}", Name, sendUrl));
        }
Ejemplo n.º 4
0
        public void LinkbackSendParameters_SetupRequestForPingback_SourceUrl_Null_Throws_InvalidOperationException()
        {
            var parameters = new LinkbackSendParameters();

            parameters.SourceUrl = null;
            parameters.TargetUrl = new Uri("http://localhost");

            var requestImplementation = new Mock <IHttpWebRequestImplementation>();
            var request = new HttpWebRequestAbstraction(requestImplementation.Object);

            Assert.Throws <InvalidOperationException>(() => {
                parameters.SetupRequestForPingback(request);
            });
        }
Ejemplo n.º 5
0
        public void SetupRequestForTrackback(HttpWebRequestAbstraction request)
        {
            string post_content = BuildPostContent();

            byte[] post_bytes = new UTF8Encoding().GetBytes(post_content);

            request.Method        = "POST";
            request.ContentType   = "application/x-www-form-urlencoded";
            request.ContentLength = post_bytes.Length;

            using (Stream writeStream = request.GetRequestStream())
            {
                writeStream.Write(post_bytes, 0, post_bytes.Length);
            }
        }
Ejemplo n.º 6
0
        protected string DownloadSourceContent(Uri sourceUrl)
        {
            HttpWebRequestAbstraction request = HttpWebRequestAbstraction.Create(sourceUrl);

            using (HttpWebResponseAbstraction response = request.GetResponse())
            {
                if (response.IsHttpStatusCode2XX)
                {
                    Stream       receiveStream = response.GetResponseStream();
                    StreamReader streamReader  = new StreamReader(receiveStream, Encoding.UTF8);
                    return(streamReader.ReadToEnd());
                }
            }

            throw new LinkbackReceiveException(String.Format(CultureInfo.InvariantCulture, "Http error while discovering {0} source at {1}", Name, sourceUrl));
        }
Ejemplo n.º 7
0
 protected override void SetupRequest(HttpWebRequestAbstraction request, LinkbackSendParameters parameters)
 {
     parameters.SetupRequestForPingback(request);
 }
Ejemplo n.º 8
0
 protected Linkback(IHttpWebRequestImplementation implementation)
 {
     this.HttpWebRequestAbstraction = new HttpWebRequestAbstraction(implementation);
 }
Ejemplo n.º 9
0
 protected abstract void SetupRequest(HttpWebRequestAbstraction request, LinkbackSendParameters parameters);