protected async override Task <HttpResponseMessage> SendAsync(HttpRequestMessage request, System.Threading.CancellationToken cancellationToken) { var sendParameter = parameters; if (request.Method == HttpMethod.Post) { // form url encoded content if (request.Content is FormUrlEncodedContent) { // url encoded string var extraParameter = await request.Content.ReadAsStringAsync().ConfigureAwait(false); var parsed = Utility.ParseQueryString(extraParameter, true); // url decoded sendParameter = sendParameter.Concat(parsed); request.Content = new FormUrlEncodedContentEx(parsed); } } var headerParams = OAuthUtility.BuildBasicParameters( consumerKey, consumerSecret, request.RequestUri.OriginalString, request.Method, token, sendParameter); headerParams = headerParams.Concat(parameters); var header = headerParams.Select(p => p.Key + "=" + p.Value.Wrap("\"")).ToString(","); request.Headers.Authorization = new AuthenticationHeaderValue("OAuth", header); return(await base.SendAsync(request, cancellationToken).ConfigureAwait(false)); }
protected override async Task <HttpResponseMessage> SendAsync(HttpRequestMessage request, System.Threading.CancellationToken cancellationToken) { var encodedSendParams = parameters.Select( s => new KeyValuePair <string, string>(s.Key.UrlEncode(), s.Value.UrlEncode())); if (request.Method == HttpMethod.Post || request.Method == HttpMethod.Put) { // form url encoded content if (request.Content is FormUrlEncodedContent) { // url encoded string var extraParameter = await request.Content.ReadAsStringAsync().ConfigureAwait(false); var parsed = Utility.SplitQueryString(extraParameter).ToArray(); request.Content = new PseudoFormUrlEncodedContent(parsed); encodedSendParams = encodedSendParams.Concat(parsed); // preserve encoded } } var headerParams = OAuthUtility.BuildBasicParameters( consumerKey, consumerSecret, request.RequestUri.OriginalString, request.Method, token, encodedSendParams); headerParams = headerParams.Concat(parameters); var header = headerParams.Select(p => p.Key + "=" + p.Value.Wrap("\"")).ToString(","); request.Headers.Authorization = new AuthenticationHeaderValue("OAuth", header); return(await base.SendAsync(request, cancellationToken).ConfigureAwait(false)); }