diff options
Diffstat (limited to 'src/OpenID/OpenIdProviderMvc/Models')
-rw-r--r-- | src/OpenID/OpenIdProviderMvc/Models/User.cs | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/src/OpenID/OpenIdProviderMvc/Models/User.cs b/src/OpenID/OpenIdProviderMvc/Models/User.cs new file mode 100644 index 0000000..c89d74d --- /dev/null +++ b/src/OpenID/OpenIdProviderMvc/Models/User.cs @@ -0,0 +1,37 @@ +namespace OpenIdProviderMvc.Models { + using System; + using System.Collections.Generic; + using System.Linq; + using System.Text.RegularExpressions; + using System.Web; + using System.Web.Routing; + using OpenIdProviderMvc.Code; + + internal class User { + internal static Uri ClaimedIdentifierBaseUri { + get { return Util.GetAppPathRootedUri("user/"); } + } + + internal static Uri GetClaimedIdentifierForUser(string username) { + if (string.IsNullOrEmpty(username)) { + throw new ArgumentNullException("username"); + } + + return new Uri(ClaimedIdentifierBaseUri, username.ToLowerInvariant()); + } + + internal static string GetUserFromClaimedIdentifier(Uri claimedIdentifier) { + Regex regex = new Regex(@"/user/([^/\?]+)"); + Match m = regex.Match(claimedIdentifier.AbsoluteUri); + if (!m.Success) { + throw new ArgumentException(); + } + + return m.Groups[1].Value; + } + + internal static Uri GetNormalizedClaimedIdentifier(Uri uri) { + return GetClaimedIdentifierForUser(GetUserFromClaimedIdentifier(uri)); + } + } +} |