< Summary

Information
Class: EF.Blockchain.Server.Endpoints.StatusEndpoints
Assembly: EF.Blockchain.Server
File(s): C:\dev\@web3\web3-001-ef-blockchain\backend\EF.Blockchain\src\EF.Blockchain.Server\Endpoints\StatusEndpoints.cs
Line coverage
100%
Covered lines: 22
Uncovered lines: 0
Coverable lines: 22
Total lines: 47
Line coverage: 100%
Branch coverage
50%
Covered branches: 1
Total branches: 2
Branch coverage: 50%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
MapStatusEndpoints(...)100%11100%
GetBlockchainStatus(...)50%22100%

File(s)

C:\dev\@web3\web3-001-ef-blockchain\backend\EF.Blockchain\src\EF.Blockchain.Server\Endpoints\StatusEndpoints.cs

#LineLine coverage
 1using EF.Blockchain.Server.Dtos;
 2using EF.Blockchain.Server.Mappers;
 3using Microsoft.AspNetCore.Mvc;
 4
 5namespace EF.Blockchain.Server.Endpoints;
 6
 7/// <summary>
 8/// Provides blockchain status-related endpoints.
 9/// </summary>
 10public static class StatusEndpoints
 11{
 12    /// <summary>
 13    /// Maps the status-related endpoints to the application's route builder.
 14    /// </summary>
 15    /// <param name="app">The endpoint route builder.</param>
 16    public static void MapStatusEndpoints(this IEndpointRouteBuilder app)
 11217    {
 11218        app.MapGet("/status", GetBlockchainStatus)
 11219            .WithName("GetBlockchainStatus")
 11220            .WithTags("Status")
 11221            .WithSummary("Get blockchain status")
 11222            .WithDescription("Returns mempool size, block count, validation status, and latest block.")
 11223            .Produces<StatusDto>(statusCode: StatusCodes.Status200OK)
 11224            .WithOpenApi();
 11225    }
 26
 27    /// <summary>
 28    /// Handles the GET /status endpoint.
 29    /// </summary>
 30    /// <param name="blockchain">The blockchain instance.</param>
 31    /// <returns>Blockchain status information.</returns>
 32    private static StatusDto GetBlockchainStatus([FromServices] Domain.Blockchain blockchain)
 833    {
 834        var lastBlock = blockchain.Blocks.LastOrDefault();
 35
 836        return new StatusDto
 837        {
 838            Mempool = blockchain.Mempool.Count,
 839            Blocks = blockchain.Blocks.Count,
 840            IsValid = blockchain.IsValid().Success,
 841            LastBlock = lastBlock is null
 842                ? null
 843                : BlockMapper.ToDto(lastBlock),
 844            Difficulty = blockchain.GetDifficulty()
 845        };
 746    }
 47}