Ejemplo n.º 1
0
        public void GetTokens(string code, Action <HttpStatusCode, OAuthTokens> onComplete, Action <Uri, Exception> onError)
        {
            var handler = new OAuthRequestHandler(_configuration);
            var request = _factory.Create(OAuthRequestHandler.OAuthRequestUri);

            handler.GetOAuthTokens(request, code, onComplete, onError);
        }
Ejemplo n.º 2
0
        public Task <DiscoveryResult> DiscoverAddress(string webAPI)
        {
            var completionSource = new TaskCompletionSource <DiscoveryResult>();

            var baseUri        = new Uri(webAPI, UriKind.Absolute);
            var requestUri     = new Uri(baseUri, "rsd.xml");
            var rsdFileRequest = webRequestFactory.Create(requestUri);

            // Kick off the async discovery workflow
            rsdFileRequest.GetResponseAsync()
            .ContinueWith <DiscoveryResult>(ProcessRsdResponse)
            .ContinueWith(c =>
            {
                if (c.Result.Success)
                {
                    completionSource.SetResult(c.Result);
                }
                else
                {
                    Trace.WriteLine(string.Format(
                                        "Rsd.xml does not exist, trying to discover via link. Error was {0}", c.Result.FailMessage), "INFO");

                    DiscoverRsdLink(webAPI)
                    .ContinueWith(t => completionSource.SetResult(t.Result));
                }
            });

            return(completionSource.Task);
        }
Ejemplo n.º 3
0
        public void MakeRequest(string uri, Action <HttpStatusCode, string, UserContract> onSuccess, Action <Uri, Exception> onError)
        {
            var request = _webRequestFactory.Create(new Uri(uri));

            request.BeginGetResponse(HandleResponseCallback <RequestContext <UserContract>, UserContract>, new RequestContext <UserContract> {
                Request = request, OnComplete = onSuccess, OnError = onError
            });
        }
Ejemplo n.º 4
0
 private void WrapApiRequestWithOAuthRenew(Action <OAuthTokens> apiRequest, Action <Uri, Exception> onError)
 {
     if (_keyService != null && _keyService.OAuthResponse.Maybe(_ => _.HasExpired))
     {
         var oauth = new OAuthRequestHandler(Configuration);
         oauth.RenewOAuthTokens(WebRequestFactory.Create(OAuthRequestHandler.OAuthRequestUri),
                                _keyService.OAuthResponse,
                                (code, response) =>
         {
             _keyService.OAuthResponse = response;
             apiRequest(response);
         },
                                onError);
     }
     else
     {
         apiRequest(_keyService.Maybe(_ => _.OAuthResponse));
     }
 }
        private static ScrapeResult Scrape(ILateFlightsScraper scraper, IWebRequestFactory requestFactory, string url)
        {
            var webRequest = requestFactory.Create(url.Replace("&amp;", "&"));

            var response = webRequest.GetResponse();

            var scrapeResult = scraper.Scrape(response.GetResponseStream());

            return scrapeResult;
        }
Ejemplo n.º 6
0
        protected XDocument GetXDocument(string url, string authInfo)
        {
            var request = WebRequestFactory.Create(url);

            if (!String.IsNullOrEmpty(authInfo))
            {
                request.Headers["Authorization"] = "Basic " + authInfo;
            }
            request.Method = "GET";

            return(GetXDocument(request));
        }
 private static IEnumerable<string> ScrapeDepartureAirports(ILateFlightsScraper scraper, IWebRequestFactory requestFactory)
 {
     return scraper.ScrapeDepartureAirports(requestFactory.Create("http://flights.thomson.co.uk/en/index.html").GetResponseStream());
 }
Ejemplo n.º 8
0
        public virtual bool Post()
        {
            try
            {
                // Create a request using a URL that can receive a post.
                var request = _webRequestFactory.Create(RequestUrl);
                request.Method                  = "POST";
                request.ContentType             = @"application/x-www-form-urlencoded";
                request.Headers["X-Auth-Token"] = _credentialRepository.GetApiKey();

                var parameters = new Dictionary <string, string>();
                PopulateRequestParameters(parameters);

                // Pack the parameters for form encoding.
                var buffer = new StringBuilder();
                var prefix = string.Empty;
                foreach (var parameter in parameters)
                {
                    buffer.AppendFormat("{0}{1}={2}", prefix, parameter.Key, parameter.Value);
                    prefix = "&";
                }

                // Encode the body for the request
                var byteArray = Encoding.UTF8.GetBytes(buffer.ToString());
                request.ContentLength = byteArray.Length;

                // Get the request stream and write the data to the request stream.
                using (var dataStream = request.GetRequestStream())
                {
                    dataStream.Write(byteArray, 0, byteArray.Length);
                }

                // Get the response and update the status
                _log.DebugFormat("Performing post to \"{0}\".", RequestUrl);
                var response = (IHttpWebResponse)request.GetResponse();
                ResponseStatus = response.StatusDescription;
                _log.DebugFormat("Received response with code [{0}].", response.StatusCode);

                // Pull the response data out and place it into the corresponding property.
                using (var responseStream = response.GetResponseStream())
                {
                    if (responseStream != null)
                    {
                        _log.DebugFormat("Reading response data for last request.");
                        var reader = new StreamReader(responseStream);
                        ResponseData = reader.ReadToEnd();
                    }
                    else
                    {
                        _log.DebugFormat("Response data is null for last request. Bypassing parsing.");
                    }
                }

                return(response.StatusCode == HttpStatusCode.OK);
            }
            catch (WebException ex)
            {
                _log.Error(string.Format("Failed posting to server.{0}{1}", Environment.NewLine, this), ex);
                return(false);
            }
        }