namespace DotNetOpenAuth.OAuth { using System; using System.Collections.Generic; using System.Linq; using System.Net.Http; using System.Text; using System.Threading; using System.Threading.Tasks; using DotNetOpenAuth.Messaging; using Validation; public class OAuth1HttpMessageHandler : DelegatingHandler { /// /// Initializes a new instance of the class. /// /// The consumer. /// The access token. public OAuth1HttpMessageHandler(ConsumerBase consumer = null, string accessToken = null) { this.Consumer = consumer; this.AccessToken = accessToken; } /// /// Initializes a new instance of the class. /// /// The inner handler. /// The consumer. /// The access token. public OAuth1HttpMessageHandler(HttpMessageHandler innerHandler, ConsumerBase consumer = null, string accessToken = null) : base(innerHandler) { this.Consumer = consumer; this.AccessToken = accessToken; } public string AccessToken { get; set; } public ConsumerBase Consumer { get; set; } protected override async Task SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) { Verify.Operation(this.Consumer != null, Strings.RequiredPropertyNotYetPreset, "Consumer"); Verify.Operation(!string.IsNullOrEmpty(this.AccessToken), Strings.RequiredPropertyNotYetPreset, "AccessToken"); var deliveryMethods = MessagingUtilities.GetHttpDeliveryMethod(request.Method.Method) | HttpDeliveryMethods.AuthorizationHeaderRequest; var signed = await this.Consumer.PrepareAuthorizedRequestAsync( new MessageReceivingEndpoint(request.RequestUri, deliveryMethods), this.AccessToken, cancellationToken); request.Headers.Authorization = signed.Headers.Authorization; return await base.SendAsync(request, cancellationToken); } } }