< Summary

Information
Class: Elsa.Workflows.Api.Endpoints.WorkflowDefinitions.ImportFiles.WorkflowDefinitionImportFileReader
Assembly: Elsa.Workflows.Api
File(s): /home/runner/work/elsa-core/elsa-core/src/modules/Elsa.Workflows.Api/Endpoints/WorkflowDefinitions/ImportFiles/WorkflowDefinitionImportFileReader.cs
Line coverage
56%
Covered lines: 13
Uncovered lines: 10
Coverable lines: 23
Total lines: 50
Line coverage: 56.5%
Branch coverage
31%
Covered branches: 7
Total branches: 22
Branch coverage: 31.8%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
ReadAsync()31.81%932247.36%
ReadJsonStreamAsync()100%11100%

File(s)

/home/runner/work/elsa-core/elsa-core/src/modules/Elsa.Workflows.Api/Endpoints/WorkflowDefinitions/ImportFiles/WorkflowDefinitionImportFileReader.cs

#LineLine coverage
 1using System.IO.Compression;
 2using Elsa.Workflows.Management.Models;
 3using Microsoft.AspNetCore.Http;
 4
 5namespace Elsa.Workflows.Api.Endpoints.WorkflowDefinitions.ImportFiles;
 6
 7internal static class WorkflowDefinitionImportFileReader
 8{
 9    public static async Task<IReadOnlyCollection<WorkflowDefinitionModel>> ReadAsync(IFormFileCollection files, IApiSeri
 10    {
 211        var models = new List<WorkflowDefinitionModel>();
 12
 1013        foreach (var file in files)
 14        {
 315            if (hasResponseStarted())
 016                return models;
 17
 318            await using var fileStream = file.OpenReadStream();
 19
 320            if (file.ContentType == "application/json")
 21            {
 322                models.Add(await ReadJsonStreamAsync(fileStream, apiSerializer, cancellationToken));
 323                continue;
 24            }
 25
 026            using var zipArchive = new ZipArchive(fileStream, ZipArchiveMode.Read);
 27
 028            foreach (var entry in zipArchive.Entries)
 29            {
 030                if (hasResponseStarted())
 031                    return models;
 32
 033                if (!entry.FullName.EndsWith(".json", StringComparison.OrdinalIgnoreCase))
 34                    continue;
 35
 036                await using var jsonStream = entry.Open();
 037                models.Add(await ReadJsonStreamAsync(jsonStream, apiSerializer, cancellationToken));
 038            }
 039        }
 40
 241        return models;
 242    }
 43
 44    private static async Task<WorkflowDefinitionModel> ReadJsonStreamAsync(Stream jsonStream, IApiSerializer apiSerializ
 45    {
 346        using var reader = new StreamReader(jsonStream);
 347        var json = await reader.ReadToEndAsync(cancellationToken);
 348        return apiSerializer.Deserialize<WorkflowDefinitionModel>(json);
 349    }
 50}

Methods/Properties

ReadAsync()
ReadJsonStreamAsync()