Skip to content

Commit f3802fc

Browse files
committed
PassageClientSevice added, others class updated
1 parent ace50b0 commit f3802fc

10 files changed

+78
-62
lines changed

.github/workflows/create-release.yml

+9-3
Original file line numberDiff line numberDiff line change
@@ -134,26 +134,32 @@ jobs:
134134
sed -i "s/versionCode .*/versionCode $new_version_code/" passage/build.gradle
135135
echo "Updated to patch version $new_version with version code $new_version_code"
136136
137-
- name: Update version in README - major release
137+
- name: Update version in README and PassageClientService - major release
138138
if: ${{ github.event.inputs.release-type == 'major' }}
139139
run: |
140140
new_version=${{ needs.determine-next-versions.outputs.next-major }}
141141
sed -i "s/implementation 'id\.passage\.android:passage:[0-9]*\.[0-9]*\.[0-9]*'/implementation 'id.passage.android:passage:$new_version'/" README.md
142142
echo "Updated README to version $new_version"
143+
sed -i "s/private const val PACKAGE_VERSION_NUMBER = \"[0-9]*\.[0-9]*\.[0-9]*\"/private const val PACKAGE_VERSION_NUMBER = \"$new_version\"/" passage/src/main/java/id/passage/android/services/PassageClientService.kt
144+
echo "Updated PassageClientService to version $new_version"
143145
144-
- name: Update version in README - minor release
146+
- name: Update version in README and PassageClientService - minor release
145147
if: ${{ github.event.inputs.release-type == 'minor' }}
146148
run: |
147149
new_version=${{ needs.determine-next-versions.outputs.next-minor }}
148150
sed -i "s/implementation 'id\.passage\.android:passage:[0-9]*\.[0-9]*\.[0-9]*'/implementation 'id.passage.android:passage:$new_version'/" README.md
149151
echo "Updated README to version $new_version"
152+
sed -i "s/private const val PACKAGE_VERSION_NUMBER = \"[0-9]*\.[0-9]*\.[0-9]*\"/private const val PACKAGE_VERSION_NUMBER = \"$new_version\"/" passage/src/main/java/id/passage/android/services/PassageClientService.kt
153+
echo "Updated PassageClientService to version $new_version"
150154
151-
- name: Update version in README - patch release
155+
- name: Update version in README and PassageClientService - patch release
152156
if: ${{ github.event.inputs.release-type == 'patch' }}
153157
run: |
154158
new_version=${{ needs.determine-next-versions.outputs.next-patch }}
155159
sed -i "s/implementation 'id\.passage\.android:passage:[0-9]*\.[0-9]*\.[0-9]*'/implementation 'id.passage.android:passage:$new_version'/" README.md
156160
echo "Updated README to version $new_version"
161+
sed -i "s/private const val PACKAGE_VERSION_NUMBER = \"[0-9]*\.[0-9]*\.[0-9]*\"/private const val PACKAGE_VERSION_NUMBER = \"$new_version\"/" passage/src/main/java/id/passage/android/services/PassageClientService.kt
162+
echo "Updated PassageClientService to version $new_version"
157163
158164
- name: Commit major version change
159165
uses: stefanzweifel/git-auto-commit-action@v4
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package id.passage.android
22

3+
import PassageClientService
34
import android.app.Activity
4-
import android.webkit.WebSettings
55
import id.passage.android.utils.ResourceUtils.Companion.getRequiredResourceFromApp
66
import okhttp3.OkHttpClient
77

@@ -23,7 +23,6 @@ class Passage(
2323
// region CONSTANTS AND SINGLETON VARIABLES
2424
internal companion object {
2525
internal const val TAG = "Passage"
26-
internal var BASE_PATH = "https://auth.passage.id/v1"
2726
internal lateinit var appId: String
2827
internal lateinit var authOrigin: String
2928
}
@@ -32,19 +31,7 @@ class Passage(
3231

3332
init {
3433
authOrigin = getRequiredResourceFromApp(activity, "passage_auth_origin")
35-
val userAgent = WebSettings.getDefaultUserAgent(activity) ?: "Android"
36-
passageClient =
37-
OkHttpClient
38-
.Builder()
39-
.addNetworkInterceptor { chain ->
40-
chain.proceed(
41-
chain
42-
.request()
43-
.newBuilder()
44-
.header("User-Agent", userAgent)
45-
.build(),
46-
)
47-
}.build()
34+
passageClient = PassageClientService.setup(activity)
4835
Companion.appId = appId
4936
tokenStore = PassageTokenStore(activity)
5037
app = PassageApp(passageClient)
@@ -53,10 +40,7 @@ class Passage(
5340
hosted = PassageHosted(activity, tokenStore)
5441
social = PassageSocial(passageClient, activity, tokenStore)
5542
magicLink = PassageMagicLink(passageClient, tokenStore)
56-
currentUser = PassageCurrentUser(tokenStore, activity)
43+
currentUser = PassageCurrentUser(tokenStore, activity, passageClient)
5744
}
5845

59-
public fun overrideBasePath(newPath: String) {
60-
BASE_PATH = newPath
61-
}
6246
}

passage/src/main/java/id/passage/android/PassageApp.kt

+4-3
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package id.passage.android
22

3+
import PassageClientService
34
import id.passage.android.api.AppsAPI
45
import id.passage.android.api.UsersAPI
56
import id.passage.android.exceptions.AppInfoException
@@ -21,7 +22,7 @@ class PassageApp(
2122
* @throws AppInfoException
2223
*/
2324
suspend fun info(): PassageAppInfo {
24-
val appsAPI = AppsAPI(Passage.BASE_PATH, passageClient)
25+
val appsAPI = AppsAPI(PassageClientService.basePath, passageClient)
2526
return try {
2627
appsAPI.getApp(Passage.appId)
2728
} catch (e: Exception) {
@@ -39,7 +40,7 @@ class PassageApp(
3940
* @return PublicUserInfo?
4041
*/
4142
suspend fun userExists(identifier: String): PublicUserInfo? {
42-
val usersAPI = UsersAPI()
43+
val usersAPI = UsersAPI(PassageClientService.basePath, passageClient)
4344
return try {
4445
usersAPI.checkUserIdentifier(Passage.appId, identifier).user
4546
} catch (e: Exception) {
@@ -61,7 +62,7 @@ class PassageApp(
6162
identifier: String,
6263
userMetadata: Any?,
6364
): PublicUserInfo {
64-
val usersAPI = UsersAPI()
65+
val usersAPI = UsersAPI(PassageClientService.basePath, passageClient)
6566
return try {
6667
usersAPI.createUser(Passage.appId, CreateUserParams(identifier, userMetadata)).user ?: throw Exception("User is null")
6768
} catch (e: Exception) {

passage/src/main/java/id/passage/android/PassageCurrentUser.kt

+13-11
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,12 @@ import id.passage.android.utils.Passkey
2323
import id.passage.android.utils.PasskeyCreationOptions
2424
import id.passage.android.utils.PasskeyUtils
2525
import id.passage.android.utils.SocialConnection
26+
import okhttp3.OkHttpClient
2627

2728
class PassageCurrentUser(
2829
private val tokenStore: PassageTokenStore,
2930
private val activity: Activity,
31+
private val passageClient: OkHttpClient
3032
) {
3133
/**
3234
* Get Current User
@@ -38,7 +40,7 @@ class PassageCurrentUser(
3840
* @throws PassageUserException
3941
*/
4042
suspend fun userInfo(): CurrentUserInfo {
41-
val currentUserAPI = CurrentuserAPI(Passage.BASE_PATH)
43+
val currentUserAPI = CurrentuserAPI(PassageClientService.basePath, passageClient)
4244
try {
4345
return currentUserAPI.getCurrentuser(Passage.appId).user
4446
} catch (e: Exception) {
@@ -59,7 +61,7 @@ class PassageCurrentUser(
5961
newEmail: String,
6062
language: String? = null,
6163
): MagicLink {
62-
val currentUserAPI = CurrentuserAPI(Passage.BASE_PATH)
64+
val currentUserAPI = CurrentuserAPI(PassageClientService.basePath, passageClient)
6365
val request = UpdateUserEmailRequest(newEmail, language, null, null)
6466
val response =
6567
try {
@@ -83,7 +85,7 @@ class PassageCurrentUser(
8385
newPhone: String,
8486
language: String? = null,
8587
): MagicLink {
86-
val currentUserAPI = CurrentuserAPI(Passage.BASE_PATH)
88+
val currentUserAPI = CurrentuserAPI(PassageClientService.basePath, passageClient)
8789
val request = UpdateUserPhoneRequest(language, null, newPhone, null)
8890
val response =
8991
try {
@@ -102,7 +104,7 @@ class PassageCurrentUser(
102104
* @throws PassageUserException
103105
*/
104106
suspend fun passkeys(): List<Passkey> {
105-
val currentUserAPI = CurrentuserAPI(Passage.BASE_PATH)
107+
val currentUserAPI = CurrentuserAPI(PassageClientService.basePath, passageClient)
106108
return try {
107109
currentUserAPI.getCurrentuserDevices(Passage.appId).devices
108110
} catch (e: Exception) {
@@ -121,7 +123,7 @@ class PassageCurrentUser(
121123
*/
122124
suspend fun addPasskey(options: PasskeyCreationOptions? = null): Passkey {
123125
try {
124-
val currentUserAPI = CurrentuserAPI(Passage.BASE_PATH)
126+
val currentUserAPI = CurrentuserAPI(PassageClientService.basePath, passageClient)
125127
// Get Create Credential challenge from Passage
126128
val authenticatorAttachment =
127129
options?.authenticatorAttachment
@@ -154,7 +156,7 @@ class PassageCurrentUser(
154156
* @throws PassageUserException
155157
*/
156158
suspend fun deletePasskey(passkeyId: String) {
157-
val currentUserAPI = CurrentuserAPI(Passage.BASE_PATH)
159+
val currentUserAPI = CurrentuserAPI(PassageClientService.basePath, passageClient)
158160
try {
159161
currentUserAPI.deleteCurrentuserDevice(Passage.appId, passkeyId)
160162
} catch (e: Exception) {
@@ -176,7 +178,7 @@ class PassageCurrentUser(
176178
passkeyId: String,
177179
friendlyName: String,
178180
): Passkey {
179-
val currentUserAPI = CurrentuserAPI(Passage.BASE_PATH)
181+
val currentUserAPI = CurrentuserAPI(PassageClientService.basePath, passageClient)
180182
val request = UpdateDeviceRequest(friendlyName = friendlyName)
181183
return try {
182184
currentUserAPI.updateCurrentuserDevice(Passage.appId, passkeyId, request).device
@@ -193,7 +195,7 @@ class PassageCurrentUser(
193195
* @throws PassageUserException If an error occurs during the retrieval process
194196
*/
195197
suspend fun socialConnections(): UserSocialConnections {
196-
val currentUserAPI = CurrentuserAPI(Passage.BASE_PATH)
198+
val currentUserAPI = CurrentuserAPI(PassageClientService.basePath)
197199
try {
198200
return currentUserAPI.getCurrentuserSocialConnections(Passage.appId).socialConnections
199201
} catch (e: Exception) {
@@ -209,7 +211,7 @@ class PassageCurrentUser(
209211
* @throws PassageUserException If an error occurs during the deletion process
210212
*/
211213
suspend fun deleteSocialConnection(socialConnectionType: SocialConnection) {
212-
val currentUserAPI = CurrentuserAPI(Passage.BASE_PATH)
214+
val currentUserAPI = CurrentuserAPI(PassageClientService.basePath, passageClient)
213215
try {
214216
return currentUserAPI.deleteCurrentuserSocialConnection(Passage.appId, socialConnectionType)
215217
} catch (e: Exception) {
@@ -225,7 +227,7 @@ class PassageCurrentUser(
225227
* @return Metadata? containing the current user's metadata, null if retrieval fails
226228
*/
227229
suspend fun metadata(): Metadata? {
228-
val currentUserAPI = CurrentuserAPI(Passage.BASE_PATH)
230+
val currentUserAPI = CurrentuserAPI(PassageClientService.basePath, passageClient)
229231
return try {
230232
currentUserAPI.getCurrentuserMetadata(Passage.appId)
231233
} catch (e: Exception) {
@@ -242,7 +244,7 @@ class PassageCurrentUser(
242244
* @return CurrentUserInfo? containing the updated user information, null if the update fails
243245
*/
244246
suspend fun updateMetadata(metadata: Metadata): CurrentUserInfo? {
245-
val currentUserAPI = CurrentuserAPI(Passage.BASE_PATH)
247+
val currentUserAPI = CurrentuserAPI(PassageClientService.basePath, passageClient)
246248
val request = UpdateMetadataRequest(userMetadata = metadata.userMetadata)
247249
return try {
248250
currentUserAPI.updateCurrentuserMetadata(Passage.appId, request).user

passage/src/main/java/id/passage/android/PassageMagicLink.kt

+4-4
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ class PassageMagicLink(
3333
identifier: String,
3434
language: String? = null,
3535
): MagicLink {
36-
val registerAPI = RegisterAPI(Passage.BASE_PATH, passageClient)
36+
val registerAPI = RegisterAPI(PassageClientService.basePath, passageClient)
3737
val request =
3838
RegisterMagicLinkRequest(
3939
identifier = identifier,
@@ -62,7 +62,7 @@ class PassageMagicLink(
6262
identifier: String,
6363
language: String? = null,
6464
): MagicLink {
65-
val loginAPI = LoginAPI(Passage.BASE_PATH, passageClient)
65+
val loginAPI = LoginAPI(PassageClientService.basePath, passageClient)
6666
val request =
6767
LoginMagicLinkRequest(
6868
identifier = identifier,
@@ -87,7 +87,7 @@ class PassageMagicLink(
8787
* @throws MagicLinkActivateException
8888
*/
8989
suspend fun activate(magicLink: String): AuthResult {
90-
val magicLinkAPI = MagicLinkAPI(Passage.BASE_PATH, passageClient)
90+
val magicLinkAPI = MagicLinkAPI(PassageClientService.basePath, passageClient)
9191
val request = ActivateMagicLinkRequest(magicLink)
9292
val response =
9393
try {
@@ -111,7 +111,7 @@ class PassageMagicLink(
111111
* @throws GetMagicLinkStatusException
112112
*/
113113
suspend fun status(id: String): AuthResult {
114-
val magicLinkAPI = MagicLinkAPI(Passage.BASE_PATH, passageClient)
114+
val magicLinkAPI = MagicLinkAPI(PassageClientService.basePath, passageClient)
115115
val request = GetMagicLinkStatusRequest(id)
116116
val response =
117117
try {

passage/src/main/java/id/passage/android/PassageOneTimePasscode.kt

+3-3
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ class PassageOneTimePasscode(
3131
identifier: String,
3232
language: String? = null,
3333
): OneTimePasscode {
34-
val registerAPI = RegisterAPI(Passage.BASE_PATH, passageClient)
34+
val registerAPI = RegisterAPI(PassageClientService.basePath, passageClient)
3535
val request = RegisterOneTimePasscodeRequest(identifier, language)
3636
val response =
3737
try {
@@ -56,7 +56,7 @@ class PassageOneTimePasscode(
5656
identifier: String,
5757
language: String? = null,
5858
): OneTimePasscode {
59-
val loginAPI = LoginAPI(Passage.BASE_PATH, passageClient)
59+
val loginAPI = LoginAPI(PassageClientService.basePath, passageClient)
6060
val request = LoginOneTimePasscodeRequest(identifier, language)
6161
val response =
6262
try {
@@ -81,7 +81,7 @@ class PassageOneTimePasscode(
8181
otp: String,
8282
otpId: String,
8383
): AuthResult {
84-
val otpAPI = OTPAPI(Passage.BASE_PATH, passageClient)
84+
val otpAPI = OTPAPI(PassageClientService.basePath, passageClient)
8585
val request = ActivateOneTimePasscodeRequest(otp, otpId)
8686
val response =
8787
try {

passage/src/main/java/id/passage/android/PassagePasskey.kt

+2-2
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ class PassagePasskey(
3434
options: PasskeyCreationOptions? = null,
3535
): AuthResult {
3636
try {
37-
val registerAPI = RegisterAPI(Passage.BASE_PATH, passageClient)
37+
val registerAPI = RegisterAPI(PassageClientService.basePath, passageClient)
3838
// Get Create Credential challenge from Passage
3939
val authenticatorAttachment =
4040
options?.authenticatorAttachment
@@ -71,7 +71,7 @@ class PassagePasskey(
7171
*/
7272
suspend fun login(identifier: String? = null): AuthResult {
7373
try {
74-
val loginAPI = LoginAPI(Passage.BASE_PATH, passageClient)
74+
val loginAPI = LoginAPI(PassageClientService.basePath, passageClient)
7575
// Get Credential challenge from Passage
7676
val webauthnStartRequest = LoginWebAuthnStartRequest(identifier)
7777
val webauthnStartResponse = loginAPI.loginWebauthnStart(Passage.appId, webauthnStartRequest)

passage/src/main/java/id/passage/android/PassageSocial.kt

+2-2
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ class PassageSocial(
2424
connection,
2525
Passage.authOrigin,
2626
activity,
27-
authUrl = "${Passage.BASE_PATH}/apps/${Passage.appId}/social/authorize",
27+
authUrl = "${PassageClientService.basePath}/apps/${Passage.appId}/social/authorize",
2828
)
2929
}
3030

@@ -37,7 +37,7 @@ class PassageSocial(
3737
* @throws FinishSocialAuthenticationException
3838
*/
3939
suspend fun finish(code: String): AuthResult {
40-
val oauthAPI = OAuth2API(Passage.BASE_PATH, passageClient)
40+
val oauthAPI = OAuth2API(PassageClientService.basePath, passageClient)
4141
val authResult =
4242
try {
4343
oauthAPI.exchangeSocialToken(Passage.appId, code, SocialUtils.verifier).authResult

passage/src/main/java/id/passage/android/PassageTokenStore.kt

+2-15
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ class PassageTokenStore(
8585
* @throws PassageTokenException
8686
*/
8787
suspend fun refreshAuthToken(refreshToken: String): AuthResult {
88-
val api = TokensAPI(Passage.BASE_PATH)
88+
val api = TokensAPI(PassageClientService.basePath)
8989
val request = RefreshAuthTokenRequest(refreshToken)
9090
val apiAuthResult =
9191
try {
@@ -105,7 +105,7 @@ class PassageTokenStore(
105105
* @throws PassageTokenException
106106
*/
107107
suspend fun revokeRefreshToken(refreshToken: String) {
108-
val api = TokensAPI(Passage.BASE_PATH)
108+
val api = TokensAPI(PassageClientService.basePath)
109109
try {
110110
api.revokeRefreshToken(Passage.appId, refreshToken)
111111
} catch (e: Exception) {
@@ -180,19 +180,6 @@ class PassageTokenStore(
180180
setAuthToken(null)
181181
setRefreshToken(null)
182182
}
183-
184-
internal suspend fun attemptRefreshTokenStore() {
185-
refreshToken?.let {
186-
try {
187-
val authResult = refreshAuthToken(it)
188-
setTokens(authResult)
189-
} catch (e: Exception) {
190-
Log.e(Passage.TAG, e.message ?: "Exception: $e")
191-
}
192-
} ?: run {
193-
ApiClient.accessToken = authToken
194-
}
195-
}
196183
}
197184

198185
@Serializable

0 commit comments

Comments
 (0)