< Summary

Information
Class: Elsa.Common.Codecs.Zstd
Assembly: Elsa.Common
File(s): /home/runner/work/elsa-core/elsa-core/src/modules/Elsa.Common/Codecs/Zstd.cs
Line coverage
100%
Covered lines: 15
Uncovered lines: 0
Coverable lines: 15
Total lines: 36
Line coverage: 100%
Branch coverage
N/A
Covered branches: 0
Total branches: 0
Branch coverage: N/A
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
get_Iron()100%11100%
CompressAsync(...)100%11100%
DecompressAsync(...)100%11100%

File(s)

/home/runner/work/elsa-core/elsa-core/src/modules/Elsa.Common/Codecs/Zstd.cs

#LineLine coverage
 1using System.Text;
 2using IronCompress;
 3
 4namespace Elsa.Common.Codecs;
 5
 6/// <summary>
 7/// Represents a ZSTD compression strategy.
 8/// </summary>
 9public class Zstd : ICompressionCodec
 10{
 2711    private Iron Iron { get; set; } = new();
 12
 13    /// <inheritdoc />
 14    public ValueTask<string> CompressAsync(string input, CancellationToken cancellationToken = default)
 15    {
 816        var inputBytes = Encoding.UTF8.GetBytes(input);
 817        var span = inputBytes.AsSpan();
 818        using var result = Iron.Compress(Codec.Zstd, span);
 819        var compressedBytes = result.AsSpan();
 820        var compressedString = Convert.ToBase64String(compressedBytes);
 21
 822        return new (compressedString);
 823    }
 24
 25    /// <inheritdoc />
 26    public ValueTask<string> DecompressAsync(string input, CancellationToken cancellationToken = default)
 27    {
 528        var inputBytes = Convert.FromBase64String(input);
 529        var span = inputBytes.AsSpan();
 530        using var result = Iron.Decompress(Codec.Zstd, span);
 531        var decompressedBytes = result.AsSpan();
 532        var decompressedString = Encoding.UTF8.GetString(decompressedBytes);
 33
 534        return new (decompressedString);
 535    }
 36}