# Camel-Kafka-connector SFTP Source

This is an example for Camel-Kafka-connector SFTP Source 

## Standalone

### What is needed

- An SFTP server

### Setting up SFTP Server

We'll use the emberstack/sftp docker image

Run the following command:

```
docker run -p 24:22 -d emberstack/sftp --name sftp
1cb0cdd7b9a24112ecb9e4c7e195f01552e0c9187a173e29e6642c1f9d9b3455
```
We are mapping container port 22 to host port 24 for convenience.

take note of the container id. In our case it is 1cb0cdd7b9a24112ecb9e4c7e195f01552e0c9187a173e29e6642c1f9d9b3455

### Running Kafka

```
$KAFKA_HOME/bin/zookeeper-server-start.sh $KAFKA_HOME/config/zookeeper.properties
$KAFKA_HOME/bin/kafka-server-start.sh $KAFKA_HOME/config/server.properties
$KAFKA_HOME/bin/kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic mytopic
```

### Setting up the needed bits and running the example

You'll need to setup the plugin.path property in your kafka

Open the `$KAFKA_HOME/config/connect-standalone.properties`

and set the `plugin.path` property to your choosen location

You'll need to build your connector starting from an archetype:

```
> mvn archetype:generate  -DarchetypeGroupId=org.apache.camel.kafkaconnector.archetypes  -DarchetypeArtifactId=camel-kafka-connector-extensible-archetype  -DarchetypeVersion=0.11.0
[INFO] Scanning for projects...
[INFO] 
[INFO] ------------------< org.apache.maven:standalone-pom >-------------------
[INFO] Building Maven Stub Project (No POM) 1
[INFO] --------------------------------[ pom ]---------------------------------
[INFO] 
[INFO] >>> maven-archetype-plugin:3.1.2:generate (default-cli) > generate-sources @ standalone-pom >>>
[INFO] 
[INFO] <<< maven-archetype-plugin:3.1.2:generate (default-cli) < generate-sources @ standalone-pom <<<
[INFO] 
[INFO] 
[INFO] --- maven-archetype-plugin:3.1.2:generate (default-cli) @ standalone-pom ---
[INFO] Generating project in Interactive mode
[INFO] Archetype repository not defined. Using the one from [org.apache.camel.kafkaconnector.archetypes:camel-kafka-connector-extensible-archetype:0.11.0] found in catalog remote
Define value for property 'groupId': org.apache.camel.kafkaconnector
Define value for property 'artifactId': sftp-extended
Define value for property 'version' 1.0-SNAPSHOT: : 0.11.0
Define value for property 'package' com.github.oscerd: : 
Define value for property 'camel-kafka-connector-name': camel-sftp-kafka-connector
[INFO] Using property: camel-kafka-connector-version = 0.11.0
Confirm properties configuration:
groupId: org.apache.camel.kafkaconnector
artifactId: sftp-extended
version: 0.11.0
package: com.github.oscerd
camel-kafka-connector-name: camel-sftp-kafka-connector
camel-kafka-connector-version: 0.11.0
 Y: : Y
[INFO] ----------------------------------------------------------------------------
[INFO] Using following parameters for creating project from Archetype: camel-kafka-connector-extensible-archetype:0.11.0
[INFO] ----------------------------------------------------------------------------
[INFO] Parameter: groupId, Value: org.apache.camel.kafkaconnector
[INFO] Parameter: artifactId, Value: sftp-extended
[INFO] Parameter: version, Value: 0.11.0
[INFO] Parameter: package, Value: org.apache.camel.kafkaconnector
[INFO] Parameter: packageInPathFormat, Value: org/apache/camel/kafkaconnector
[INFO] Parameter: package, Value: org.apache.camel.kafkaconnector
[INFO] Parameter: version, Value: 0.11.0
[INFO] Parameter: groupId, Value: org.apache.camel.kafkaconnector
[INFO] Parameter: camel-kafka-connector-name, Value: camel-sftp-kafka-connector
[INFO] Parameter: camel-kafka-connector-version, Value: 0.11.0
[INFO] Parameter: artifactId, Value: sftp-extended
[INFO] Project created from Archetype in dir: /home/workspace/miscellanea/sftp-extended
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  24.590 s
[INFO] Finished at: 2020-11-05T07:45:43+01:00
[INFO] ------------------------------------------------------------------------
> cd /home/workspace/miscellanea/sftp-extended
```

We'll need to add a little transform for this example. So import the sftp-extended project in your IDE and create a class in the only package there

```
package org.apache.camel.kafkaconnector;

import java.util.Map;

import org.apache.camel.component.file.remote.RemoteFile;
import org.apache.camel.kafkaconnector.utils.SchemaHelper;
import org.apache.kafka.common.config.ConfigDef;
import org.apache.kafka.connect.connector.ConnectRecord;
import org.apache.kafka.connect.transforms.Transformation;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class RemoteFileTransforms <R extends ConnectRecord<R>> implements Transformation<R> {
    public static final String FIELD_KEY_CONFIG = "key";
    public static final ConfigDef CONFIG_DEF = new ConfigDef()
            .define(FIELD_KEY_CONFIG, ConfigDef.Type.STRING, null, ConfigDef.Importance.MEDIUM,
                    "Transforms Remote File to String");

    private static final Logger LOG = LoggerFactory.getLogger(RemoteFileTransforms.class);

    @Override
    public R apply(R r) {
        Object value = r.value();

        if (r.value() instanceof RemoteFile) {
            LOG.debug("Converting record from RemoteFile to text");
            RemoteFile message = (RemoteFile) r.value();

            LOG.debug("Received text: {}", message.getBody());

            return r.newRecord(r.topic(), r.kafkaPartition(), null, r.key(),
                    SchemaHelper.buildSchemaBuilderForType(message.getBody()), message.getBody(), r.timestamp());

        } else {
            LOG.debug("Unexpected message type: {}", r.value().getClass());

            return r;
        }
    }

    @Override
    public ConfigDef config() {
        return CONFIG_DEF;
    }

    @Override
    public void close() {

    }

    @Override
    public void configure(Map<String, ?> map) {

    }
}
```

Now we need to build the connector:

```
> mvn clean package
```

In this example we'll use `/home/oscerd/connectors/` as plugin.path, but we'll need the generated tar.gz from the previois build

```
> cd /home/oscerd/connectors/
> cp /home/workspace/miscellanea/sftp-extended/target/sftp-extended-0.11.0-package.tar.gz .
> untar.gz sftp-extended-0.11.0-package.tar.gz
```

Now it's time to setup the connector

Open the SFTP source configuration file

```
name=CamelSftpSourceConnector
connector.class=org.apache.camel.kafkaconnector.sftp.CamelSftpSourceConnector
key.converter=org.apache.kafka.connect.storage.StringConverter
value.converter=org.apache.kafka.connect.converters.ByteArrayConverter
transforms=RemoteTransformer
transforms.RemoteTransformer.type=org.apache.camel.kafkaconnector.RemoteFileTransforms

topics=mytopic

camel.source.path.host=localhost
camel.source.path.port=24
camel.source.path.directoryName=demos/
camel.source.endpoint.recursive=true
camel.source.endpoint.username=demo
camel.source.endpoint.password=demo
camel.source.endpoint.noop=false
camel.source.endpoint.move=.done
```

Now you can run the example

```
$KAFKA_HOME/bin/connect-standalone.sh $KAFKA_HOME/config/connect-standalone.properties config/CamelSftpSourceConnector.properties
```

Now we need to connect to the sftp server and add some stuff to the demos folder

```
> docker exec -it 1cb0cdd7b9a24112ecb9e4c7e195f01552e0c9187a173e29e6642c1f9d9b3455 bash
root@1cb0cdd7b9a2:/app# cd /home/demo/sftp/
root@1cb0cdd7b9a2:/home/demo/sftp# touch file.txt        
root@1cb0cdd7b9a2:/home/demo/sftp# echo "Test file content" > file.txt 
root@1cb0cdd7b9a2:/home/demo/sftp# mv file.txt demos/
```

In another terminal, using kafkacat, you should be able to see the headers.

```
> ./kafkacat -b localhost:9092 -t mytopic -f 'Headers: %h: Message value: %s\n'
% Auto-selecting Consumer mode (use -P or -C to override)
Headers: CamelHeader.CamelFileAbsolute=false,CamelHeader.CamelFileAbsolutePath=demos/file.txt,CamelHeader.CamelFileHost=localhost,CamelHeader.CamelFileLastModified=1604560.11.000,CamelHeader.CamelFileLength=29,CamelHeader.CamelFileName=file.txt,CamelHeader.CamelFileNameConsumed=file.txt,CamelHeader.CamelFileNameOnly=file.txt,CamelHeader.CamelFileParent=demos,CamelHeader.CamelFilePath=demos//file.txt,CamelHeader.CamelFileRelativePath=file.txt,CamelHeader.CamelFtpReplyCode=0,CamelHeader.CamelFtpReplyString=OK,CamelProperty.CamelBatchSize=1,CamelProperty.CamelUnitOfWorkProcessSync=true,CamelProperty.CamelBatchComplete=true,CamelProperty.CamelBatchIndex=0,CamelProperty.CamelToEndpoint=direct://end?pollingConsumerBlockTimeout=0&pollingConsumerBlockWhenFull=true&pollingConsumerQueueSize=1000: Message value: Test file content
% Reached end of topic mytopic [0] at offset 1
```

