/// <summary> /// HTTP Get request for stream service. /// </summary> /// <param name="requestUri">Uri to make OAuth request.</param> /// <param name="tokens">Tokens to pass in request.</param> /// <param name="callback">Function invoked when stream available.</param> /// <returns>awaitable task</returns> public async Task ExecuteGetStreamAsync(Uri requestUri, TwitterOAuthTokens tokens, TwitterStreamCallbacks.RawJsonCallback callback) { using (var request = new HttpRequestMessage(HttpMethod.Get, requestUri)) { var requestBuilder = new TwitterOAuthRequestBuilder(requestUri, tokens); request.Headers.Authorization = AuthenticationHeaderValue.Parse(requestBuilder.AuthorizationHeader); using (var response = await client.SendAsync(request, HttpCompletionOption.ResponseHeadersRead).ConfigureAwait(false)) { var responseStream = await response.Content.ReadAsStreamAsync().ConfigureAwait(false); using (var reader = new StreamReader(responseStream)) { while (!_abort && !reader.EndOfStream) { var result = reader.ReadLine(); if (!string.IsNullOrEmpty(result)) { callback?.Invoke(result); } } } } } }
/// <summary> /// HTTP Get request for stream service. /// </summary> /// <param name="requestUri">Uri to make OAuth request.</param> /// <param name="tokens">Tokens to pass in request.</param> /// <param name="callback">Function invoked when stream available.</param> /// <returns>awaitable task</returns> public async Task ExecuteGetStreamAsync(Uri requestUri, TwitterOAuthTokens tokens, TwitterStreamCallbacks.RawJsonCallback callback) { using (var request = new HttpHelperRequest(requestUri, HttpMethod.Get)) { var requestBuilder = new TwitterOAuthRequestBuilder(requestUri, tokens); request.Headers.Authorization = HttpCredentialsHeaderValue.Parse(requestBuilder.AuthorizationHeader); using (var response = await HttpHelper.Instance.GetInputStreamAsync(request).ConfigureAwait(false)) { var responseStream = await response.GetStreamResultAsync().ConfigureAwait(false); using (var reader = new StreamReader(responseStream.AsStreamForRead())) { while (!_abort && !reader.EndOfStream) { var result = reader.ReadLine(); if (!string.IsNullOrEmpty(result)) { callback?.Invoke(result); } } } } } }
private static HttpClient GetHttpClient(Uri requestUri, TwitterOAuthTokens tokens, string method = "GET") { var requestBuilder = new TwitterOAuthRequestBuilder(requestUri, tokens, method); var handler = new HttpClientHandler { AutomaticDecompression = DecompressionMethods.GZip }; var client = new HttpClient(handler); client.DefaultRequestHeaders.Add("Authorization", requestBuilder.AuthorizationHeader); return(client); }
/// <summary> /// HTTP Get request to specified Uri. /// </summary> /// <param name="requestUri">Uri to make OAuth request.</param> /// <param name="tokens">Tokens to pass in request.</param> /// <returns>String result.</returns> public async Task <string> ExecuteGetAsync(Uri requestUri, TwitterOAuthTokens tokens) { using (var request = new HttpRequestMessage(HttpMethod.Get, requestUri)) { var requestBuilder = new TwitterOAuthRequestBuilder(requestUri, tokens, "GET"); request.Headers.Authorization = AuthenticationHeaderValue.Parse(requestBuilder.AuthorizationHeader); using (var response = await client.SendAsync(request).ConfigureAwait(false)) { return(ProcessErrors(await response.Content.ReadAsStringAsync().ConfigureAwait(false))); } } }
/// <summary> /// HTTP Get request to specified Uri. /// </summary> /// <param name="requestUri">Uri to make OAuth request.</param> /// <param name="tokens">Tokens to pass in request.</param> /// <returns>String result.</returns> public async Task <string> ExecuteGetAsync(Uri requestUri, TwitterOAuthTokens tokens) { using (var request = new HttpHelperRequest(requestUri, HttpMethod.Get)) { var requestBuilder = new TwitterOAuthRequestBuilder(requestUri, tokens, "GET"); request.Headers.Authorization = HttpCredentialsHeaderValue.Parse(requestBuilder.AuthorizationHeader); using (var response = await HttpHelper.Instance.SendRequestAsync(request).ConfigureAwait(false)) { return(ProcessErrors(await response.GetTextResultAsync().ConfigureAwait(false))); } } }
/// <summary> /// HTTP Post request to specified Uri. /// </summary> /// <param name="requestUri">Uri to make OAuth request.</param> /// <param name="tokens">Tokens to pass in request.</param> /// <param name="boundary">Boundary used to separate data.</param> /// <param name="content">Data to post to server.</param> /// <returns>String result.</returns> public async Task <string> ExecutePostMultipartAsync(Uri requestUri, TwitterOAuthTokens tokens, string boundary, byte[] content) { JToken mediaId = null; try { using (var multipartFormDataContent = new MultipartFormDataContent(boundary)) { using (var byteContent = new ByteArrayContent(content)) { multipartFormDataContent.Add(byteContent, "media"); using (var request = new HttpRequestMessage(HttpMethod.Post, requestUri)) { var requestBuilder = new TwitterOAuthRequestBuilder(requestUri, tokens, "POST"); request.Headers.Authorization = AuthenticationHeaderValue.Parse(requestBuilder.AuthorizationHeader); request.Content = multipartFormDataContent; using (var response = await client.SendAsync(request).ConfigureAwait(false)) { string jsonResult = await response.Content.ReadAsStringAsync().ConfigureAwait(false); JObject jObj = JObject.Parse(jsonResult); mediaId = jObj["media_id_string"]; } } } } } catch (ObjectDisposedException) { // known issue // http://stackoverflow.com/questions/39109060/httpmultipartformdatacontent-dispose-throws-objectdisposedexception } return(mediaId.ToString()); }