{
    "connector.class": "io.streamthoughts.kafka.connect.filepulse.source.FilePulseSourceConnector",
    "tasks.max": 1,
    "tasks.reader.class": "io.streamthoughts.kafka.connect.filepulse.fs.reader.AmazonS3RowFileInputReader",
    "value.converter": "org.apache.kafka.connect.json.JsonConverter",
    "value.converter.schemas.enable": "false",

    {% set filter_list = ['ParseJson', 'ExcludeMessageField'] -%}
    {% if env['KAFKA_MESSAGE_KEY_FIELDNAME']-%}
        {% set filter_list = filter_list + ['SetKey'] -%}
    {% endif -%}
    {% if env['KAFKA_MESSAGE_RENAME_TO_FIELDNAME'] and env['KAFKA_MESSAGE_RENAME_FROM_FIELDNAME'] -%}
        {% set filter_list = filter_list + ['RenameField'] -%}
    {% endif -%}
    "filters": "{{filter_list| join(', ')}}",
    "filters.ParseJson.type": "io.streamthoughts.kafka.connect.filepulse.filter.JSONFilter",
    "filters.ParseJson.source": "message",
    "filters.ParseJson.merge": "true",
    "filters.ExcludeMessageField.type": "io.streamthoughts.kafka.connect.filepulse.filter.ExcludeFilter",
    "filters.ExcludeMessageField.fields": "message",
    {% if env['KAFKA_MESSAGE_KEY_FIELDNAME']-%}
        "filters.SetKey.type": "io.streamthoughts.kafka.connect.filepulse.filter.AppendFilter",
        "filters.SetKey.field": "$key",
        "filters.SetKey.value": "{% raw %}{{ $value.globalParticipantUuid }}{% endraw %}",
    {% endif -%}
    {% if env['KAFKA_MESSAGE_RENAME_TO_FIELDNAME'] and env['KAFKA_MESSAGE_RENAME_FROM_FIELDNAME'] -%}
        "filters.RenameField.type": "io.streamthoughts.kafka.connect.filepulse.filter.AppendFilter",
        "filters.RenameField.field": "{{env['KAFKA_MESSAGE_RENAME_TO_FIELDNAME']}}",
        "filters.RenameField.value": "{{env['KAFKA_MESSAGE_RENAME_FROM_FIELDNAME']}}",
        "filters.RenameField.regex": ".*",
    {% endif -%}

    "aws.credentials.provider.class": "com.amazonaws.auth.DefaultAWSCredentialsProviderChain",
    "aws.s3.region": "{{env['KAFKA_S3_REGION']}}",
    "aws.s3.bucket.name": "{{env['KAFKA_S3_BUCKET']}}",
    "aws.s3.bucket.prefix": "{{env['KAFKA_S3_BUCKET_OBJECT_PREFIX']}}",
    "offset.attributes.string": "{{env['KAFKA_S3_STATUS_IDENTIFIER']}}",

    "fs.listing.class": "io.streamthoughts.kafka.connect.filepulse.fs.AmazonS3FileSystemListing",
    "fs.listing.filters": "io.streamthoughts.kafka.connect.filepulse.fs.filter.RegexFileListFilter",
    "fs.listing.interval.ms": "10000",
    "file.filter.regex.pattern": ".*\\.{{env['KAFKA_S3_FILE_EXTENSION']}}$",
    {% if env['KAFKA_S3_ACTION_AFTER_READ']== 'move' -%}
        "fs.cleanup.policy.class": "io.streamthoughts.kafka.connect.filepulse.fs.clean.AmazonS3MoveCleanupPolicy",
        "fs.cleanup.policy.move.success.aws.prefix.path": "processed",
        "fs.cleanup.policy.move.failure.aws.prefix.path": "failed",
        "fs.cleanup.policy.triggered.on": "COMMITTED",
    {% else -%}
        "fs.cleanup.policy.class": "io.streamthoughts.kafka.connect.filepulse.fs.clean.DeleteCleanupPolicy",
        "fs.cleanup.policy.triggered.on": "COMPLETED",
    {% endif -%}

    "skip.headers": "{{env['SKIP_HEADER_ROWS']}}",
    "topic": "{{env['KAFKA_TOPIC']}}",
    "tasks.file.status.storage.class": "io.streamthoughts.kafka.connect.filepulse.state.KafkaFileObjectStateBackingStore",
    "tasks.file.status.storage.topic": "{{env['CONNECT_GROUP_UNIQUE_IDENTIFIER']}}.status",
    "tasks.file.status.storage.bootstrap.servers":  "{{env['CONNECT_BOOTSTRAP_SERVERS']}}",
    "tasks.file.status.storage.security.protocol": "SSL",
    "tasks.file.status.storage.topic.partitions": 1,
    "tasks.file.status.storage.topic.replication.factor": 3,
    "errors.log.enable": true,
    "errors.log.include.messages": true
}
