//----------------------------------------------------------------------- // // Copyright (c) Andrew Arnott. All rights reserved. // //----------------------------------------------------------------------- namespace DotNetOpenAuth.OAuth.ChannelElements { using System; using System.Collections.Generic; using System.Linq; using System.Text; using DotNetOpenAuth.Messaging; /// /// Sets the HTTP Method property on a signed message before the signing module gets to it. /// internal class OAuthHttpMethodBindingElement : IChannelBindingElement { #region IChannelBindingElement Members /// /// Gets the protection offered (if any) by this binding element. /// public MessageProtections Protection { get { return MessageProtections.None; } } /// /// Gets or sets the channel that this binding element belongs to. /// public Channel Channel { get; set; } /// /// Prepares a message for sending based on the rules of this channel binding element. /// /// The message to prepare for sending. /// /// True if the applied to this binding element /// and the operation was successful. False otherwise. /// public MessageProtections? ProcessOutgoingMessage(IProtocolMessage message) { var oauthMessage = message as ITamperResistantOAuthMessage; if (oauthMessage != null) { HttpDeliveryMethods transmissionMethod = oauthMessage.HttpMethods; try { oauthMessage.HttpMethod = MessagingUtilities.GetHttpVerb(transmissionMethod); return MessageProtections.None; } catch (ArgumentException ex) { Logger.OAuth.Error("Unrecognized HttpDeliveryMethods value.", ex); return null; } } else { return null; } } /// /// Performs any transformation on an incoming message that may be necessary and/or /// validates an incoming message based on the rules of this channel binding element. /// /// The incoming message to process. /// /// True if the applied to this binding element /// and the operation was successful. False if the operation did not apply to this message. /// /// /// Thrown when the binding element rules indicate that this message is invalid and should /// NOT be processed. /// public MessageProtections? ProcessIncomingMessage(IProtocolMessage message) { return null; } #endregion } }