Пример #1
0
        /// <summary>
        /// Retreive routing info for the supplied topic.
        /// </summary>
        /// <param name="topic">The topic for which routing is being retreived</param>
        /// <returns>RoutingInfo or null</returns>
        public RoutingInfo RetrieveRoutingInfo(string topic)
        {
            Log.DebugFormat("Getting routing info for topic {0}", topic);

            // the routing that we'll return
            RoutingInfo routing = null;

            // take the template expression provided by the user and create
            // the complete URL of the GTS
            string urlString = string.Format(_urlExpression, topic);

            // log the url for debugging purposes
            Log.DebugFormat("Calling GTS with url {0}", urlString);

            try
            {
                // use the web request factory to create a web request
                WebRequest request = _webRequestFactory.CreateRequest(urlString);

                // get some response to the request
                using (Stream responseStream = request.GetResponse().GetResponseStream())
                {
                    routing = _serializer.Deserialize(responseStream);
                }
            }
            catch (Exception ex)
            {
                Log.Error("Failed to get RoutingInfo from the GTS.", ex);
            }

            return(routing);
        }
        private IWebRequest CreateRequest(string apiEndpoint, string method = "GET")
        {
            var req = _webFactory.CreateRequest("http://ci.appveyor.com/api/", apiEndpoint, method);

            req.ContentType = "application/json";
            req.AddHeader("Authorization", "Bearer " + _apiToken);
            return(req);
        }
        private IWebRequest CreateRequest(string apiRoot, string apiEndpoint, string method = "GET")
        {
            var req = _webFactory.CreateRequest(apiRoot, apiEndpoint, method);

            req.ContentType = "application/xml";
            req.Accept      = "application/json";
            req.AddHeader("Authorization", "Basic " + _webio.GetHttpBasicAuthToken(_username, _password));
            return(req);
        }
        public WebRequest GetWebRequest(DownloadFileInfo file)
        {
            if (file == null)
            {
                throw new ArgumentNullException("file");
            }

            WebRequest webRequest = m_WebRequestFactory.CreateRequest(file.Uri);

            webRequest.Timeout = 30000;

            SetCredentials(file, webRequest);

            return(webRequest);
        }
Пример #5
0
        public IMutableWebRequest Build()
        {
            var proxyRequest = _webRequestFactory.CreateRequest(_request.RawUrl);

            // Set property headers
            proxyRequest.Method                 = _request.Method;
            proxyRequest.ProtocolVersion        = _request.ProtocolVersion;
            proxyRequest.Accept                 = String.Join(";", _request.AcceptTypes);
            proxyRequest.AutomaticDecompression = DecompressionMethods.Deflate | DecompressionMethods.GZip;
            proxyRequest.ContentLength          = _request.ContentLength;
            proxyRequest.ContentType            = _request.ContentType;
            proxyRequest.Host      = _request.Host;
            proxyRequest.KeepAlive = _request.KeepAlive;
            proxyRequest.UserAgent = _request.UserAgent;

            // Set property headers from headers
            if (_request.Headers.ContainsKey("Connection"))
            {
                proxyRequest.Connection = _request.Headers["Connection"];
            }
            if (_request.Headers.ContainsKey("Date"))
            {
                DateTime date;
                if (DateTime.TryParse(_request.Headers["Date"], out date))
                {
                    proxyRequest.Date = date;
                }
            }
            if (_request.Headers.ContainsKey("Expect"))
            {
                proxyRequest.Expect = _request.Headers["Expect"];
            }
            if (_request.Headers.ContainsKey("If-Modified-Since"))
            {
                DateTime ifModifiedSince;
                if (DateTime.TryParse(_request.Headers["If-Modified-Since"], out ifModifiedSince))
                {
                    proxyRequest.IfModifiedSince = ifModifiedSince;
                }
            }
            if (_request.Headers.ContainsKey("Referer"))
            {
                proxyRequest.Referer = _request.Headers["Referer"];
            }

            // Set cookies
            foreach (var cookie in _request.Cookies)
            {
                if (String.IsNullOrWhiteSpace(cookie.Domain))
                {
                    cookie.Domain = _request.Host;
                }

                proxyRequest.Cookies.Add(cookie);
            }
            // Set other headers
            foreach (var header in _request.Headers)
            {
                if (header.Key.StartsWith("Proxy-"))
                {
                    continue; // Ignore proxy headers
                }
                if (PropertyHeaders.Contains(header.Key))
                {
                    continue; // Ignore headers set in properties.
                }
                proxyRequest.Headers.Add(header.Key, header.Value);
            }

            if (_request.HasEntityBody)
            {
                // Copy over request stream
                var proxyStream   = proxyRequest.GetStream();
                var requestStream = _request.GetStream();
                requestStream.CopyTo(proxyStream);
            }
            return(proxyRequest);
        }