Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.helopt.gorry.util;
- import android.content.Context;
- import android.net.ConnectivityManager;
- import android.util.Log;
- import com.amazonaws.auth.CognitoCachingCredentialsProvider;
- import com.amazonaws.mobileconnectors.s3.transferutility.TransferListener;
- import com.amazonaws.mobileconnectors.s3.transferutility.TransferObserver;
- import com.amazonaws.mobileconnectors.s3.transferutility.TransferState;
- import com.amazonaws.mobileconnectors.s3.transferutility.TransferUtility;
- import com.amazonaws.regions.Regions;
- import com.amazonaws.services.s3.AmazonS3Client;
- import com.amazonaws.services.s3.model.AccessControlList;
- import com.amazonaws.services.s3.model.GroupGrantee;
- import com.amazonaws.services.s3.model.Permission;
- import com.helopt.gorry.BuildConfig;
- import com.helopt.gorry.R;
- import com.helopt.gorry.app.BaseApplication;
- import java.io.File;
- /**
- * Created by Dihardja Software Solutions on 1/25/18.
- */
- public class UploadManager {
- private static UploadManager UPLOADMANAGER = null;
- CognitoCachingCredentialsProvider credentialsProvider;
- TransferUtility transferUtility;
- AmazonS3Client s3Client;
- AccessControlList acl;
- String bucketName = "helopt-dev";
- // String s3BaseUrl;
- public UploadManager() {
- credentialsProvider = new CognitoCachingCredentialsProvider(BaseApplication.getInstance().getApplicationContext(),
- BaseApplication.AWS_COGNITO_POOL_ID,
- Regions.AP_SOUTHEAST_1);
- // clientConfiguration = new ClientConfiguration();
- // clientConfiguration.setProtocol(Protocol.HTTP);
- s3Client = new AmazonS3Client(credentialsProvider);
- // transferUtility = new TransferUtility(s3Client, App.getInstance().getApplicationContext());
- transferUtility = TransferUtility.builder().s3Client(s3Client).context(BaseApplication.getInstance().getApplicationContext()).build();
- acl = new AccessControlList();
- // s3Client = new AmazonS3Client(new BasicAWSCredentials(ConstantsManager.getAwsAccessKey(), ConstantsManager.getAwsSecretKey()));
- acl.grantPermission(GroupGrantee.AllUsers, Permission.Read);
- }
- public static UploadManager getInstance() {
- if (UPLOADMANAGER == null) {
- UPLOADMANAGER = new UploadManager();
- }
- return UPLOADMANAGER;
- }
- private void uploadImageToS3WithListener(File imageFile, final String fileKeyName, final S3ImageUploadListener listener) {
- final TransferObserver transferObserver = transferUtility.upload(
- bucketName,
- fileKeyName,
- imageFile);
- final int transferObserverId = transferObserver.getId();
- transferObserver.setTransferListener(new TransferListener() {
- @Override
- public void onStateChanged(int id, TransferState state) {
- Log.v("UploadManager", " state: " + state);
- if (state == TransferState.COMPLETED) {
- listener.onSuccess(s3Client.getResourceUrl(bucketName, fileKeyName));
- } else {
- if (state == TransferState.CANCELED) {
- listener.onFailed("Failed to upload image");
- } else if (!isOnline()) {
- transferUtility.cancel(transferObserverId);
- }
- }
- }
- @Override
- public void onProgressChanged(int id, long bytesCurrent, long bytesTotal) {
- }
- @Override
- public void onError(int id, Exception ex) {
- //TODO : Localization
- listener.onFailed(ex.getLocalizedMessage());
- }
- });
- Log.v("s3Image", "upload image on progress");
- }
- public boolean isOnline() {
- try {
- ConnectivityManager cm = (ConnectivityManager) BaseApplication.getInstance().getApplicationContext().getSystemService(Context.CONNECTIVITY_SERVICE);
- return cm.getActiveNetworkInfo().isConnectedOrConnecting();
- } catch (Exception e) {
- return false;
- }
- }
- // journals/{{userid}}/{{personid}}/timestamp.jpg
- public void uploadJournalImage(File imageFile, String userId, String personId, S3ImageUploadListener listener) {
- String fileKeyName = "journals/" + userId + "/" + personId + "/" + System.currentTimeMillis() + ".jpg";
- uploadImageToS3WithListener(imageFile, fileKeyName, listener);
- }
- public void uploadProfileImage(File imageFile, String userId, S3ImageUploadListener listener) {
- String fileKeyName = "users/" + userId + "-" + System.currentTimeMillis() + ".jpg";
- uploadImageToS3WithListener(imageFile, fileKeyName, listener);
- }
- public interface S3ImageUploadListener {
- void onSuccess(String imageURL);
- void onFailed(String message);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement