From 978028dc9cb0ecb4eeb98f5812a487eb10b1b353 Mon Sep 17 00:00:00 2001 From: Jan-Niclas Struewer <j.n.struewer@gmail.com> Date: Mon, 11 Dec 2023 19:10:15 +0100 Subject: [PATCH] store received cookies and reuse them for further requests --- .../repository/service/RepositoryService.kt | 31 ++++++++++++++++--- 1 file changed, 27 insertions(+), 4 deletions(-) diff --git a/src/main/kotlin/de/fraunhofer/iem/dataprovider/repository/service/RepositoryService.kt b/src/main/kotlin/de/fraunhofer/iem/dataprovider/repository/service/RepositoryService.kt index 12059bbe..1cb29132 100644 --- a/src/main/kotlin/de/fraunhofer/iem/dataprovider/repository/service/RepositoryService.kt +++ b/src/main/kotlin/de/fraunhofer/iem/dataprovider/repository/service/RepositoryService.kt @@ -8,10 +8,15 @@ import de.fraunhofer.iem.dataprovider.repository.dto.RepositoryCreateDto import de.fraunhofer.iem.dataprovider.repository.dto.ValidateUserDto import de.fraunhofer.iem.dataprovider.repository.entity.RepositoryEntity import de.fraunhofer.iem.dataprovider.repository.repository.RepositoryRepository -import de.fraunhofer.iem.dataprovider.utilities.HttpClientWrapper +import io.ktor.client.* import io.ktor.client.call.* +import io.ktor.client.engine.cio.* +import io.ktor.client.plugins.contentnegotiation.* +import io.ktor.client.plugins.cookies.* import io.ktor.client.request.* import io.ktor.http.* +import io.ktor.serialization.kotlinx.json.* +import kotlinx.serialization.json.Json import org.springframework.stereotype.Service import java.util.* @@ -19,11 +24,18 @@ import java.util.* class RepositoryService( private val repositoryRepository: RepositoryRepository, private val openCodeGitlabApi: OpenCodeGitlabApi, - private val openCodeApiProperties: OpenCodeApiProperties, - httpClientWrapper: HttpClientWrapper + private val openCodeApiProperties: OpenCodeApiProperties ) { private val logger = getLogger(javaClass) - private val httpClient = httpClientWrapper.getClient() + private val httpClient = HttpClient(CIO) { + install(HttpCookies) + install(ContentNegotiation) { + json( + Json { ignoreUnknownKeys = true } + ) + } + } + /** * Either creates or returns a repository entity based upon its * opencode repository id. @@ -89,6 +101,17 @@ class RepositoryService( println(userCookie) println(userCookie.headers) println(userCookie.body<Any>()) + val setCookies = userCookie.setCookie() + println(setCookies) + + val me = httpClient.get(openCodeApiProperties.auth) { + url { + appendPathSegments("me") + } + } + + println(me) + println(me.body<Any>()) } } -- GitLab