< Summary

Information
Class: OzonOrdersWeb.Areas.Studio2.Controllers.Directories.FavoritPartsIstraController
Assembly: OzonOrdersWeb
File(s): /home/runner/work/Studio2Prod/Studio2Prod/OzonOrdersWeb/Areas/Studio2/Controllers/Directories/FavoritPartsIstraController.cs
Line coverage
0%
Covered lines: 0
Uncovered lines: 23
Coverable lines: 23
Total lines: 53
Line coverage: 0%
Branch coverage
0%
Covered branches: 0
Total branches: 18
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%110100%
Error(...)0%7280%
JsonToken(...)100%210%

File(s)

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

#LineLine coverage
 1using Microsoft.AspNetCore.Authorization;
 2using Microsoft.AspNetCore.Mvc;
 3using Newtonsoft.Json;
 4using Newtonsoft.Json.Linq;
 5using Services.ApiServices.ApiSupplierRequestLog;
 6using Services.ApiServices.FavoritPartsApi;
 7
 8namespace OzonOrdersWeb.Areas.Studio2.Controllers.Directories;
 9
 10[Authorize(Roles = "User,Admin")]
 11[Area("Studio2")]
 12[Route("FavoritPartsIstra/[action]")]
 13public sealed class FavoritPartsIstraController : Controller
 14{
 15    private const string TestArticle = "01089";
 16    private readonly FavoritPartsIstraDataManager _favoritParts;
 17    private readonly ApiSupplierRequestLogStore _logs;
 018    public FavoritPartsIstraController(FavoritPartsIstraDataManager favoritParts, ApiSupplierRequestLogStore logs) { _fa
 19
 20    [HttpGet, Route("~/FavoritPartsIstra")]
 021    public IActionResult Index() => View();
 22    [HttpGet]
 023    public IActionResult Logs() => Json(_logs.Get("FavoritPartsIstra"));
 24    [HttpGet]
 25    public async Task<IActionResult> Ping(CancellationToken cancellationToken)
 26    {
 027        try { return JsonToken(await _favoritParts.GetProfileAsync(cancellationToken)); }
 028        catch (Exception ex) { return Error(ex); }
 029    }
 30    [HttpGet]
 31    public async Task<IActionResult> Read(string operation, CancellationToken cancellationToken)
 32    {
 33        try
 34        {
 035            var result = operation.ToLowerInvariant() switch
 036            {
 037                "profile" => await _favoritParts.GetProfileAsync(cancellationToken),
 038                "status" => await _favoritParts.GetStatusesAsync(cancellationToken),
 039                "price-search" => await _favoritParts.SearchGoodsAsync(TestArticle, null, false, cancellationToken),
 040                "cart" => await _favoritParts.GetCartAsync(cancellationToken),
 041                _ => null
 042            };
 043            return result is null ? BadRequest(new { error = true, message = "Недопустимая read-операция." }) : JsonToke
 44        }
 045        catch (Exception ex) { return Error(ex); }
 046    }
 047    private static IActionResult Error(Exception ex) => ex switch
 048    {
 049        FavoritPartsApiException api => new ObjectResult(new { error = true, message = api.Message }) { StatusCode = api
 050        _ => new ObjectResult(new { error = true, message = "Не удалось выполнить запрос к Фаворит Истра." }) { StatusCo
 051    };
 052    private static ContentResult JsonToken(JToken token) => new() { Content = token.ToString(Formatting.None), ContentTy
 53}