diff options
author | Andrew Arnott <andrewarnott@gmail.com> | 2009-12-15 22:17:20 -0800 |
---|---|---|
committer | Andrew Arnott <andrewarnott@gmail.com> | 2009-12-15 22:17:20 -0800 |
commit | e12782c1a6727390b2107ff2e39d4ac6173d86fc (patch) | |
tree | 3be0ccda0a9425927263f5b6b9616ef8ba11ac08 /src/DotNetOpenId/Extensions/AttributeExchange | |
parent | 078b1f350eb40ceee7423c25b1d833dd1f242da4 (diff) | |
parent | a545f7be2693596fa14540c359e43150a6a7cf88 (diff) | |
download | DotNetOpenAuth-origin/mono.zip DotNetOpenAuth-origin/mono.tar.gz DotNetOpenAuth-origin/mono.tar.bz2 |
Merge branch 'v2.5' into monoorigin/mono
Conflicts:
src/DotNetOpenId/Properties/AssemblyInfo.cs
src/DotNetOpenId/RelyingParty/AuthenticationResponse.cs
Diffstat (limited to 'src/DotNetOpenId/Extensions/AttributeExchange')
5 files changed, 44 insertions, 30 deletions
diff --git a/src/DotNetOpenId/Extensions/AttributeExchange/AttributeValues.cs b/src/DotNetOpenId/Extensions/AttributeExchange/AttributeValues.cs index e537d7f..19abc65 100644 --- a/src/DotNetOpenId/Extensions/AttributeExchange/AttributeValues.cs +++ b/src/DotNetOpenId/Extensions/AttributeExchange/AttributeValues.cs @@ -18,15 +18,18 @@ namespace DotNetOpenId.Extensions.AttributeExchange { internal AttributeValues() {
Values = new List<string>(1);
}
- internal AttributeValues(string typeUri)
- : this() {
+ internal AttributeValues(string typeUri) {
+ if (string.IsNullOrEmpty(typeUri)) throw new ArgumentNullException("typeUri");
TypeUri = typeUri;
+ Values = new List<string>(1);
}
- internal AttributeValues(string typeUri, params string[] values) {
+ /// <summary>
+ /// Instantiates an <see cref="AttributeValues"/> object.
+ /// </summary>
+ public AttributeValues(string typeUri, params string[] values) {
if (string.IsNullOrEmpty(typeUri)) throw new ArgumentNullException("typeUri");
- if (values == null) throw new ArgumentNullException("values");
TypeUri = typeUri;
- Values = values;
+ Values = values ?? new string[0];
}
/// <summary>
diff --git a/src/DotNetOpenId/Extensions/AttributeExchange/FetchRequest.cs b/src/DotNetOpenId/Extensions/AttributeExchange/FetchRequest.cs index b429643..1b64868 100644 --- a/src/DotNetOpenId/Extensions/AttributeExchange/FetchRequest.cs +++ b/src/DotNetOpenId/Extensions/AttributeExchange/FetchRequest.cs @@ -53,6 +53,9 @@ namespace DotNetOpenId.Extensions.AttributeExchange { #region IExtensionRequest Members
string IExtension.TypeUri { get { return Constants.TypeUri; } }
+ IEnumerable<string> IExtension.AdditionalSupportedTypeUris {
+ get { return new string[0]; }
+ }
IDictionary<string, string> IExtensionRequest.Serialize(RelyingParty.IAuthenticationRequest authenticationRequest) {
var fields = new Dictionary<string, string> {
@@ -84,7 +87,7 @@ namespace DotNetOpenId.Extensions.AttributeExchange { return fields;
}
- bool IExtensionRequest.Deserialize(IDictionary<string, string> fields, DotNetOpenId.Provider.IRequest request) {
+ bool IExtensionRequest.Deserialize(IDictionary<string, string> fields, DotNetOpenId.Provider.IRequest request, string typeUri) {
if (fields == null) return false;
string mode;
fields.TryGetValue("mode", out mode);
@@ -106,17 +109,16 @@ namespace DotNetOpenId.Extensions.AttributeExchange { allAliases.AddRange(requiredAliases);
allAliases.AddRange(optionalAliases);
if (allAliases.Count == 0) {
- if (TraceUtil.Switch.TraceError)
- Trace.TraceError("Attribute Exchange extension did not provide any aliases in the if_available or required lists.");
+ Logger.Error("Attribute Exchange extension did not provide any aliases in the if_available or required lists.");
return false;
}
AliasManager aliasManager = new AliasManager();
foreach (var alias in allAliases) {
- string typeUri;
- if (fields.TryGetValue("type." + alias, out typeUri)) {
- aliasManager.SetAlias(alias, typeUri);
+ string attributeTypeUri;
+ if (fields.TryGetValue("type." + alias, out attributeTypeUri)) {
+ aliasManager.SetAlias(alias, attributeTypeUri);
AttributeRequest att = new AttributeRequest {
- TypeUri = typeUri,
+ TypeUri = attributeTypeUri,
IsRequired = requiredAliases.Contains(alias),
};
string countString;
@@ -128,8 +130,7 @@ namespace DotNetOpenId.Extensions.AttributeExchange { if (int.TryParse(countString, out count) && count > 0) {
att.Count = count;
} else {
- if (TraceUtil.Switch.TraceError)
- Trace.TraceError("count." + alias + " could not be parsed into a positive integer.");
+ Logger.Error("count." + alias + " could not be parsed into a positive integer.");
}
}
} else {
@@ -137,8 +138,7 @@ namespace DotNetOpenId.Extensions.AttributeExchange { }
AddAttribute(att);
} else {
- if (TraceUtil.Switch.TraceError)
- Trace.TraceError("Type URI definition of alias " + alias + " is missing.");
+ Logger.Error("Type URI definition of alias " + alias + " is missing.");
}
}
@@ -149,8 +149,7 @@ namespace DotNetOpenId.Extensions.AttributeExchange { List<string> result = new List<string>();
if (string.IsNullOrEmpty(aliasList)) return result;
if (aliasList.Contains(".") || aliasList.Contains("\n")) {
- if (TraceUtil.Switch.TraceError)
- Trace.TraceError("Illegal characters found in Attribute Exchange alias list.");
+ Logger.ErrorFormat("Illegal characters found in Attribute Exchange alias list.");
return result;
}
result.AddRange(aliasList.Split(','));
diff --git a/src/DotNetOpenId/Extensions/AttributeExchange/FetchResponse.cs b/src/DotNetOpenId/Extensions/AttributeExchange/FetchResponse.cs index e31a8f1..1d58851 100644 --- a/src/DotNetOpenId/Extensions/AttributeExchange/FetchResponse.cs +++ b/src/DotNetOpenId/Extensions/AttributeExchange/FetchResponse.cs @@ -55,6 +55,9 @@ namespace DotNetOpenId.Extensions.AttributeExchange { #region IExtensionResponse Members
string IExtension.TypeUri { get { return Constants.TypeUri; } }
+ IEnumerable<string> IExtension.AdditionalSupportedTypeUris {
+ get { return new string[0]; }
+ }
IDictionary<string, string> IExtensionResponse.Serialize(Provider.IRequest authenticationRequest) {
var fields = new Dictionary<string, string> {
@@ -87,7 +90,7 @@ namespace DotNetOpenId.Extensions.AttributeExchange { }
}
- bool IExtensionResponse.Deserialize(IDictionary<string, string> fields, IAuthenticationResponse response) {
+ bool IExtensionResponse.Deserialize(IDictionary<string, string> fields, IAuthenticationResponse response, string typeUri) {
if (fields == null) return false;
string mode;
fields.TryGetValue("mode", out mode);
@@ -113,9 +116,8 @@ namespace DotNetOpenId.Extensions.AttributeExchange { bool countSent = false;
string countString;
if (fields.TryGetValue("count." + alias, out countString)) {
- if (!int.TryParse(countString, out count) || count <= 0) {
- if (TraceUtil.Switch.TraceError)
- Trace.TraceError("Failed to parse count.{0} value to a positive integer.");
+ if (!int.TryParse(countString, out count) || count < 0) {
+ Logger.ErrorFormat("Failed to parse count.{0} value to a non-negative integer.", alias);
continue;
}
countSent = true;
@@ -126,8 +128,7 @@ namespace DotNetOpenId.Extensions.AttributeExchange { if (fields.TryGetValue(string.Format(CultureInfo.InvariantCulture, "value.{0}.{1}", alias, i), out value)) {
att.Values.Add(value);
} else {
- if (TraceUtil.Switch.TraceError)
- Trace.TraceError("Missing value for attribute '{0}'.", att.TypeUri);
+ Logger.ErrorFormat("Missing value for attribute '{0}'.", att.TypeUri);
continue;
}
}
@@ -136,8 +137,7 @@ namespace DotNetOpenId.Extensions.AttributeExchange { if (fields.TryGetValue("value." + alias, out value))
att.Values.Add(value);
else {
- if (TraceUtil.Switch.TraceError)
- Trace.TraceError("Missing value for attribute '{0}'.", att.TypeUri);
+ Logger.ErrorFormat("Missing value for attribute '{0}'.", att.TypeUri);
continue;
}
}
@@ -152,8 +152,7 @@ namespace DotNetOpenId.Extensions.AttributeExchange { if (!pair.Key.StartsWith("type.", StringComparison.Ordinal)) continue;
string alias = pair.Key.Substring(5);
if (alias.IndexOfAny(new[] { '.', ',', ':' }) >= 0) {
- if (TraceUtil.Switch.TraceError)
- Trace.TraceError("Illegal characters in alias name '{0}'.", alias);
+ Logger.ErrorFormat("Illegal characters in alias name '{0}'.", alias);
continue;
}
aliasManager.SetAlias(alias, pair.Value);
diff --git a/src/DotNetOpenId/Extensions/AttributeExchange/StoreRequest.cs b/src/DotNetOpenId/Extensions/AttributeExchange/StoreRequest.cs index a7e2199..6b5ce2b 100644 --- a/src/DotNetOpenId/Extensions/AttributeExchange/StoreRequest.cs +++ b/src/DotNetOpenId/Extensions/AttributeExchange/StoreRequest.cs @@ -30,6 +30,13 @@ namespace DotNetOpenId.Extensions.AttributeExchange { attributesProvided.Add(attribute);
}
/// <summary>
+ /// Used by the Relying Party to add a given attribute with one or more values
+ /// to the request for storage.
+ /// </summary>
+ public void AddAttribute(string typeUri, params string[] values) {
+ AddAttribute(new AttributeValues(typeUri, values));
+ }
+ /// <summary>
/// Used by the Provider to gets the value(s) associated with a given attribute
/// that should be stored.
/// </summary>
@@ -46,6 +53,9 @@ namespace DotNetOpenId.Extensions.AttributeExchange { #region IExtensionRequest Members
string IExtension.TypeUri { get { return Constants.TypeUri; } }
+ IEnumerable<string> IExtension.AdditionalSupportedTypeUris {
+ get { return new string[0]; }
+ }
IDictionary<string, string> IExtensionRequest.Serialize(RelyingParty.IAuthenticationRequest authenticationRequest) {
var fields = new Dictionary<string, string> {
@@ -57,7 +67,7 @@ namespace DotNetOpenId.Extensions.AttributeExchange { return fields;
}
- bool IExtensionRequest.Deserialize(IDictionary<string, string> fields, DotNetOpenId.Provider.IRequest request) {
+ bool IExtensionRequest.Deserialize(IDictionary<string, string> fields, DotNetOpenId.Provider.IRequest request, string typeUri) {
if (fields == null) return false;
string mode;
fields.TryGetValue("mode", out mode);
diff --git a/src/DotNetOpenId/Extensions/AttributeExchange/StoreResponse.cs b/src/DotNetOpenId/Extensions/AttributeExchange/StoreResponse.cs index a4e9cf1..acc0d6b 100644 --- a/src/DotNetOpenId/Extensions/AttributeExchange/StoreResponse.cs +++ b/src/DotNetOpenId/Extensions/AttributeExchange/StoreResponse.cs @@ -24,6 +24,9 @@ namespace DotNetOpenId.Extensions.AttributeExchange { #region IExtensionResponse Members
string IExtension.TypeUri { get { return Constants.TypeUri; } }
+ IEnumerable<string> IExtension.AdditionalSupportedTypeUris {
+ get { return new string[0]; }
+ }
IDictionary<string, string> IExtensionResponse.Serialize(Provider.IRequest authenticationRequest) {
var fields = new Dictionary<string, string> {
@@ -35,7 +38,7 @@ namespace DotNetOpenId.Extensions.AttributeExchange { return fields;
}
- bool IExtensionResponse.Deserialize(IDictionary<string, string> fields, IAuthenticationResponse response) {
+ bool IExtensionResponse.Deserialize(IDictionary<string, string> fields, IAuthenticationResponse response, string typeUri) {
if (fields == null) return false;
string mode;
if (!fields.TryGetValue("mode", out mode)) return false;
|