package MasteringHadoop;
 
 import com.amazonaws.AmazonServiceException;
 import com.amazonaws.auth.BasicAWSCredentials;
 import com.amazonaws.services.s3.AmazonS3Client;
 import com.amazonaws.services.s3.model.*;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.fs.*;
 import org.apache.hadoop.fs.permission.FsPermission;
 import org.apache.hadoop.util.Progressable;
 
 import java.io.*;
 import java.net.URI;
 import java.util.ArrayList;
 
 public class S3NFileSystem extends FileSystem {
 
     private URI uri;
     private AmazonS3Client s3Client;
     private Configuration configuration;
     private String bucket;
 
     public S3NFileSystem(){
         super();
     }
 
     @Override
     public void initialize(URI name, Configuration conf) throws IOException {
 
         super.initialize(name, conf);
         this.uri = URI.create(name.getScheme() + "://" + name.getAuthority());
 
         String accessKey = conf.get("fs.s3mh.access.key");
         String secretKey = conf.get("fs.s3mh.secret.key");
 
         System.out.println("Access Key: "  + accessKey);
 
         s3Client = new AmazonS3Client(new BasicAWSCredentials(accessKey, secretKey));
 
         this.bucket = name.getHost();
 
         if(!s3Client.doesBucketExist(this.bucket)){
             throw new IOException("Bucket " + this.bucket + " does not exist!");
         }
 
         this.configuration = conf;
 
 
     }
 
     @Override
     public String getScheme() {
         return "s3mh";
 
     }
 
     @Override
     public URI getUri() {
         return uri;
     }
 
 
