Hooked up PAPE extension factory methods.
[dotnetoauth.git] / src / DotNetOpenAuth / OpenId / Extensions / ProviderAuthenticationPolicy / PapeUtilities.cs
blob4f8f5767a0fc150113bae2353d91ef7ac58b077d
1 //-----------------------------------------------------------------------
2 // <copyright file="PapeUtilities.cs" company="Andrew Arnott">
3 // Copyright (c) Andrew Arnott. All rights reserved.
4 // </copyright>
5 //-----------------------------------------------------------------------
7 namespace DotNetOpenAuth.OpenId.Extensions.ProviderAuthenticationPolicy {
8 using System;
9 using System.Collections.Generic;
10 using System.Globalization;
11 using System.Linq;
12 using System.Text;
13 using DotNetOpenAuth.Messaging;
15 internal static class PapeUtilities {
16 /// <summary>
17 /// Looks at the incoming fields and figures out what the aliases and name spaces for auth level types are.
18 /// </summary>
19 internal static AliasManager FindIncomingAliases(IDictionary<string, string> fields) {
20 AliasManager aliasManager = new AliasManager();
22 foreach (var pair in fields) {
23 if (!pair.Key.StartsWith(Constants.AuthLevelNamespaceDeclarationPrefix, StringComparison.Ordinal)) {
24 continue;
27 string alias = pair.Key.Substring(Constants.AuthLevelNamespaceDeclarationPrefix.Length);
28 aliasManager.SetAlias(alias, pair.Value);
31 aliasManager.SetPreferredAliasesWhereNotSet(Constants.AuthenticationLevels.PreferredTypeUriToAliasMap);
33 return aliasManager;
36 internal static string ConcatenateListOfElements(IList<string> values) {
37 ErrorUtilities.VerifyArgumentNotNull(values, "values");
39 StringBuilder valuesList = new StringBuilder();
40 foreach (string value in values.Distinct()) {
41 if (value.Contains(" ")) {
42 throw new FormatException(string.Format(CultureInfo.CurrentCulture,
43 OpenIdStrings.InvalidUri, value));
45 valuesList.Append(value);
46 valuesList.Append(" ");
48 if (valuesList.Length > 0) {
49 valuesList.Length -= 1; // remove trailing space
51 return valuesList.ToString();