hasancse1991

Untitled

Mar 21st, 2020
714
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Kotlin 2.07 KB | None | 0 0
  1. private fun uploadFileToS3Bucket(filePath: String, credential: AwsCredentialResponse): Maybe<String> {
  2.  
  3.         // from blog: http://blog.mallow-tech.com/2019/01/how-to-upload-files-from-an-android-app-to-aws-s3/
  4.         return Maybe.create { emitter ->
  5.  
  6.             TransferNetworkLossHandler.getInstance(context)
  7.            
  8.             val awsCredential = BasicAWSCredentials(
  9.                 credential.credentials.accessKeyId,
  10.                 credential.credentials.secretAccessKey)
  11.  
  12.             val s3Client = AmazonS3Client(awsCredential, getRegion(Regions.EU_WEST_1))
  13.             val file = File(filePath)
  14.  
  15.             val transferUtility = TransferUtility.builder().s3Client(s3Client).context(context).build()
  16.  
  17.             val transferObserver: TransferObserver = transferUtility.upload(
  18.                 credential.bucket,
  19.                 credential.key,
  20.                 file,
  21.                 CannedAccessControlList.PublicRead
  22.             )
  23.  
  24.             transferObserver.setTransferListener(object : TransferListener {
  25.  
  26.                 override fun onStateChanged(id: Int, state: TransferState?) {
  27.  
  28.                     when(state) {
  29.  
  30.                         TransferState.IN_PROGRESS -> {
  31.  
  32.                         }
  33.                         TransferState.COMPLETED -> {
  34.  
  35.                         }
  36.                         TransferState.FAILED -> {
  37.  
  38.                         }
  39.                         else -> {
  40.  
  41.                         }
  42.                     }
  43.                 }
  44.  
  45.                 override fun onProgressChanged(
  46.                     id: Int,
  47.                     bytesCurrent: Long,
  48.                     bytesTotal: Long) {
  49.  
  50.                     if(bytesCurrent == bytesTotal) {
  51.                         emitter.onSuccess(
  52.                             "${credential.bucket}/${session.user!!.uid}/files" +
  53.                                 "${key}.pdf")
  54.                     }
  55.                 }
  56.  
  57.                 override fun onError(id: Int, e: Exception) {
  58.                     emitter.onError(e)
  59.                 }
  60.             })
  61.         }
  62.  
  63.     }
Advertisement
Add Comment
Please, Sign In to add comment