< Summary

Information
Class: OzonOrdersWeb.Areas.Studio2.Controllers.Directories.MikadoMskHod20Controller
Assembly: OzonOrdersWeb
File(s): /home/runner/work/Studio2Prod/Studio2Prod/OzonOrdersWeb/Areas/Studio2/Controllers/Directories/MikadoMskHod20Controller.cs
Line coverage
0%
Covered lines: 0
Uncovered lines: 26
Coverable lines: 26
Total lines: 58
Line coverage: 0%
Branch coverage
0%
Covered branches: 0
Total branches: 50
Branch coverage: 0%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor(...)100%210%
Index()100%210%
Logs()100%210%
Ping()100%210%
Read()0%1482380%
Xml(...)100%210%
Error(...)0%156120%

File(s)

/home/runner/work/Studio2Prod/Studio2Prod/OzonOrdersWeb/Areas/Studio2/Controllers/Directories/MikadoMskHod20Controller.cs

#LineLine coverage
 1using Microsoft.AspNetCore.Authorization;
 2using Microsoft.AspNetCore.Mvc;
 3using Services.ApiServices.ApiSupplierRequestLog;
 4using Services.ApiServices.MikadoApi;
 5
 6namespace OzonOrdersWeb.Areas.Studio2.Controllers.Directories;
 7
 8[Authorize(Roles = "User,Admin")]
 9[Area("Studio2")]
 10[Route("MikadoMskHod20/[action]")]
 11public sealed class MikadoMskHod20Controller : Controller
 12{
 13    private readonly MikadoDataManager _mikado;
 14    private readonly ApiSupplierRequestLogStore _logs;
 015    public MikadoMskHod20Controller(MikadoDataManager mikado, ApiSupplierRequestLogStore logs) => (_mikado, _logs) = (mi
 16
 17    [HttpGet, Route("~/MikadoMskHod20")]
 018    public IActionResult Index() => View();
 019    [HttpGet] public IActionResult Logs() => Json(_logs.Get("MikadoMskHod20"));
 20
 21    [HttpGet]
 22    public async Task<IActionResult> Ping(CancellationToken cancellationToken)
 23    {
 024        try { return Xml(await _mikado.CodeSearchTestAsync(cancellationToken)); }
 025        catch (Exception ex) { return Error(ex); }
 026    }
 27
 28    [HttpGet]
 29    public async Task<IActionResult> Read(string operation, CancellationToken cancellationToken)
 30    {
 31        try
 32        {
 033            var result = operation?.ToLowerInvariant() switch
 034            {
 035                "ip" => await _mikado.GetMyIpAsync(cancellationToken),
 036                "search" => await _mikado.CodeSearchTestAsync(cancellationToken),
 037                "info-xbm" => await _mikado.CodeInfoTestAsync("xbm-123/45", cancellationToken),
 038                "info-gfi" => await _mikado.CodeInfoTestAsync("gfi7563985", cancellationToken),
 039                "basket" => await _mikado.GetBasketAsync(cancellationToken),
 040                "deliveries" => await _mikado.GetDeliveriesAsync(DateTime.Today.AddDays(-30), DateTime.Today, cancellati
 041                "stocks" => await _mikado.GetStocksInfoAsync(cancellationToken),
 042                _ => null
 043            };
 044            return result is null ? BadRequest(new { error = true, message = "Недопустимая read-операция." }) : Xml(resu
 45        }
 046        catch (Exception ex) { return Error(ex); }
 047    }
 48
 049    private static IActionResult Xml(string xml) => new JsonResult(new { xml });
 50    private static IActionResult Error(Exception exception)
 51    {
 052        var api = exception as MikadoApiException;
 053        return new ObjectResult(new { error = true, message = api?.Message ?? "Не удалось выполнить запрос к Микадо." })
 054        {
 055            StatusCode = api?.StatusCode is >= 400 and < 600 ? api.StatusCode : StatusCodes.Status502BadGateway
 056        };
 57    }
 58}