Cheesebaron.MvxPlugins.SimpleWebToken.SimpleWebToken.CreateTokenFromRaw C# (CSharp) Method

CreateTokenFromRaw() public method

public CreateTokenFromRaw ( string rawToken ) : ISimpleWebToken
rawToken string
return ISimpleWebToken
        public ISimpleWebToken CreateTokenFromRaw(string rawToken)
        {
            if (string.IsNullOrEmpty(rawToken)) throw new ArgumentNullException(nameof(rawToken));

            var token = new SimpleWebToken { RawToken = rawToken, Properties = new Dictionary<string, string>() };

            foreach (var rawNameValue in rawToken.Split(new[] { '&' }, StringSplitOptions.RemoveEmptyEntries))
            {
                var nameValue = rawNameValue.Split('=');

                if (nameValue.Length != 2)
                {
                    throw new FormatException(
                        string.Format(
                            CultureInfo.InvariantCulture,
                            "Invalid token contains a name/value pair missing an = character: '{0}'",
                            rawNameValue));
                }

                var key = WebUtility.UrlDecode(nameValue[0]);
                var values = WebUtility.UrlDecode(nameValue[1]);

                switch (key)
                {
                    case SimpleWebTokenConstants.Issuer:
                        token.Issuer = values;
                        break;
                    case SimpleWebTokenConstants.Audience:
                        token.Audience = values;
                        break;
                    case SimpleWebTokenConstants.ExpiresOn:
                        token.ExpiresOn = GetTimeAsDateTime(string.IsNullOrEmpty(values) ? "0" : values);
                        break;
                    case SimpleWebTokenConstants.Signature:
                        token.Signature = values;
                        break;
                    default:
                        token.Properties[key] = values;
                        break;
                }
            }
            return token;
        }