package com.neverwinterdp.scribengin.nizarS3.sink;
import com.amazonaws.AmazonClientException;
import com.amazonaws.auth.AWSCredentials;
import com.amazonaws.auth.profile.ProfileCredentialsProvider;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3Client;
import com.google.inject.AbstractModule;
import com.neverwinterdp.scribengin.storage.StreamDescriptor;
import com.neverwinterdp.scribengin.storage.sink.partitioner.OffsetPartitioner;
import com.neverwinterdp.scribengin.storage.sink.partitioner.SinkPartitioner;
/**
* The Class S3Module.
*/
public class S3Module extends AbstractModule {
/** The s3 sink config. */
private S3SinkConfig s3SinkConfig;
/**
* The Constructor.
*
* @param propFilePath
* the prop file path
* @param topic
* the topic
* @param kafkaPartition
* the kafka partition
*/
public S3Module(StreamDescriptor propMap) {
s3SinkConfig = new S3SinkConfig(propMap);
}
/*
* (non-Javadoc)
*
* @see com.google.inject.AbstractModule#configure()
*/
@Override
protected void configure() {
AWSCredentials credentials = null;
try {
credentials = new ProfileCredentialsProvider().getCredentials();
} catch (Exception e) {
throw new AmazonClientException("Cannot load the credentials from the credential profiles file. ", e);
}
bind(AmazonS3.class).toInstance(new AmazonS3Client(credentials));
SinkPartitioner sp = new OffsetPartitioner(s3SinkConfig.getOffsetPerPartition());
bind(SinkPartitioner.class).toInstance(sp);
bind(S3SinkConfig.class).toInstance(s3SinkConfig);
}
}