From df8e10fac3e589150c67a1a9a43fea886d2b170d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Abel=20Garci=CC=81a=20de=20Prada?= Date: Wed, 23 Dec 2020 18:00:11 +0100 Subject: [PATCH] Polish code. Send only info required for each type of request --- .../oauth/TokenRequestRemoteOperation.kt | 8 +-- .../oauth/params/TokenRequestParams.kt | 55 ++++++++++++++++--- 2 files changed, 48 insertions(+), 15 deletions(-) diff --git a/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/oauth/TokenRequestRemoteOperation.kt b/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/oauth/TokenRequestRemoteOperation.kt index c927d11b..79bba2e3 100644 --- a/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/oauth/TokenRequestRemoteOperation.kt +++ b/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/oauth/TokenRequestRemoteOperation.kt @@ -59,13 +59,7 @@ class TokenRequestRemoteOperation( var result: RemoteOperationResult try { - val requestBody = FormBody.Builder() - .add(HEADER_AUTHORIZATION_CODE, tokenRequestParams.authorizationCode) - .add(HEADER_GRANT_TYPE, tokenRequestParams.grantType) - .add(HEADER_REDIRECT_URI, tokenRequestParams.redirectUri) - .add(HEADER_CODE_VERIFIER, tokenRequestParams.codeVerifier) - .add(HEADER_REFRESH_TOKEN, tokenRequestParams.refreshToken.orEmpty()) - .build() + val requestBody = tokenRequestParams.toRequestBody() val postMethod = PostMethod(URL(tokenRequestParams.tokenEndpoint), requestBody) diff --git a/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/oauth/params/TokenRequestParams.kt b/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/oauth/params/TokenRequestParams.kt index 00b34f85..bc1a1293 100644 --- a/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/oauth/params/TokenRequestParams.kt +++ b/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/oauth/params/TokenRequestParams.kt @@ -23,12 +23,51 @@ */ package com.owncloud.android.lib.resources.oauth.params -class TokenRequestParams( +import com.owncloud.android.lib.common.http.HttpConstants +import okhttp3.FormBody +import okhttp3.RequestBody + +sealed class TokenRequestParams( val tokenEndpoint: String, - val authorizationCode: String, - val grantType: String, - val redirectUri: String, - val refreshToken: String? = null, - val codeVerifier: String, - val clientAuth: String -) + val clientAuth: String, + val grantType: String +) { + abstract fun toRequestBody(): RequestBody + + class Authorization( + tokenEndpoint: String, + clientAuth: String, + grantType: String, + val authorizationCode: String, + val redirectUri: String, + val codeVerifier: String + ) : TokenRequestParams(tokenEndpoint, clientAuth, grantType) { + + override fun toRequestBody(): RequestBody { + return FormBody.Builder() + .add(HttpConstants.HEADER_AUTHORIZATION_CODE, authorizationCode) + .add(HttpConstants.HEADER_GRANT_TYPE, grantType) + .add(HttpConstants.HEADER_REDIRECT_URI, redirectUri) + .add(HttpConstants.HEADER_CODE_VERIFIER, codeVerifier) + .build() + } + } + + class RefreshToken( + tokenEndpoint: String, + clientAuth: String, + grantType: String, + val refreshToken: String? = null + ) : TokenRequestParams(tokenEndpoint, clientAuth, grantType) { + + override fun toRequestBody(): RequestBody { + return FormBody.Builder().apply { + add(HttpConstants.HEADER_GRANT_TYPE, grantType) + if (!refreshToken.isNullOrBlank()) { + add(HttpConstants.HEADER_REFRESH_TOKEN, refreshToken) + } + }.build() + + } + } +}