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);
}
}
}