1
namespace DotNetOpenAuth
.OpenId
.Extensions
.ProviderAuthenticationPolicy
{
3 using System
.Collections
.Generic
;
6 using DotNetOpenAuth
.Messaging
;
7 using System
.Globalization
;
9 internal static class PapeUtilities
{
10 static internal IEnumerable
<T
> GetUniqueItems
<T
>(IList
<T
> list
) {
11 List
<T
> itemsSeen
= new List
<T
>(list
.Count
);
12 foreach (T item
in list
) {
13 if (itemsSeen
.Contains(item
)) continue;
20 /// Looks at the incoming fields and figures out what the aliases and name spaces for auth level types are.
22 internal static AliasManager
FindIncomingAliases(IDictionary
<string, string> fields
) {
23 AliasManager aliasManager
= new AliasManager();
25 foreach (var pair
in fields
) {
26 if (!pair
.Key
.StartsWith(Constants
.AuthLevelNamespaceDeclarationPrefix
, StringComparison
.Ordinal
)) {
30 string alias = pair
.Key
.Substring(Constants
.AuthLevelNamespaceDeclarationPrefix
.Length
);
31 aliasManager
.SetAlias(alias, pair
.Value
);
34 aliasManager
.SetPreferredAliasesWhereNotSet(Constants
.AuthenticationLevels
.PreferredTypeUriToAliasMap
);
39 internal static string ConcatenateListOfElements(IList
<string> values
) {
40 ErrorUtilities
.VerifyArgumentNotNull(values
, "values");
42 StringBuilder valuesList
= new StringBuilder();
43 foreach (string value in GetUniqueItems(values
)) {
44 if (value.Contains(" ")) {
45 throw new FormatException(string.Format(CultureInfo
.CurrentCulture
,
46 OpenIdStrings
.InvalidUri
, value));
48 valuesList
.Append(value);
49 valuesList
.Append(" ");
51 if (valuesList
.Length
> 0)
52 valuesList
.Length
-= 1; // remove trailing space
53 return valuesList
.ToString();