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); }
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); }
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 }); }
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("&", "&")); var response = webRequest.GetResponse(); var scrapeResult = scraper.Scrape(response.GetResponseStream()); return scrapeResult; }
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()); }
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); } }