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;
};
});