An open API service indexing awesome lists of open source software.

https://github.com/shuttle/shuttle.core.compression

Compression adapter.
https://github.com/shuttle/shuttle.core.compression

Last synced: 9 months ago
JSON representation

Compression adapter.

Awesome Lists containing this project

README

          

# Shuttle.Core.Compression

```
PM> Install-Package Shuttle.Core.Compression
```

Provides a compression adapter through the `ICompressionAlgorithm` interface.

Implementations available in this package:

- `DeflateCompressionAlgorithm`
- `GZipCompressionAlgorithm`
- `NullCompressionAlgorithm`

There is also an `ICompressionService` that acts as a central container for all registered `ICompressionAlgorithm` implementations.

## Configuration

In order to add compression:

```c#
services.AddCompression();
```

This will try to add the `CompressionService` singleton.

In order to add specific compression algorithms use the relevant builder calls:

```c#
services.AddCompression(builder => {
builder.AddGzip();
builder.AddDeflate();
builder.AddNull();
});
```

## Usage

The `ICompressionService` can be injected into any class that requires compression services:

```c#
var algorithm = compressionService.Get("algorithm-name");
var compressed = await algorithm.CompressAsync(Encoding.UTF8.GetBytes("some data"));
var decompressed = await algorithm.DecompressAsync(compressed);
```