internal static object GetClaimValueUsingValueType()

in src/Microsoft.Azure.SignalR.Common/Auth/TokenUtilities.cs [55:103]


    internal static object GetClaimValueUsingValueType(Claim claim)
    {
        if (claim.ValueType == ClaimValueTypes.String)
        {
            return claim.Value;
        }

        if (claim.ValueType == ClaimValueTypes.Boolean && bool.TryParse(claim.Value, out var boolValue))
        {
            return boolValue;
        }

        if (claim.ValueType == ClaimValueTypes.Double && double.TryParse(claim.Value, NumberStyles.Any, CultureInfo.InvariantCulture, out var doubleValue))
        {
            return doubleValue;
        }

        if ((claim.ValueType == ClaimValueTypes.Integer || claim.ValueType == ClaimValueTypes.Integer32) && int.TryParse(claim.Value, NumberStyles.Any, CultureInfo.InvariantCulture, out var intValue))
        {
            return intValue;
        }

        if (claim.ValueType == ClaimValueTypes.Integer64 && long.TryParse(claim.Value, out var longValue))
        {
            return longValue;
        }

        if (claim.ValueType == ClaimValueTypes.DateTime && DateTime.TryParse(claim.Value, out var dateTimeValue))
        {
            return dateTimeValue;
        }

        if (claim.ValueType == Json)
        {
            return JObject.Parse(claim.Value);
        }

        if (claim.ValueType == JsonArray)
        {
            return JArray.Parse(claim.Value);
        }

        if (claim.ValueType == JsonNull)
        {
            return string.Empty;
        }

        return claim.Value;
    }