From 4f42ed719abf53d6a242bc10975ddc7723e9d5e4 Mon Sep 17 00:00:00 2001 From: Tobias Klika Date: Sun, 11 May 2014 22:54:44 +0200 Subject: [PATCH] separate HttpClient for parser API --- PocketSharp/PocketClient.cs | 42 ++++++++++++++++++++++++------------- 1 file changed, 27 insertions(+), 15 deletions(-) diff --git a/PocketSharp/PocketClient.cs b/PocketSharp/PocketClient.cs index d4fe6a3..362fafd 100644 --- a/PocketSharp/PocketClient.cs +++ b/PocketSharp/PocketClient.cs @@ -22,6 +22,11 @@ namespace PocketSharp /// protected readonly HttpClient _restClient; + /// + /// REST client used for the API communication with the Text Parser API + /// + protected readonly HttpClient _restParserClient; + /// /// Caches HTTP headers from last response /// @@ -42,11 +47,6 @@ namespace PocketSharp /// protected string authentificationUri = "https://getpocket.com/auth/authorize?request_token={0}&redirect_uri={1}&mobile={2}"; - /// - /// The parser API URL - /// - protected Uri parserUri = null; - /// /// Indicates, whether this client is used for mobile or desktop /// @@ -130,10 +130,21 @@ namespace PocketSharp CallbackUri = Uri.EscapeUriString(callbackUri.ToString()); } - // assign text parser uri if submitted + // assign text parser if parserUri submitted if (parserUri != null) { - this.parserUri = parserUri; + _restParserClient = new HttpClient(handler ?? new HttpClientHandler() + { + AutomaticDecompression = DecompressionMethods.Deflate | DecompressionMethods.GZip + }); + _restParserClient.BaseAddress = parserUri; + _restParserClient.DefaultRequestHeaders.Add("Accept", "*/*"); + _restParserClient.DefaultRequestHeaders.Add("X-Accept", "application/json"); + + if (timeout.HasValue) + { + _restParserClient.Timeout = TimeSpan.FromSeconds(timeout.Value); + } } // initialize REST client @@ -183,16 +194,10 @@ namespace PocketSharp // rewrite base if it is a request to the Parser API if (isReaderRequest) { - if (parserUri == null) + if (_restParserClient == null) { throw new PocketException("Please pass the parserUri in the PocketClient ctor."); } - - _restClient.BaseAddress = parserUri; - } - else - { - _restClient.BaseAddress = baseUri; } // every single Pocket API endpoint requires HTTP POST data @@ -225,7 +230,14 @@ namespace PocketSharp // make async request try { - response = await _restClient.SendAsync(request, cancellationToken); + if (isReaderRequest) + { + response = await _restParserClient.SendAsync(request, cancellationToken); + } + else + { + response = await _restClient.SendAsync(request, cancellationToken); + } } catch (HttpRequestException exc) {