Content Extensions
MultiSerializerโ
To use the MultiSerializer, configure it within the operation you need (it is commonly used for small CSV operations).
Basic Setupโ
Start by configuring the main serializer (e.g., CSV):
- In this case, a CsvConfigFactory class is created to establish the CSV configuration:
 
public static class CsvConfigFactory
{
    // Returns a default configuration for the CsvSerializer
    public static CsvSerializerConfiguration GetDefaultConfiguration()
    {
        // CsvSerializerConfiguration is a class defined in Connectors
        return new CsvSerializerConfiguration
        {
            Delimiter = ",",
            HasHeaderRecord = true,
            IgnoreBlankLines = true
        };
    }
}
Then use it in the operations Extensions class:
var csvConfiguration = CsvSerializerConfiguration.GetDefaultConfiguration();
services
    .AddMultiSerializer(new CsvSerializer<FtpRequest, IEnumerable<Hotel>>(csvConfiguration))
    .AddPreSerializer<CompressionSerializer, CompressionSerializerConfiguration>(o => {
        o.CompressionType = CompressionType.TarGZ;
        o.FileName = TgxPlatform.HOTEL_LIST;
    });
services.AddHotelListFullOperation<HotelListFullOperation, IEnumerable<Hotel>, AccessModel>(
    TgxPlatform.Name, configuration);
Advanced PreSerializer Usage
You can also dynamically select a file inside a compressed archive:
services
    .AddMultiSerializer(new CsvSerializer<FtpRequest, IEnumerable<Hotel>>(csvConfiguration))
    .AddPreSerializer<CompressionSerializer, CompressionSerializerConfiguration>(o => {
        o.CompressionType = CompressionType.TarGZ;
        o.SelectFileFunction = fileList => {
            foreach (var fileName in fileList)
            {
                if (fileName.Contains(DateTime.Now.ToShortDateString()))
                    return fileName;
            }
            // FILE NOT FOUND
            return null;
        };
    });