summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrew Arnott <andrewarnott@gmail.com>2008-09-30 20:40:46 -0700
committerAndrew <andrewarnott@gmail.com>2008-10-02 07:34:02 -0700
commitf6b7de466fb084a87c6de7a6d1e7f15db835bf20 (patch)
tree7f95fbe40c86d9f3a61c3ef1ff2dc65d953e1470
parent26813f1d37d82ad29a545df7c48fbde82228b80d (diff)
downloadDotNetOpenAuth-f6b7de466fb084a87c6de7a6d1e7f15db835bf20.zip
DotNetOpenAuth-f6b7de466fb084a87c6de7a6d1e7f15db835bf20.tar.gz
DotNetOpenAuth-f6b7de466fb084a87c6de7a6d1e7f15db835bf20.tar.bz2
Exposed more message types to enable Service Provider scenarios.
-rw-r--r--src/DotNetOAuth/Messages/AccessProtectedResourcesMessage.cs12
-rw-r--r--src/DotNetOAuth/Messages/DirectUserToConsumerMessage.cs2
-rw-r--r--src/DotNetOAuth/Messages/DirectUserToServiceProviderMessage.cs4
-rw-r--r--src/DotNetOAuth/Messages/GrantAccessTokenMessage.cs4
-rw-r--r--src/DotNetOAuth/Messages/MessageBase.cs2
-rw-r--r--src/DotNetOAuth/Messages/RequestAccessTokenMessage.cs14
-rw-r--r--src/DotNetOAuth/Messages/RequestTokenMessage.cs2
-rw-r--r--src/DotNetOAuth/Messages/SignedMessageBase.cs2
-rw-r--r--src/DotNetOAuth/Messages/UnauthorizedRequestTokenMessage.cs4
-rw-r--r--src/DotNetOAuth/ServiceProvider.cs79
10 files changed, 68 insertions, 57 deletions
diff --git a/src/DotNetOAuth/Messages/AccessProtectedResourcesMessage.cs b/src/DotNetOAuth/Messages/AccessProtectedResourcesMessage.cs
index 34a1c9e..6b0dc96 100644
--- a/src/DotNetOAuth/Messages/AccessProtectedResourcesMessage.cs
+++ b/src/DotNetOAuth/Messages/AccessProtectedResourcesMessage.cs
@@ -22,17 +22,17 @@ namespace DotNetOAuth.Messages {
}
/// <summary>
- /// Gets or sets the Access Token.
- /// </summary>
- [MessagePart(Name = "oauth_token", IsRequired = true)]
- public string AccessToken { get; set; }
-
- /// <summary>
/// Gets or sets the Token.
/// </summary>
string ITokenContainingMessage.Token {
get { return this.AccessToken; }
set { this.AccessToken = value; }
}
+
+ /// <summary>
+ /// Gets or sets the Access Token.
+ /// </summary>
+ [MessagePart(Name = "oauth_token", IsRequired = true)]
+ internal string AccessToken { get; set; }
}
}
diff --git a/src/DotNetOAuth/Messages/DirectUserToConsumerMessage.cs b/src/DotNetOAuth/Messages/DirectUserToConsumerMessage.cs
index fe685c8..b13c48c 100644
--- a/src/DotNetOAuth/Messages/DirectUserToConsumerMessage.cs
+++ b/src/DotNetOAuth/Messages/DirectUserToConsumerMessage.cs
@@ -24,6 +24,6 @@ namespace DotNetOAuth.Messages {
/// Gets or sets the Request Token.
/// </summary>
[MessagePart(Name = "oauth_token", IsRequired = true)]
- public string RequestToken { get; set; }
+ internal string RequestToken { get; set; }
}
}
diff --git a/src/DotNetOAuth/Messages/DirectUserToServiceProviderMessage.cs b/src/DotNetOAuth/Messages/DirectUserToServiceProviderMessage.cs
index 0bf1948..65e83aa 100644
--- a/src/DotNetOAuth/Messages/DirectUserToServiceProviderMessage.cs
+++ b/src/DotNetOAuth/Messages/DirectUserToServiceProviderMessage.cs
@@ -11,7 +11,7 @@ namespace DotNetOAuth.Messages {
/// <summary>
/// A message used to redirect the user from a Consumer to a Service Provider's web site.
/// </summary>
- internal class DirectUserToServiceProviderMessage : MessageBase {
+ public class DirectUserToServiceProviderMessage : MessageBase {
/// <summary>
/// Initializes a new instance of the <see cref="DirectUserToServiceProviderMessage"/> class.
/// </summary>
@@ -36,6 +36,6 @@ namespace DotNetOAuth.Messages {
/// to the Consumer when Obtaining User Authorization is complete. Optional.
/// </summary>
[MessagePart(Name = "oauth_callback", IsRequired = false)]
- public Uri Callback { get; set; }
+ internal Uri Callback { get; set; }
}
}
diff --git a/src/DotNetOAuth/Messages/GrantAccessTokenMessage.cs b/src/DotNetOAuth/Messages/GrantAccessTokenMessage.cs
index 9c55871..bbc44cc 100644
--- a/src/DotNetOAuth/Messages/GrantAccessTokenMessage.cs
+++ b/src/DotNetOAuth/Messages/GrantAccessTokenMessage.cs
@@ -23,12 +23,12 @@ namespace DotNetOAuth.Messages {
/// Gets or sets the Access Token assigned by the Service Provider.
/// </summary>
[MessagePart(Name = "oauth_token", IsRequired = true)]
- public string AccessToken { get; set; }
+ internal string AccessToken { get; set; }
/// <summary>
/// Gets or sets the Token Secret.
/// </summary>
[MessagePart(Name = "oauth_token_secret", IsRequired = true)]
- public string TokenSecret { get; set; }
+ internal string TokenSecret { get; set; }
}
}
diff --git a/src/DotNetOAuth/Messages/MessageBase.cs b/src/DotNetOAuth/Messages/MessageBase.cs
index 5edd936..2340bee 100644
--- a/src/DotNetOAuth/Messages/MessageBase.cs
+++ b/src/DotNetOAuth/Messages/MessageBase.cs
@@ -16,7 +16,7 @@ namespace DotNetOAuth.Messages {
/// <summary>
/// A base class for all OAuth messages.
/// </summary>
- internal abstract class MessageBase : IOAuthDirectedMessage {
+ public abstract class MessageBase : IOAuthDirectedMessage {
/// <summary>
/// A store for extra name/value data pairs that are attached to this message.
/// </summary>
diff --git a/src/DotNetOAuth/Messages/RequestAccessTokenMessage.cs b/src/DotNetOAuth/Messages/RequestAccessTokenMessage.cs
index 62e413a..6d334e7 100644
--- a/src/DotNetOAuth/Messages/RequestAccessTokenMessage.cs
+++ b/src/DotNetOAuth/Messages/RequestAccessTokenMessage.cs
@@ -12,7 +12,7 @@ namespace DotNetOAuth.Messages {
/// A direct message sent by the Consumer to exchange a Request Token for an Access Token
/// and Token Secret.
/// </summary>
- internal class RequestAccessTokenMessage : SignedMessageBase, ITokenContainingMessage {
+ public class RequestAccessTokenMessage : SignedMessageBase, ITokenContainingMessage {
/// <summary>
/// Initializes a new instance of the <see cref="RequestAccessTokenMessage"/> class.
/// </summary>
@@ -22,17 +22,17 @@ namespace DotNetOAuth.Messages {
}
/// <summary>
- /// Gets or sets the Request Token.
- /// </summary>
- [MessagePart(Name = "oauth_token", IsRequired = true)]
- public string RequestToken { get; set; }
-
- /// <summary>
/// Gets or sets the Token.
/// </summary>
string ITokenContainingMessage.Token {
get { return this.RequestToken; }
set { this.RequestToken = value; }
}
+
+ /// <summary>
+ /// Gets or sets the Request Token.
+ /// </summary>
+ [MessagePart(Name = "oauth_token", IsRequired = true)]
+ internal string RequestToken { get; set; }
}
}
diff --git a/src/DotNetOAuth/Messages/RequestTokenMessage.cs b/src/DotNetOAuth/Messages/RequestTokenMessage.cs
index 5d77693..727cde0 100644
--- a/src/DotNetOAuth/Messages/RequestTokenMessage.cs
+++ b/src/DotNetOAuth/Messages/RequestTokenMessage.cs
@@ -10,7 +10,7 @@ namespace DotNetOAuth.Messages {
/// <summary>
/// A direct message sent from Consumer to Service Provider to request a token.
/// </summary>
- internal class RequestTokenMessage : SignedMessageBase {
+ public class RequestTokenMessage : SignedMessageBase {
/// <summary>
/// Initializes a new instance of the <see cref="RequestTokenMessage"/> class.
/// </summary>
diff --git a/src/DotNetOAuth/Messages/SignedMessageBase.cs b/src/DotNetOAuth/Messages/SignedMessageBase.cs
index 1b52f7e..88e6239 100644
--- a/src/DotNetOAuth/Messages/SignedMessageBase.cs
+++ b/src/DotNetOAuth/Messages/SignedMessageBase.cs
@@ -14,7 +14,7 @@ namespace DotNetOAuth.Messages {
/// <summary>
/// A base class for all signed OAuth messages.
/// </summary>
- internal class SignedMessageBase : MessageBase, ITamperResistantOAuthMessage, IExpiringProtocolMessage, IReplayProtectedProtocolMessage {
+ public class SignedMessageBase : MessageBase, ITamperResistantOAuthMessage, IExpiringProtocolMessage, IReplayProtectedProtocolMessage {
/// <summary>
/// The reference date and time for calculating time stamps.
/// </summary>
diff --git a/src/DotNetOAuth/Messages/UnauthorizedRequestTokenMessage.cs b/src/DotNetOAuth/Messages/UnauthorizedRequestTokenMessage.cs
index 68e9c49..bbeeb31 100644
--- a/src/DotNetOAuth/Messages/UnauthorizedRequestTokenMessage.cs
+++ b/src/DotNetOAuth/Messages/UnauthorizedRequestTokenMessage.cs
@@ -23,12 +23,12 @@ namespace DotNetOAuth.Messages {
/// Gets or sets the Request Token.
/// </summary>
[MessagePart(Name = "oauth_token", IsRequired = true)]
- public string RequestToken { get; set; }
+ internal string RequestToken { get; set; }
/// <summary>
/// Gets or sets the Token Secret.
/// </summary>
[MessagePart(Name = "oauth_token_secret", IsRequired = true)]
- public string TokenSecret { get; set; }
+ internal string TokenSecret { get; set; }
}
}
diff --git a/src/DotNetOAuth/ServiceProvider.cs b/src/DotNetOAuth/ServiceProvider.cs
index 493cd09..c43d46f 100644
--- a/src/DotNetOAuth/ServiceProvider.cs
+++ b/src/DotNetOAuth/ServiceProvider.cs
@@ -54,11 +54,6 @@ namespace DotNetOAuth {
public ServiceProviderDescription Description { get; private set; }
/// <summary>
- /// Gets or sets the channel to use for sending/receiving messages.
- /// </summary>
- internal OAuthChannel Channel { get; set; }
-
- /// <summary>
/// Gets or sets the generator responsible for generating new tokens and secrets.
/// </summary>
public ITokenGenerator TokenGenerator { get; set; }
@@ -68,19 +63,20 @@ namespace DotNetOAuth {
/// </summary>
public ITokenManager TokenManager { get; private set; }
- internal RequestTokenMessage ReadTokenRequest() {
+ /// <summary>
+ /// Gets or sets the channel to use for sending/receiving messages.
+ /// </summary>
+ internal OAuthChannel Channel { get; set; }
+
+ public RequestTokenMessage ReadTokenRequest() {
return this.Channel.ReadFromRequest<RequestTokenMessage>();
}
- internal RequestTokenMessage ReadTokenRequest(HttpRequest request) {
+ public RequestTokenMessage ReadTokenRequest(HttpRequest request) {
return this.ReadTokenRequest(new HttpRequestInfo(request));
}
- internal RequestTokenMessage ReadTokenRequest(HttpRequestInfo request) {
- return this.Channel.ReadFromRequest<RequestTokenMessage>(request);
- }
-
- internal void SendUnauthorizedTokenResponse(RequestTokenMessage request, IDictionary<string, string> extraParameters) {
+ public Response SendUnauthorizedTokenResponse(RequestTokenMessage request, IDictionary<string, string> extraParameters) {
string token = this.TokenGenerator.GenerateRequestToken(request.ConsumerKey);
string secret = this.TokenGenerator.GenerateSecret();
this.TokenManager.StoreNewRequestToken(request.ConsumerKey, token, secret, null/*add params*/);
@@ -90,46 +86,49 @@ namespace DotNetOAuth {
};
response.AddNonOAuthParameters(extraParameters);
- this.Channel.Send(response);
+ return this.Channel.Send(response);
}
- internal DirectUserToServiceProviderMessage ReadAuthorizationRequest() {
+ public DirectUserToServiceProviderMessage ReadAuthorizationRequest() {
return this.Channel.ReadFromRequest<DirectUserToServiceProviderMessage>();
}
- internal DirectUserToServiceProviderMessage ReadAuthorizationRequest(HttpRequest request) {
+ public DirectUserToServiceProviderMessage ReadAuthorizationRequest(HttpRequest request) {
return this.ReadAuthorizationRequest(new HttpRequestInfo(request));
}
- internal DirectUserToServiceProviderMessage ReadAuthorizationRequest(HttpRequestInfo request) {
- return this.Channel.ReadFromRequest<DirectUserToServiceProviderMessage>(request);
- }
-
/// <summary>
///
/// </summary>
/// <param name="request"></param>
- /// <returns>The pending user agent redirect based message to be sent as an HttpResponse.</returns>
- internal Response SendAuthorizationResponse(DirectUserToServiceProviderMessage request) {
- var authorization = new DirectUserToConsumerMessage(request.Callback) {
- RequestToken = request.RequestToken,
- };
- return this.Channel.Send(authorization);
+ /// <returns>
+ /// The pending user agent redirect based message to be sent as an HttpResponse,
+ /// or null if the Consumer requested no callback.
+ /// </returns>
+ public Response SendAuthorizationResponse(DirectUserToServiceProviderMessage request) {
+ if (request == null) {
+ throw new ArgumentNullException("request");
+ }
+
+ if (request.Callback != null) {
+ var authorization = new DirectUserToConsumerMessage(request.Callback) {
+ RequestToken = request.RequestToken,
+ };
+ return this.Channel.Send(authorization);
+ } else {
+ return null;
+ }
}
- internal RequestAccessTokenMessage ReadAccessTokenRequest() {
+ public RequestAccessTokenMessage ReadAccessTokenRequest() {
return this.Channel.ReadFromRequest<RequestAccessTokenMessage>();
}
- internal RequestAccessTokenMessage ReadAccessTokenRequest(HttpRequest request) {
+ public RequestAccessTokenMessage ReadAccessTokenRequest(HttpRequest request) {
return this.ReadAccessTokenRequest(new HttpRequestInfo(request));
}
- internal RequestAccessTokenMessage ReadAccessTokenRequest(HttpRequestInfo request) {
- return this.Channel.ReadFromRequest<RequestAccessTokenMessage>(request);
- }
-
- internal void SendAccessToken(RequestAccessTokenMessage request, IDictionary<string, string> extraParameters) {
+ public Response SendAccessToken(RequestAccessTokenMessage request, IDictionary<string, string> extraParameters) {
if (!this.TokenManager.IsRequestTokenAuthorized(request.RequestToken)) {
throw new ProtocolException(
string.Format(
@@ -147,10 +146,10 @@ namespace DotNetOAuth {
};
grantAccess.AddNonOAuthParameters(extraParameters);
- this.Channel.Send(grantAccess);
+ return this.Channel.Send(grantAccess);
}
- internal string GetAccessTokenInRequest() {
+ public string GetAccessTokenInRequest() {
var accessMessage = this.Channel.ReadFromRequest<AccessProtectedResourcesMessage>();
if (this.TokenManager.GetTokenType(accessMessage.AccessToken) != TokenType.AccessToken) {
throw new ProtocolException(
@@ -163,6 +162,18 @@ namespace DotNetOAuth {
return accessMessage.AccessToken;
}
+ internal RequestTokenMessage ReadTokenRequest(HttpRequestInfo request) {
+ return this.Channel.ReadFromRequest<RequestTokenMessage>(request);
+ }
+
+ internal DirectUserToServiceProviderMessage ReadAuthorizationRequest(HttpRequestInfo request) {
+ return this.Channel.ReadFromRequest<DirectUserToServiceProviderMessage>(request);
+ }
+
+ internal RequestAccessTokenMessage ReadAccessTokenRequest(HttpRequestInfo request) {
+ return this.Channel.ReadFromRequest<RequestAccessTokenMessage>(request);
+ }
+
private void TokenSignatureVerificationCallback(ITamperResistantOAuthMessage message) {
message.ConsumerSecret = this.TokenManager.GetConsumerSecret(message.ConsumerKey);