@@ -30,24 +30,19 @@ open class AuthSession(
30
30
open val apiSettings : ConfigurationProvider ,
31
31
open val transport : Transport = Transport (apiSettings),
32
32
) {
33
-
34
33
var authToken: AuthToken = AuthToken ()
35
34
private var sudoToken: AuthToken = AuthToken ()
36
35
var sudoId: String = " "
37
36
38
- /* *
39
- * Abstraction of AuthToken retrieval to support sudo mode
40
- */
37
+ /* * Abstraction of AuthToken retrieval to support sudo mode */
41
38
fun activeToken (): AuthToken {
42
39
if (sudoToken.accessToken.isNotEmpty()) {
43
40
return sudoToken
44
41
}
45
42
return authToken
46
43
}
47
44
48
- /* *
49
- * Is there an active authentication token?
50
- */
45
+ /* * Is there an active authentication token? */
51
46
open fun isAuthenticated (): Boolean {
52
47
val token = activeToken()
53
48
if (token.accessToken.isBlank()) return false
@@ -56,8 +51,8 @@ open class AuthSession(
56
51
57
52
/* *
58
53
* Add authentication data to the pending API request
59
- * @param[init] Initialized API request properties
60
54
*
55
+ * @param[init] Initialized API request properties
61
56
* @return The updated request properties
62
57
*/
63
58
fun authenticate (init : RequestSettings ): RequestSettings {
@@ -69,13 +64,11 @@ open class AuthSession(
69
64
return init .copy(headers = headers)
70
65
}
71
66
72
- fun isSudo (): Boolean {
73
- return sudoId.isNotBlank() && sudoToken.isActive()
74
- }
67
+ fun isSudo (): Boolean = sudoId.isNotBlank() && sudoToken.isActive()
75
68
76
69
/* *
77
- * Retrieve the current authentication token. If there is no active token, performs default login to retrieve the
78
- * token.
70
+ * Retrieve the current authentication token. If there is no active token, performs default
71
+ * login to retrieve the token.
79
72
*/
80
73
open fun getToken (): AuthToken {
81
74
if (! isAuthenticated()) {
@@ -84,9 +77,7 @@ open class AuthSession(
84
77
return activeToken()
85
78
}
86
79
87
- /* *
88
- * Reset the authentication session
89
- */
80
+ /* * Reset the authentication session */
90
81
fun reset () {
91
82
sudoId = " "
92
83
authToken.reset()
@@ -95,13 +86,14 @@ open class AuthSession(
95
86
96
87
/* *
97
88
* Activate the authentication token for the API3 or sudo user
89
+ *
98
90
* @param[sudoId] If provided, impersonates the user specified
99
91
*/
100
-
101
92
fun login (sudoId : String = ""): AuthToken = doLogin(sudoId)
102
93
103
94
/* *
104
- * Logout the active user. If the active user is impersonated , the session reverts to the API3 user.
95
+ * Logout the active user. If the active user is impersonated , the session reverts to the API3
96
+ * user.
105
97
*/
106
98
fun logout (): Boolean {
107
99
if (isAuthenticated()) {
@@ -110,14 +102,7 @@ open class AuthSession(
110
102
return false
111
103
}
112
104
113
- fun <T > ok (response : SDKResponse ): T {
114
- @Suppress(" UNCHECKED_CAST" )
115
- when (response) {
116
- is SDKResponse .SDKErrorResponse <* > -> throw Error (response.value.toString())
117
- is SDKResponse .SDKSuccessResponse <* > -> return response.value as T
118
- else -> throw Error (" Fail!!" )
119
- }
120
- }
105
+ fun <T > ok (response : SDKResponse ) = SDKResponse .ok<T >(response)
121
106
122
107
private fun sudoLogout (): Boolean {
123
108
var result = false
@@ -140,57 +125,61 @@ open class AuthSession(
140
125
val client_secret = " client_secret"
141
126
val config = apiSettings.readConfig()
142
127
val clientId =
143
- unQuote(System .getProperty(" ${apiSettings.environmentPrefix} _CLIENT_ID" ) ? : config[client_id])
128
+ unQuote(
129
+ System .getProperty(" ${apiSettings.environmentPrefix} _CLIENT_ID" )
130
+ ? : config[client_id],
131
+ )
144
132
val clientSecret =
145
- unQuote(System .getProperty( " ${apiSettings.environmentPrefix} _CLIENT_SECRET " ) ? : config[client_secret])
146
- val params = mapOf (
147
- client_id to clientId ,
148
- client_secret to clientSecret,
149
- )
133
+ unQuote(
134
+ System .getProperty( " ${apiSettings.environmentPrefix} _CLIENT_SECRET " )
135
+ ? : config[client_secret] ,
136
+ )
137
+ val params = mapOf (client_id to clientId, client_secret to clientSecret )
150
138
val body = UrlEncodedContent (params)
151
- val token = ok<AuthToken >(
152
- transport.request<AuthToken >(
153
- HttpMethod .POST ,
154
- " $apiPath /login" ,
155
- emptyMap(),
156
- body,
157
- ),
158
- )
139
+ val token =
140
+ ok<AuthToken >(
141
+ transport.request<AuthToken >(
142
+ HttpMethod .POST ,
143
+ " $apiPath /login" ,
144
+ emptyMap(),
145
+ body,
146
+ ),
147
+ )
159
148
authToken = token
160
149
}
161
150
162
151
if (sudoId.isNotBlank()) {
163
152
val token = activeToken()
164
- val sudoToken = transport.request< AuthToken >(
165
- HttpMethod .POST ,
166
- " /login/ $newId " ,
167
- ) { requestSettings ->
168
- val headers = requestSettings.headers.toMutableMap()
169
- if (token.accessToken.isNotBlank()) {
170
- headers[ " Authorization " ] = " Bearer ${token.accessToken} "
153
+ val sudoToken =
154
+ transport.request< AuthToken >( HttpMethod .POST , " /login/ $newId " ) { requestSettings ->
155
+ val headers = requestSettings.headers.toMutableMap()
156
+ if (token.accessToken.isNotBlank()) {
157
+ headers[ " Authorization " ] = " Bearer ${token.accessToken} "
158
+ }
159
+ requestSettings.copy( headers = headers)
171
160
}
172
- requestSettings.copy(headers = headers)
173
- }
174
161
this .sudoToken = ok(sudoToken)
175
162
}
176
163
return activeToken()
177
164
}
178
165
179
166
private fun doLogout (): Boolean {
180
167
val token = activeToken()
181
- val resp = transport.request<String >(HttpMethod .DELETE , " /logout" ) {
182
- val headers = it.headers.toMutableMap()
183
- if (token.accessToken.isNotBlank()) {
184
- headers[" Authorization" ] = " Bearer ${token.accessToken} "
168
+ val resp =
169
+ transport.request<String >(HttpMethod .DELETE , " /logout" ) {
170
+ val headers = it.headers.toMutableMap()
171
+ if (token.accessToken.isNotBlank()) {
172
+ headers[" Authorization" ] = " Bearer ${token.accessToken} "
173
+ }
174
+ it.copy(headers = headers)
185
175
}
186
- it.copy(headers = headers)
187
- }
188
176
189
- val success = when (resp) {
190
- is SDKResponse .SDKSuccessResponse <* > -> true
191
- is SDKResponse .SDKErrorResponse <* > -> false
192
- else -> false
193
- }
177
+ val success =
178
+ when (resp) {
179
+ is SDKResponse .SDKSuccessResponse <* > -> true
180
+ is SDKResponse .SDKErrorResponse <* > -> false
181
+ else -> false
182
+ }
194
183
if (sudoId.isNotBlank()) {
195
184
sudoId = " "
196
185
sudoToken.reset()
0 commit comments