diff --git a/libraries/httpClient/src/main/kotlin/de/itkl/httpClient/BearerToken.kt b/libraries/httpClient/src/main/kotlin/de/itkl/httpClient/BearerToken.kt new file mode 100644 index 0000000..20f94ea --- /dev/null +++ b/libraries/httpClient/src/main/kotlin/de/itkl/httpClient/BearerToken.kt @@ -0,0 +1,10 @@ +package de.itkl.httpClient + +import kotlinx.datetime.Instant +import kotlinx.serialization.Serializable + +@Serializable +data class BearerToken( + val tokenString: String, + val validUntil: Instant +) \ No newline at end of file diff --git a/libraries/httpClient/src/main/kotlin/de/itkl/httpClient/BearerTokenCache.kt b/libraries/httpClient/src/main/kotlin/de/itkl/httpClient/BearerTokenCache.kt new file mode 100644 index 0000000..cd1c1a1 --- /dev/null +++ b/libraries/httpClient/src/main/kotlin/de/itkl/httpClient/BearerTokenCache.kt @@ -0,0 +1,4 @@ +package de.itkl.httpClient + +class BearerTokenCache { +} \ No newline at end of file diff --git a/libraries/httpClient/src/main/kotlin/de/itkl/httpClient/SmartCloudAuthPlugin.kt b/libraries/httpClient/src/main/kotlin/de/itkl/httpClient/SmartCloudAuthPlugin.kt new file mode 100644 index 0000000..479e6ae --- /dev/null +++ b/libraries/httpClient/src/main/kotlin/de/itkl/httpClient/SmartCloudAuthPlugin.kt @@ -0,0 +1,17 @@ +package de.itkl.httpClient + +import io.github.oshai.kotlinlogging.KotlinLogging +import io.ktor.client.plugins.api.* +import io.ktor.util.* +import org.koin.core.component.KoinComponent + +private val Log = KotlinLogging.logger { } +val smartCloudAuthPlugin = createClientPlugin("SmartCloudAuth") { + on(Send) { request -> + request.attributes.getOrNull(AttributeKey("user"))?.let { username -> + Log.info { "Provide bearer token for $username" } + TODO("retrieve user token ") + } + TODO() + } +} \ No newline at end of file diff --git a/libraries/httpClient/src/main/kotlin/de/itkl/httpClient/clients/RestClient.kt b/libraries/httpClient/src/main/kotlin/de/itkl/httpClient/clients/RestClient.kt new file mode 100644 index 0000000..fd2b480 --- /dev/null +++ b/libraries/httpClient/src/main/kotlin/de/itkl/httpClient/clients/RestClient.kt @@ -0,0 +1,9 @@ +package de.itkl.httpClient.clients + +import io.ktor.client.* +import org.koin.core.component.KoinComponent +import org.koin.core.component.inject + +abstract class RestClient : KoinComponent { + private val httpClient by inject() +} \ No newline at end of file diff --git a/libraries/httpClient/src/main/kotlin/de/itkl/httpClient/clients/XsClient.kt b/libraries/httpClient/src/main/kotlin/de/itkl/httpClient/clients/XsClient.kt new file mode 100644 index 0000000..e2cd3d3 --- /dev/null +++ b/libraries/httpClient/src/main/kotlin/de/itkl/httpClient/clients/XsClient.kt @@ -0,0 +1,9 @@ +package de.itkl.httpClient.clients + +import io.ktor.client.* +import org.koin.core.component.KoinComponent +import org.koin.core.component.inject + +class XsClient : KoinComponent { + private val httpClient by inject() +} \ No newline at end of file diff --git a/libraries/httpClient/src/main/kotlin/de/itkl/httpClient/createHttpClient.kt b/libraries/httpClient/src/main/kotlin/de/itkl/httpClient/createHttpClient.kt index 5756468..4196d85 100644 --- a/libraries/httpClient/src/main/kotlin/de/itkl/httpClient/createHttpClient.kt +++ b/libraries/httpClient/src/main/kotlin/de/itkl/httpClient/createHttpClient.kt @@ -10,5 +10,6 @@ fun createHttpClient(): HttpClient { install(ContentNegotiation) { json() } + install(smartCloudAuthPlugin) } } \ No newline at end of file