< Summary

Information
Class: TeleFlow.Telegram.Internal.TelegramUpdateBatchRequest
Assembly: TeleFlow.Telegram.Client
File(s): /_/src/TeleFlow.Telegram.Client/Internal/TelegramUpdateBatchRequest.cs
Line coverage
89%
Covered lines: 17
Uncovered lines: 2
Coverable lines: 19
Total lines: 49
Line coverage: 89.4%
Branch coverage
57%
Covered branches: 8
Total branches: 14
Branch coverage: 57.1%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor(...)50%22100%
get_MethodName()100%11100%
get_Payload()100%11100%
DeserializeResponse(...)58.33%121287.5%

File(s)

/_/src/TeleFlow.Telegram.Client/Internal/TelegramUpdateBatchRequest.cs

#LineLine coverage
 1using System.Text.Json;
 2using TeleFlow.Telegram.Schema.Methods;
 3
 4namespace TeleFlow.Telegram.Internal;
 5
 6/// <summary>
 7/// Adapts getUpdates to a response contract that isolates schema failures to individual update elements.
 8/// </summary>
 9internal sealed class TelegramUpdateBatchRequest(GetUpdates request) :
 10    ITelegramExecutableRequest<TelegramUpdateBatchResponse>
 11{
 1212    private readonly GetUpdates _request = request ?? throw new ArgumentNullException(nameof(request));
 13
 5114    public string MethodName => GetUpdates.MethodName;
 15
 1216    public object Payload => _request;
 17
 18    public TelegramUpdateBatchResponse DeserializeResponse(
 19        JsonSerializerOptions serializerOptions,
 20        JsonElement result)
 21    {
 1122        ArgumentNullException.ThrowIfNull(serializerOptions);
 23
 1124        if (result.ValueKind != JsonValueKind.Array)
 25        {
 026            throw new JsonException("Telegram getUpdates result must be an array.");
 27        }
 28
 1129        var items = new List<TelegramUpdateDecodeResult>(result.GetArrayLength());
 5230        foreach (var payload in result.EnumerateArray())
 31        {
 1532            if (payload.ValueKind != JsonValueKind.Object ||
 1533                !payload.TryGetProperty("update_id", out var updateIdElement) ||
 1534                updateIdElement.ValueKind != JsonValueKind.Number ||
 1535                !updateIdElement.TryGetInt64(out var updateId))
 36            {
 037                throw new JsonException("Telegram update payload does not contain a valid 'update_id'.");
 38            }
 39
 1540            items.Add(TelegramUpdateDecoder.Decode(
 1541                payload,
 1542                updateId,
 1543                serializerOptions,
 1544                MethodName));
 45        }
 46
 1147        return new TelegramUpdateBatchResponse(items);
 48    }
 49}