Skip to content

Commit 1e1bfa1

Browse files
authored
Merge pull request #340 from RADAR-base/release-4.4.15
Sync release with dev
2 parents 790f405 + d364ef4 commit 1e1bfa1

9 files changed

Lines changed: 25 additions & 8 deletions

authorizer-app-backend/authorizer.yml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@ restSourceClients:
2626
clientId: <CLIENT_ID>
2727
clientSecret: <CLIENT_SECRET>
2828
scope: activity heartrate sleep profile
29-
3029
- sourceType: Huawei
3130
authorizationEndpoint: https://oauth-login.cloud.huawei.com/oauth2/v2/authorize
3231
tokenEndpoint: https://oauth-login.cloud.huawei.com/oauth2/v3/token

authorizer-app-backend/src/main/java/org/radarbase/authorizer/service/DelegatedRestSourceAuthorizationService.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,9 @@ class DelegatedRestSourceAuthorizationService(
3333
return provider.get()
3434
}
3535

36+
override suspend fun requestAccessToken(payload: RequestTokenPayload, sourceType: String): RestOauth2AccessToken =
37+
delegate(sourceType).requestAccessToken(payload, sourceType)
38+
3639
override suspend fun requestAccessToken(payload: RequestTokenPayload, sourceType: String, token: String?): RestOauth2AccessToken =
3740
delegate(sourceType).requestAccessToken(payload, sourceType, token)
3841

authorizer-app-backend/src/main/java/org/radarbase/authorizer/service/GarminOAuth2AuthorizationService.kt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ import org.radarbase.jersey.exception.HttpBadGatewayException
4646
import org.radarbase.jersey.exception.HttpInternalServerException
4747
import org.radarbase.jersey.service.AsyncCoroutineService
4848
import org.radarbase.kotlin.coroutines.forkJoin
49+
import org.slf4j.LoggerFactory
4950
import java.util.concurrent.ScheduledExecutorService
5051
import java.util.concurrent.TimeUnit
5152

@@ -225,6 +226,7 @@ class GarminOAuth2AuthorizationService(
225226
asyncService.runBlocking {
226227
userRepository
227228
.queryAllWithElapsedEndDate(GARMIN_AUTH)
229+
.filter { it.authorized }
228230
.forkJoin { revokeToken(it) }
229231
}
230232
}
@@ -244,14 +246,16 @@ class GarminOAuth2AuthorizationService(
244246
HttpStatusCode.OK -> response.body<RestOauth2UserId>().userId
245247

246248
HttpStatusCode.BadRequest, HttpStatusCode.Unauthorized, HttpStatusCode.Forbidden -> throw HttpBadGatewayException(
247-
"Service was unable to fetch the external ID",
249+
"Unable to fetch external ID (HTTP status ${response.status}): ${response.bodyAsText()}",
248250
)
249251

250252
else -> throw HttpBadGatewayException("Cannot connect to ${response.request.url}: HTTP status ${response.status}")
251253
}
252254
}
253255

254256
companion object {
257+
private val logger = LoggerFactory.getLogger(GarminOAuth2AuthorizationService::class.java)
258+
255259
private const val PKCE_CODE_CHALLENGE_METHOD = "S256"
256260
private const val GARMIN_USER_ID_ENDPOINT = "https://apis.garmin.com/wellness-api/rest/user/id"
257261
private const val DEREGISTER_CHECK_PERIOD = 3600000L

authorizer-app-backend/src/main/java/org/radarbase/authorizer/service/GarminOauth1AuthorizationService.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,7 @@ class GarminOauth1AuthorizationService(
8080
asyncService.runBlocking {
8181
userRepository
8282
.queryAllWithElapsedEndDate(GARMIN_AUTH)
83+
.filter { it.authorized }
8384
.forkJoin { revokeToken(it) }
8485
}
8586
}

authorizer-app-backend/src/main/java/org/radarbase/authorizer/service/HuaweiAuthorizationService.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import org.radarbase.authorizer.api.RestOauth2AccessToken
2121
import org.radarbase.authorizer.config.AuthorizerConfig
2222
import org.radarbase.authorizer.doa.entity.RestSourceUser
2323
import org.radarbase.jersey.exception.HttpBadGatewayException
24+
import org.slf4j.LoggerFactory
2425
import java.util.Base64
2526

2627
/**
@@ -162,6 +163,10 @@ class HuaweiAuthorizationService(
162163
}
163164
}
164165

166+
companion object {
167+
private val logger = LoggerFactory.getLogger(HuaweiAuthorizationService::class.java)
168+
}
169+
165170
@Serializable
166171
private data class HuaweiTokenResponse(
167172
@SerialName("access_token") val accessToken: String,

authorizer-app-backend/src/main/java/org/radarbase/authorizer/service/OAuth1RestSourceAuthorizationService.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ abstract class OAuth1RestSourceAuthorizationService(
5858
) : RestSourceAuthorizationService {
5959
private val httpClient = RestSourceAuthorizationService.httpClient()
6060

61-
override suspend fun requestAccessToken(payload: RequestTokenPayload, sourceType: String, token: String?): RestOauth2AccessToken {
61+
override suspend fun requestAccessToken(payload: RequestTokenPayload, sourceType: String): RestOauth2AccessToken {
6262
val authConfig = clientService.forSourceType(sourceType)
6363
logger.info("Requesting access token..")
6464

authorizer-app-backend/src/main/java/org/radarbase/authorizer/service/OAuth2RestSourceAuthorizationService.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ open class OAuth2RestSourceAuthorizationService(
4848
) : RestSourceAuthorizationService {
4949
protected val httpClient = RestSourceAuthorizationService.httpClient()
5050

51-
override suspend fun requestAccessToken(payload: RequestTokenPayload, sourceType: String, token: String?): RestOauth2AccessToken = withContext(Dispatchers.IO) {
51+
override suspend fun requestAccessToken(payload: RequestTokenPayload, sourceType: String): RestOauth2AccessToken = withContext(Dispatchers.IO) {
5252
logger.info("Requesting access token with authorization code")
5353
val response = submitForm(sourceType) { authorizationConfig ->
5454
payload.code?.let { append("code", it) }
@@ -141,6 +141,6 @@ open class OAuth2RestSourceAuthorizationService(
141141
}
142142

143143
companion object {
144-
val logger: Logger = LoggerFactory.getLogger(OAuth2RestSourceAuthorizationService::class.java)
144+
private val logger: Logger = LoggerFactory.getLogger(OAuth2RestSourceAuthorizationService::class.java)
145145
}
146146
}

authorizer-app-backend/src/main/java/org/radarbase/authorizer/service/OuraAuthorizationService.kt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,14 +19,15 @@ import org.radarbase.authorizer.api.RestOauth2AccessToken
1919
import org.radarbase.authorizer.config.AuthorizerConfig
2020
import org.radarbase.authorizer.doa.entity.RestSourceUser
2121
import org.radarbase.jersey.exception.HttpBadGatewayException
22+
import org.slf4j.LoggerFactory
2223
import java.io.IOException
2324

2425
class OuraAuthorizationService(
2526
@Context private val clients: RestSourceClientService,
2627
@Context private val config: AuthorizerConfig,
2728
) : OAuth2RestSourceAuthorizationService(clients, config) {
28-
override suspend fun requestAccessToken(payload: RequestTokenPayload, sourceType: String, token: String?): RestOauth2AccessToken {
29-
val accessToken: RestOauth2AccessToken = super.requestAccessToken(payload, sourceType, token)
29+
override suspend fun requestAccessToken(payload: RequestTokenPayload, sourceType: String): RestOauth2AccessToken {
30+
val accessToken: RestOauth2AccessToken = super.requestAccessToken(payload, sourceType)
3031
return accessToken.copy(externalUserId = getExternalId(accessToken.accessToken))
3132
}
3233

@@ -106,6 +107,7 @@ class OuraAuthorizationService(
106107
}
107108

108109
companion object {
110+
private val logger = LoggerFactory.getLogger(OuraAuthorizationService::class.java)
109111
private const val OURA_USER_ID_ENDPOINT = "https://api.ouraring.com/v2/usercollection/personal_info"
110112
}
111113
}

authorizer-app-backend/src/main/java/org/radarbase/authorizer/service/RestSourceAuthorizationService.kt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,10 @@ import org.radarbase.authorizer.doa.entity.RestSourceUser
3131
import kotlin.time.Duration.Companion.seconds
3232

3333
interface RestSourceAuthorizationService {
34-
suspend fun requestAccessToken(payload: RequestTokenPayload, sourceType: String, token: String? = null): RestOauth2AccessToken
34+
suspend fun requestAccessToken(payload: RequestTokenPayload, sourceType: String): RestOauth2AccessToken
35+
36+
suspend fun requestAccessToken(payload: RequestTokenPayload, sourceType: String, token: String?): RestOauth2AccessToken =
37+
requestAccessToken(payload, sourceType)
3538

3639
suspend fun refreshToken(user: RestSourceUser): RestOauth2AccessToken?
3740

0 commit comments

Comments
 (0)