diff options
author | Andrew Arnott <andrewarnott@gmail.com> | 2008-09-26 08:43:40 -0700 |
---|---|---|
committer | Andrew <andrewarnott@gmail.com> | 2008-09-26 08:43:40 -0700 |
commit | d5e2339b50047e961a661f03d882dd555c45fd74 (patch) | |
tree | 7e357b8f749fa2c0edb132605840ea1846fd8aa9 | |
parent | 39078bd7bc118b968758c198765db7932752c9f4 (diff) | |
download | DotNetOpenAuth-d5e2339b50047e961a661f03d882dd555c45fd74.zip DotNetOpenAuth-d5e2339b50047e961a661f03d882dd555c45fd74.tar.gz DotNetOpenAuth-d5e2339b50047e961a661f03d882dd555c45fd74.tar.bz2 |
Fixed incoming OAuth message type discernment.
-rw-r--r-- | src/DotNetOAuth.Test/ChannelElements/OAuthChannelTests.cs | 2 | ||||
-rw-r--r-- | src/DotNetOAuth.Test/Scenarios/CoordinatingOAuthChannel.cs | 7 | ||||
-rw-r--r-- | src/DotNetOAuth/ChannelElements/OAuthChannel.cs | 5 | ||||
-rw-r--r-- | src/DotNetOAuth/ChannelElements/OAuthMessageTypeProvider.cs | 19 | ||||
-rw-r--r-- | src/DotNetOAuth/Consumer.cs | 2 | ||||
-rw-r--r-- | src/DotNetOAuth/ServiceProvider.cs | 2 |
6 files changed, 30 insertions, 7 deletions
diff --git a/src/DotNetOAuth.Test/ChannelElements/OAuthChannelTests.cs b/src/DotNetOAuth.Test/ChannelElements/OAuthChannelTests.cs index 048e1d8..38ca5f1 100644 --- a/src/DotNetOAuth.Test/ChannelElements/OAuthChannelTests.cs +++ b/src/DotNetOAuth.Test/ChannelElements/OAuthChannelTests.cs @@ -53,7 +53,7 @@ namespace DotNetOAuth.Test.ChannelElements { [TestMethod]
public void CtorSimple() {
- new OAuthChannel(this.signingElement, this.nonceStore);
+ new OAuthChannel(this.signingElement, this.nonceStore, new InMemoryTokenManager());
}
[TestMethod]
diff --git a/src/DotNetOAuth.Test/Scenarios/CoordinatingOAuthChannel.cs b/src/DotNetOAuth.Test/Scenarios/CoordinatingOAuthChannel.cs index 65254e2..49bec4c 100644 --- a/src/DotNetOAuth.Test/Scenarios/CoordinatingOAuthChannel.cs +++ b/src/DotNetOAuth.Test/Scenarios/CoordinatingOAuthChannel.cs @@ -12,6 +12,7 @@ namespace DotNetOAuth.Test.Scenarios { using DotNetOAuth.Messaging;
using DotNetOAuth.Messaging.Bindings;
using DotNetOAuth.Messaging.Reflection;
+ using DotNetOAuth.Test.Mocks;
/// <summary>
/// A special channel used in test simulations to pass messages directly between two parties.
@@ -27,7 +28,11 @@ namespace DotNetOAuth.Test.Scenarios { /// The signing element for the Consumer to use. Null for the Service Provider.
/// </param>
internal CoordinatingOAuthChannel(SigningBindingElementBase signingBindingElement)
- : base(signingBindingElement, new NonceMemoryStore(StandardExpirationBindingElement.DefaultMaximumMessageAge), new OAuthMessageTypeProvider(), new Mocks.TestWebRequestHandler()) {
+ : base(
+ signingBindingElement,
+ new NonceMemoryStore(StandardExpirationBindingElement.DefaultMaximumMessageAge),
+ new OAuthMessageTypeProvider(new InMemoryTokenManager()),
+ new TestWebRequestHandler()) {
}
/// <summary>
diff --git a/src/DotNetOAuth/ChannelElements/OAuthChannel.cs b/src/DotNetOAuth/ChannelElements/OAuthChannel.cs index 5ba69e7..2d0d1b4 100644 --- a/src/DotNetOAuth/ChannelElements/OAuthChannel.cs +++ b/src/DotNetOAuth/ChannelElements/OAuthChannel.cs @@ -31,8 +31,9 @@ namespace DotNetOAuth.ChannelElements { /// </summary>
/// <param name="signingBindingElement">The binding element to use for signing.</param>
/// <param name="store">The web application store to use for nonces.</param>
- internal OAuthChannel(SigningBindingElementBase signingBindingElement, INonceStore store)
- : this(signingBindingElement, store, new OAuthMessageTypeProvider(), new StandardWebRequestHandler()) {
+ /// <param name="tokenManager">The token manager instance to use.</param>
+ internal OAuthChannel(SigningBindingElementBase signingBindingElement, INonceStore store, ITokenManager tokenManager)
+ : this(signingBindingElement, store, new OAuthMessageTypeProvider(tokenManager), new StandardWebRequestHandler()) {
}
/// <summary>
diff --git a/src/DotNetOAuth/ChannelElements/OAuthMessageTypeProvider.cs b/src/DotNetOAuth/ChannelElements/OAuthMessageTypeProvider.cs index 0d30ec1..e0fdc01 100644 --- a/src/DotNetOAuth/ChannelElements/OAuthMessageTypeProvider.cs +++ b/src/DotNetOAuth/ChannelElements/OAuthMessageTypeProvider.cs @@ -15,6 +15,23 @@ namespace DotNetOAuth.ChannelElements { /// interface.
/// </summary>
internal class OAuthMessageTypeProvider : IMessageTypeProvider {
+ /// <summary>
+ /// The token manager to use for discerning between request and access tokens.
+ /// </summary>
+ private ITokenManager tokenManager;
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="OAuthMessageTypeProvider"/> class.
+ /// </summary>
+ /// <param name="tokenManager">The token manager instance to use.</param>
+ internal OAuthMessageTypeProvider(ITokenManager tokenManager) {
+ if (tokenManager == null) {
+ throw new ArgumentNullException("tokenManager");
+ }
+
+ this.tokenManager = tokenManager;
+ }
+
#region IMessageTypeProvider Members
/// <summary>
@@ -48,7 +65,7 @@ namespace DotNetOAuth.ChannelElements { // Discern between RequestAccessToken and AccessProtectedResources,
// which have all the same parameters, by figuring out what type of token
// is in the token parameter.
- bool tokenTypeIsAccessToken = false; // TODO
+ bool tokenTypeIsAccessToken = this.tokenManager.GetTokenType(fields["oauth_token"]) == TokenType.AccessToken;
return tokenTypeIsAccessToken ? typeof(AccessProtectedResourcesMessage) :
typeof(RequestAccessTokenMessage);
diff --git a/src/DotNetOAuth/Consumer.cs b/src/DotNetOAuth/Consumer.cs index ab3614a..c0fe705 100644 --- a/src/DotNetOAuth/Consumer.cs +++ b/src/DotNetOAuth/Consumer.cs @@ -32,7 +32,7 @@ namespace DotNetOAuth { this.WebRequestHandler = new StandardWebRequestHandler();
SigningBindingElementBase signingElement = new PlainTextSigningBindingElement();
INonceStore store = new NonceMemoryStore(StandardExpirationBindingElement.DefaultMaximumMessageAge);
- this.Channel = new OAuthChannel(signingElement, store, new OAuthMessageTypeProvider(), this.WebRequestHandler);
+ this.Channel = new OAuthChannel(signingElement, store, new OAuthMessageTypeProvider(tokenManager), this.WebRequestHandler);
this.ServiceProvider = endpoints;
this.TokenManager = tokenManager;
}
diff --git a/src/DotNetOAuth/ServiceProvider.cs b/src/DotNetOAuth/ServiceProvider.cs index 10b1673..db2d24b 100644 --- a/src/DotNetOAuth/ServiceProvider.cs +++ b/src/DotNetOAuth/ServiceProvider.cs @@ -41,7 +41,7 @@ namespace DotNetOAuth { SigningBindingElementBase signingElement = new PlainTextSigningBindingElement(this.TokenSignatureVerificationCallback);
INonceStore store = new NonceMemoryStore(StandardExpirationBindingElement.DefaultMaximumMessageAge);
this.Endpoints = endpoints;
- this.Channel = new OAuthChannel(signingElement, store);
+ this.Channel = new OAuthChannel(signingElement, store, tokenManager);
this.TokenGenerator = new StandardTokenGenerator();
this.TokenManager = tokenManager;
}
|