< 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    {
 111        var models = new List<WorkflowDefinitionModel>();
 12
 613        foreach (var file in files)
 14        {
 215            if (hasResponseStarted())
 016                return models;
 17
 218            await using var fileStream = file.OpenReadStream();
 19
 220            if (file.ContentType == "application/json")
 21            {
 222                models.Add(await ReadJsonStreamAsync(fileStream, apiSerializer, cancellationToken));
 223                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
 141        return models;
 142    }
 43
 44    private static async Task<WorkflowDefinitionModel> ReadJsonStreamAsync(Stream jsonStream, IApiSerializer apiSerializ
 45    {
 246        using var reader = new StreamReader(jsonStream);
 247        var json = await reader.ReadToEndAsync(cancellationToken);
 248        return apiSerializer.Deserialize<WorkflowDefinitionModel>(json);
 249    }
 50}

Methods/Properties

ReadAsync()
ReadJsonStreamAsync()