diff options
author | Andrew Arnott <andrewarnott@gmail.com> | 2008-04-15 21:15:24 -0700 |
---|---|---|
committer | Andrew Arnott <andrewarnott@gmail.com> | 2008-04-15 22:23:48 -0700 |
commit | ea36fd5a24e311cfa399fd36f86b7ec55113cc8f (patch) | |
tree | 42bf3c147a7c7adc9da0cd87b5c2d299943647a7 /src/DotNetOpenId/Extensions/AttributeExchangeFetchRequest.cs | |
parent | bedb0be63a15af113ce584b3e24f01a2b9daa1a1 (diff) | |
download | DotNetOpenAuth-ea36fd5a24e311cfa399fd36f86b7ec55113cc8f.zip DotNetOpenAuth-ea36fd5a24e311cfa399fd36f86b7ec55113cc8f.tar.gz DotNetOpenAuth-ea36fd5a24e311cfa399fd36f86b7ec55113cc8f.tar.bz2 |
BREAKING CHANGE for SimpleRegistration extension, and other stuff.
* SimpleRegistration changed from struct to class.
* SimpleRegistrationFieldValues.None and SimpleRegistrationRequestFields.None removed.
* Semantic for extension classes that ReadFromRequest or ReadFromResponse and don't find any matching parameters changed from returning an empty struct to returning null.
* Added framework for testing extensions.
* Upgraded TestWeb project to .NET 3.5.
* Built up bare framework for sending/receiving Attribute Exchange extension messages.
Diffstat (limited to 'src/DotNetOpenId/Extensions/AttributeExchangeFetchRequest.cs')
-rw-r--r-- | src/DotNetOpenId/Extensions/AttributeExchangeFetchRequest.cs | 40 |
1 files changed, 29 insertions, 11 deletions
diff --git a/src/DotNetOpenId/Extensions/AttributeExchangeFetchRequest.cs b/src/DotNetOpenId/Extensions/AttributeExchangeFetchRequest.cs index ad27769..245f19a 100644 --- a/src/DotNetOpenId/Extensions/AttributeExchangeFetchRequest.cs +++ b/src/DotNetOpenId/Extensions/AttributeExchangeFetchRequest.cs @@ -1,27 +1,45 @@ using System;
using System.Collections.Generic;
using System.Text;
-using DotNetOpenId.RelyingParty;
+using System.Globalization;
namespace DotNetOpenId.Extensions {
/// <summary>
/// The Attribute Exchange Fetch message, request leg.
/// </summary>
- public struct AttributeExchangeFetchRequest {
- /// <summary>
- /// Adds the properties of this Attribute Exchange request to an outgoing
- /// OpenID authentication request.
- /// </summary>
- public void AddToRequest(Provider.IAuthenticationRequest authenticationRequest) {
- throw new NotImplementedException();
- }
+ public class AttributeExchangeFetchRequest : IExtensionRequest {
+ readonly string Mode = "fetch_request";
+
/// <summary>
/// Reads an incoming authentication request (from a relying party)
/// for Attribute Exchange properties and returns an instance of this
/// struct with them.
/// </summary>
- public static AttributeExchangeFetchRequest ReadFromRequest(IAuthenticationResponse response) {
- throw new NotImplementedException();
+ public static AttributeExchangeFetchRequest ReadFromRequest(Provider.IRequest request) {
+ var obj = new AttributeExchangeFetchRequest();
+ return ((IExtensionRequest)obj).ReadFromRequest(request) ? obj : null;
}
+
+ #region IExtensionRequest Members
+ string IExtensionRequest.TypeUri { get { return Constants.ae.ns; } }
+
+ public void AddToRequest(RelyingParty.IAuthenticationRequest authenticationRequest) {
+ var fields = new Dictionary<string, string> {
+ { "mode", Mode },
+ };
+ authenticationRequest.AddExtensionArguments(Constants.ae.ns, fields);
+ }
+
+ bool IExtensionRequest.ReadFromRequest(DotNetOpenId.Provider.IRequest request) {
+ var fields = request.GetExtensionArguments(Constants.ae.ns);
+ if (fields == null) return false;
+ string mode;
+ fields.TryGetValue("mode", out mode);
+ if (mode != Mode) return false;
+
+ return true;
+ }
+
+ #endregion
}
}
|