Ver Fonte

New: aws s3 service to upload avator image api

liweihao há 6 anos atrás
pai
commit
2a8e0386ff

+ 1 - 1
build.gradle

@@ -34,9 +34,9 @@ dependencies {
     androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
 
     //retrofit 2
-    implementation 'com.squareup.retrofit2:retrofit:2.4.0'
     implementation 'com.squareup.retrofit2:converter-gson:2.4.0'
     implementation "com.squareup.retrofit2:adapter-rxjava2:2.4.0"
+    api 'com.squareup.retrofit2:retrofit:2.4.0'
 
     api 'io.reactivex.rxjava2:rxandroid:2.1.0'
     api 'io.reactivex.rxjava2:rxjava:2.2.1'

+ 29 - 2
readme.md

@@ -1,4 +1,4 @@
-# BOMO Cloud
+# Cloud Module
 
 
 
@@ -12,7 +12,7 @@ dependencies {
 
 
 
-## Sample
+## Sample - Bomo Cloud
 
 ```kotlin
 val bomoCloud = BoMoCloud("clientId","clientSecret")
@@ -28,6 +28,33 @@ boMoCloud.authService
    	it.printStackTrace()})
 ```
 
+## Sample - AwsS3
+
+```kotlin
+ val awsS3 = AwsS3()
+ val avatorUri = Uri.parse("avatorUri")
+ val requestBody = RequestBody.create(MediaType.parse("image/*"), File("filePath"))
+ val part = MultipartBody.Part.create(requestBody)
+ 
+ awsS3.uploadFileService.uploadFile(
+     avatorUri.lastPathSegment,
+     avatorUri.getQueryParameter(UploadFileService.ALGORITHM),
+     avatorUri.getQueryParameter(UploadFileService.CREDENTIAL),
+     avatorUri.getQueryParameter(UploadFileService.DATE),
+     avatorUri.getQueryParameter(UploadFileService.EXPIRES),
+     avatorUri.getQueryParameter(UploadFileService.SIGNED_HEADERS),
+     avatorUri.getQueryParameter(UploadFileService.SIGNATURE),
+     part)
+     .enqueue(object : retrofit2.Callback<ResponseBody> {
+         override fun onFailure(call: Call<ResponseBody>?, t: Throwable?) { 						t?.printStackTrace()
+                                                                          }
+
+         override fun onResponse(call: Call<ResponseBody>?, response: 							 Response<ResponseBody>?) {
+            response?.code()
+                  		 		  }
+     })
+```
+
 
 
 ## API 文件

+ 23 - 0
src/main/java/com/example/bomocloud/AwsS3.kt

@@ -0,0 +1,23 @@
+package com.example.bomocloud
+
+import retrofit2.Retrofit
+import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory
+import retrofit2.converter.gson.GsonConverterFactory
+
+class AwsS3 {
+    companion object {
+        const val HOST = "https://bomo-story-dev.s3.ap-southeast-1.amazonaws.com/"
+    }
+
+    val uploadFileService = buildUploadFileService()
+
+    private fun buildUploadFileService(): UploadFileService =
+            getRetrofit(HOST + UploadFileService.BASE_URL).create(UploadFileService::class.java)
+
+    private fun getRetrofit(baseUrl: String): Retrofit =
+            Retrofit.Builder()
+                    .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
+                    .addConverterFactory(GsonConverterFactory.create())
+                    .baseUrl(baseUrl)
+                    .build()
+}

+ 32 - 0
src/main/java/com/example/bomocloud/UploadFileService.kt

@@ -0,0 +1,32 @@
+package com.example.bomocloud
+
+import okhttp3.MultipartBody
+import okhttp3.ResponseBody
+import retrofit2.Call
+import retrofit2.http.*
+
+interface UploadFileService {
+    companion object {
+        const val BASE_URL = "private/"
+
+        const val ALGORITHM = "X-Amz-Algorithm"
+        const val CREDENTIAL = "X-Amz-Credential"
+        const val DATE = "X-Amz-Date"
+        const val EXPIRES = "X-Amz-Expires"
+        const val SIGNED_HEADERS = "X-Amz-SignedHeaders"
+        const val SIGNATURE = "X-Amz-Signature"
+    }
+
+    @Multipart
+    @PUT("avators/{imageName}")
+    fun uploadFile(
+            @Path("imageName") path: String,
+            @Query(ALGORITHM) algorithm: String,
+            @Query(CREDENTIAL) credential: String,
+            @Query(DATE) date: String,
+            @Query(EXPIRES) expires: String,
+            @Query(SIGNED_HEADERS) signedHeaders: String,
+            @Query(SIGNATURE) signature: String,
+            @Part part: MultipartBody.Part
+    ): Call<ResponseBody>
+}