Bläddra i källkod

New: add client id and client secret to interceptor

liweihao 6 år sedan
förälder
incheckning
9a42129521

+ 4 - 4
readme.md

@@ -15,11 +15,11 @@ dependencies {
 ## Sample
 
 ```kotlin
- BoMoCloud.getInstance().authService
+val bomoCloud = BoMoCloud("clientId","clientSecret")
+
+boMoCloud.authService
  .signIn("email",
- 		 "password",
- 		 "clientId",
- 		 "clientSecret")
+ 		 "password")
  .subscribeOn(Scedulers.io())
  .observeOn(AndroidScedulers.mainThread())
  .subscribe({

+ 26 - 13
src/main/java/com/example/bomocloud/BoMoCloud.kt

@@ -3,28 +3,32 @@ package com.example.bomocloud
 import com.example.bomocloud.auth.AuthService
 import com.example.bomocloud.home.HomeService
 import com.example.bomocloud.theme.ThemeService
+import okhttp3.Interceptor
 import okhttp3.OkHttpClient
 import retrofit2.Retrofit
 import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory
 import retrofit2.converter.gson.GsonConverterFactory
 
-class BoMoCloud private constructor() {
+class BoMoCloud(val clientId: String, val clientSecret: String) {
 
     companion object {
         const val DEBUG_HOST = "https://preparing.bomostory.com/"
         const val RELEASE_HOST = "http://localhost:3000/"
-        
-        @Volatile
-        private var INSTANCE: BoMoCloud? = null
-
-        private fun build(): BoMoCloud {
-            return BoMoCloud()
-        }
-
-        fun getInstance(): BoMoCloud =
-                INSTANCE ?: synchronized(this) {
-                    INSTANCE ?: build().also { INSTANCE = it }
-                }
+
+        const val CLIENT_ID = "client_id"
+        const val CLIENT_SECRET = "client_secret"
+
+//        @Volatile
+//        private var INSTANCE: BoMoCloud? = null
+//
+//        private fun build(): BoMoCloud {
+//            return BoMoCloud()
+//        }
+//
+//        fun getInstance(): BoMoCloud =
+//                INSTANCE ?: synchronized(this) {
+//                    INSTANCE ?: build().also { INSTANCE = it }
+//                }
     }
 
     val host = if (BuildConfig.DEBUG) DEBUG_HOST else RELEASE_HOST
@@ -51,5 +55,14 @@ class BoMoCloud private constructor() {
 
     private fun provideOkHttpClient(): OkHttpClient =
             OkHttpClient.Builder()
+                    .addInterceptor {
+                        var request = it.request()
+                        val httpUrl = request.url().newBuilder()
+                                .addQueryParameter(CLIENT_ID, clientId)
+                                .addQueryParameter(CLIENT_SECRET, clientSecret)
+                                .build()
+                        request = request.newBuilder().url(httpUrl).build()
+                        it.proceed(request)
+                    }
                     .build()
 }

+ 3 - 13
src/main/java/com/example/bomocloud/auth/AuthService.kt

@@ -13,24 +13,18 @@ interface AuthService {
     @POST("sign_in")
     fun signIn(
             @Query("email") email: String,
-            @Query("password") password: String,
-            @Query("client_id") clientId: String,
-            @Query("client_secret") clientSecret: String
+            @Query("password") password: String
     ): Observable<SignInData>
 
     @POST("sign_up")
     fun signUp(
             @Query("email") email: String,
             @Query("password") password: String,
-            @Query("client_id") clientId: String,
-            @Query("client_secret") clientSecret: String,
             @Query("name") name: String
     ): Observable<SignUpData>
 
     @POST("through_omniauth")
     fun throughOmniAuth(
-            @Query("client_id") clientId: String,
-            @Query("client_secret") clientSecret: String,
             @Query("provider") provider: String,
             @Query("omniauth_toke") omniAuthToken: String,
             @Query("omniauth_secret") omniAuthSecret: String,
@@ -40,16 +34,12 @@ interface AuthService {
 
     @POST("reset_password")
     fun resetPassword(
-            @Query("email") email: String,
-            @Query("client_id") clientId: String,
-            @Query("client_secret") clientSecret: String
+            @Query("email") email: String
     ): Observable<ResetPasswordData>
 
     @POST("resend_confirmation")
     fun resendConfirmation(
             @Query("email") email: String,
-            @Query("password") password: String,
-            @Query("client_id") clientId: String,
-            @Query("client_secret") clientSecret: String
+            @Query("password") password: String
     ): Observable<ResendConfirmationData>
 }

+ 0 - 6
src/main/java/com/example/bomocloud/home/HomeService.kt

@@ -13,23 +13,17 @@ interface HomeService {
 
     @GET("me")
     fun getMe(
-            @Query("client_id") clientId: String,
-            @Query("client_secret") clientSecret: String,
             @Query("access_token") accessToken: String
 
     ): Observable<MeData>
 
     @GET("avator_upload_url")
     fun getAvatorUploadUrl(
-            @Query("client_id") clientId: String,
-            @Query("client_secret") clientSecret: String,
             @Query("access_token") accessToken: String
     ): Observable<AvatorUploadUrlData>
 
     @POST("play_receipt")
     fun getReceipt(
-            @Query("client_id") clientId: String,
-            @Query("client_secret") clientSecret: String,
             @Query("package_name") packageName: String,
             @Query("subscription_id") subscriptionId: String,
             @Query("token") token: String

+ 0 - 8
src/main/java/com/example/bomocloud/theme/ThemeService.kt

@@ -13,30 +13,22 @@ interface ThemeService {
 
     @GET("themes")
     fun getAllThemes(
-            @Query("client_id") clientId: String,
-            @Query("client_secret") clientSecret: String
     ): Observable<AllThemeData>
 
     @GET("themes_for_user")
     fun getUserThemes(
-            @Query("client_id") clientId: String,
-            @Query("client_secret") clientSecret: String,
             @Query("access_token") accessToken: String
     ): Observable<UserThemeData>
 
     @GET("themes/{theme_id}")
     fun getThemeDownloadUrl(
             @Path("theme_id") themeId: Int,
-            @Query("client_id") clientId: String,
-            @Query("client_secret") clientSecret: String,
             @Query("access_token") accessToken: String
     ): Observable<ThemeDownloadUrlData>
 
     @GET("themes/{theme_id}/preview")
     fun getThemePreviewUrl(
             @Path("theme_id") themeId: Int,
-            @Query("client_id") clientId: String,
-            @Query("client_secret") clientSecret: String,
             @Query("access_token") accessToken: String
     ): Observable<ThemePreviewUrlData>
 }