/
githubmirror
/
aspnetcore
Обзор
Документация
Войти
/
githubmirror
/
aspnetcore
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
src/SignalR/common/Shared/SystemTextJsonExtensions.cs
117 строк
3 KB
Brennan
[SignalR] Seamless Reconnect (#48338)
26 май 2023, 03:27
Не верифицирован
26 май 2023, 03:27
f56c242
Код
Авторство
О чём код?
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using System.IO; using System.Text.Json; namespace Microsoft.AspNetCore.Internal; internal static class SystemTextJsonExtensions { public static bool CheckRead(this ref Utf8JsonReader reader) { if (!reader.Read()) { throw new InvalidDataException("Unexpected end when reading JSON."); } return true; } public static void EnsureObjectStart(this ref Utf8JsonReader reader) { if (reader.TokenType != JsonTokenType.StartObject) { throw new InvalidDataException($"Unexpected JSON Token Type '{reader.GetTokenString()}'. Expected a JSON Object."); } } public static string GetTokenString(this ref Utf8JsonReader reader) { return GetTokenString(reader.TokenType); } public static string GetTokenString(JsonTokenType tokenType) { switch (tokenType) { case JsonTokenType.None: break; case JsonTokenType.StartObject: return "Object"; case JsonTokenType.StartArray: return "Array"; case JsonTokenType.PropertyName: return "Property"; default: break; } return tokenType.ToString(); } public static void EnsureArrayStart(this ref Utf8JsonReader reader) { if (reader.TokenType != JsonTokenType.StartArray) { throw new InvalidDataException($"Unexpected JSON Token Type '{reader.GetTokenString()}'. Expected a JSON Array."); } } public static bool ReadAsBoolean(this ref Utf8JsonReader reader, string propertyName) { reader.Read(); return reader.TokenType switch { JsonTokenType.False => false, JsonTokenType.True => true, _ => throw new InvalidDataException($"Expected '{propertyName}' to be true or false."), }; } public static string ReadAsString(this ref Utf8JsonReader reader, string propertyName) { reader.Read(); if (reader.TokenType != JsonTokenType.String) { throw new InvalidDataException($"Expected '{propertyName}' to be of type {JsonTokenType.String}."); } return reader.GetString()!; } public static int? ReadAsInt32(this ref Utf8JsonReader reader, string propertyName) { reader.Read(); if (reader.TokenType == JsonTokenType.Null) { return null; } if (reader.TokenType != JsonTokenType.Number) { throw new InvalidDataException($"Expected '{propertyName}' to be of type {JsonTokenType.Number}."); } return reader.GetInt32(); } public static long? ReadAsInt64(this ref Utf8JsonReader reader, string propertyName) { reader.Read(); if (reader.TokenType == JsonTokenType.Null) { return null; } if (reader.TokenType != JsonTokenType.Number) { throw new InvalidDataException($"Expected '{propertyName}' to be of type {JsonTokenType.Number}."); } return reader.GetInt64(); } }