summaryrefslogtreecommitdiffstats
path: root/src/OpenID/OpenIdProviderMvc/Models
diff options
context:
space:
mode:
Diffstat (limited to 'src/OpenID/OpenIdProviderMvc/Models')
-rw-r--r--src/OpenID/OpenIdProviderMvc/Models/User.cs37
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));
+ }
+ }
+}