package io.evercam.connect.helper; import android.content.Context; import android.os.AsyncTask; import android.os.Environment; import android.util.Log; import com.amazonaws.auth.BasicAWSCredentials; import com.amazonaws.regions.Region; import com.amazonaws.regions.Regions; import com.amazonaws.services.s3.AmazonS3Client; import com.amazonaws.services.s3.model.PutObjectRequest; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; /** * AwsS3Uploader * <p/> * Upload user data to AWS s3 */ public class AwsS3Uploader { private AmazonS3Client s3Client; private PutObjectRequest putObjectRequest; private final static String SUFFIX_TXT = ".txt"; public AwsS3Uploader(String title, String content, Context ctxt) { String accessKey = new PropertyReader(ctxt).getPropertyStr(PropertyReader.KEY_ACCESS_KEY); String secretKey = new PropertyReader(ctxt).getPropertyStr(PropertyReader.KEY_SECRET_KEY); s3Client = new AmazonS3Client(new BasicAWSCredentials(accessKey, secretKey)); s3Client.setRegion(Region.getRegion(Regions.EU_WEST_1)); S3PutObjectTask task = new S3PutObjectTask(); task.title = title; task.content = content; task.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); } private class S3PutObjectTask extends AsyncTask<Void, Void, Void> { String title = null; String content = null; @Override protected Void doInBackground(Void... params) { File file = new File(Environment.getExternalStorageDirectory() + File.separator + title + SUFFIX_TXT); try { file.createNewFile(); if(file.exists()) { OutputStream outputStream = new FileOutputStream(file); outputStream.write(content.getBytes()); outputStream.close(); try { putObjectRequest = new PutObjectRequest("evercamconnect-userdata", title + SUFFIX_TXT, file); s3Client.putObject(putObjectRequest); } catch(Exception e) { Log.e("evercamconnect", "Error while upload to S3" + e.toString()); } } } catch(IOException e) { e.printStackTrace(); } file.delete(); return null; } } }