From b817da4a728d33d7e20115f23381b33d122ef9e4 Mon Sep 17 00:00:00 2001 From: Savosin Denis Date: Tue, 3 Jun 2025 14:30:43 +0700 Subject: [PATCH] fix edge-integration sub-projects --- .../demo/edgeintegration/client/Client.kt | 12 --------- .../client/exceptions/RequestException.kt | 3 --- .../edgeintegration/client/neko/Client.kt | 12 +++++++++ .../client/{ => neko}/ClientImpl.kt | 9 +++---- .../client/{ => neko}/dto/CategoryFormat.kt | 2 +- .../client/{ => neko}/dto/Image.kt | 2 +- .../client/{ => neko}/dto/ImagesResponse.kt | 2 +- .../neko/exceptions/RequestException.kt | 3 +++ .../configuration/IntegrationConfiguration.kt | 25 +++++++++++++++++++ .../client/{ => neko}/ClientImplTest.kt | 10 ++++---- 10 files changed, 52 insertions(+), 28 deletions(-) delete mode 100644 edge-integration/src/main/kotlin/com/github/dannecron/demo/edgeintegration/client/Client.kt delete mode 100644 edge-integration/src/main/kotlin/com/github/dannecron/demo/edgeintegration/client/exceptions/RequestException.kt create mode 100644 edge-integration/src/main/kotlin/com/github/dannecron/demo/edgeintegration/client/neko/Client.kt rename edge-integration/src/main/kotlin/com/github/dannecron/demo/edgeintegration/client/{ => neko}/ClientImpl.kt (81%) rename edge-integration/src/main/kotlin/com/github/dannecron/demo/edgeintegration/client/{ => neko}/dto/CategoryFormat.kt (62%) rename edge-integration/src/main/kotlin/com/github/dannecron/demo/edgeintegration/client/{ => neko}/dto/Image.kt (85%) rename edge-integration/src/main/kotlin/com/github/dannecron/demo/edgeintegration/client/{ => neko}/dto/ImagesResponse.kt (63%) create mode 100644 edge-integration/src/main/kotlin/com/github/dannecron/demo/edgeintegration/client/neko/exceptions/RequestException.kt create mode 100644 edge-integration/src/main/kotlin/com/github/dannecron/demo/edgeintegration/configuration/IntegrationConfiguration.kt rename edge-integration/src/test/kotlin/com/github/dannecron/demo/edgeintegration/client/{ => neko}/ClientImplTest.kt (96%) diff --git a/edge-integration/src/main/kotlin/com/github/dannecron/demo/edgeintegration/client/Client.kt b/edge-integration/src/main/kotlin/com/github/dannecron/demo/edgeintegration/client/Client.kt deleted file mode 100644 index e0e0f04..0000000 --- a/edge-integration/src/main/kotlin/com/github/dannecron/demo/edgeintegration/client/Client.kt +++ /dev/null @@ -1,12 +0,0 @@ -package com.github.dannecron.demo.edgeintegration.client - -import com.github.dannecron.demo.edgeintegration.client.dto.ImagesResponse -import com.github.dannecron.demo.edgeintegration.client.exceptions.RequestException - -interface Client { - @Throws(RequestException::class) - fun getCategories(): Set - - @Throws(RequestException::class) - fun getImages(category: String, amount: Int): ImagesResponse -} diff --git a/edge-integration/src/main/kotlin/com/github/dannecron/demo/edgeintegration/client/exceptions/RequestException.kt b/edge-integration/src/main/kotlin/com/github/dannecron/demo/edgeintegration/client/exceptions/RequestException.kt deleted file mode 100644 index c00784c..0000000 --- a/edge-integration/src/main/kotlin/com/github/dannecron/demo/edgeintegration/client/exceptions/RequestException.kt +++ /dev/null @@ -1,3 +0,0 @@ -package com.github.dannecron.demo.edgeintegration.client.exceptions - -class RequestException(message: String): RuntimeException(message) diff --git a/edge-integration/src/main/kotlin/com/github/dannecron/demo/edgeintegration/client/neko/Client.kt b/edge-integration/src/main/kotlin/com/github/dannecron/demo/edgeintegration/client/neko/Client.kt new file mode 100644 index 0000000..b28d57d --- /dev/null +++ b/edge-integration/src/main/kotlin/com/github/dannecron/demo/edgeintegration/client/neko/Client.kt @@ -0,0 +1,12 @@ +package com.github.dannecron.demo.edgeintegration.client.neko + +import com.github.dannecron.demo.edgeintegration.client.neko.dto.ImagesResponse +import com.github.dannecron.demo.edgeintegration.client.neko.exceptions.RequestException + +interface Client { + @Throws(RequestException::class) + fun getCategories(): Set + + @Throws(RequestException::class) + fun getImages(category: String, amount: Int): ImagesResponse +} diff --git a/edge-integration/src/main/kotlin/com/github/dannecron/demo/edgeintegration/client/ClientImpl.kt b/edge-integration/src/main/kotlin/com/github/dannecron/demo/edgeintegration/client/neko/ClientImpl.kt similarity index 81% rename from edge-integration/src/main/kotlin/com/github/dannecron/demo/edgeintegration/client/ClientImpl.kt rename to edge-integration/src/main/kotlin/com/github/dannecron/demo/edgeintegration/client/neko/ClientImpl.kt index ce9c129..0930a59 100644 --- a/edge-integration/src/main/kotlin/com/github/dannecron/demo/edgeintegration/client/ClientImpl.kt +++ b/edge-integration/src/main/kotlin/com/github/dannecron/demo/edgeintegration/client/neko/ClientImpl.kt @@ -1,8 +1,8 @@ -package com.github.dannecron.demo.edgeintegration.client +package com.github.dannecron.demo.edgeintegration.client.neko -import com.github.dannecron.demo.edgeintegration.client.dto.CategoryFormat -import com.github.dannecron.demo.edgeintegration.client.dto.ImagesResponse -import com.github.dannecron.demo.edgeintegration.client.exceptions.RequestException +import com.github.dannecron.demo.edgeintegration.client.neko.dto.CategoryFormat +import com.github.dannecron.demo.edgeintegration.client.neko.dto.ImagesResponse +import com.github.dannecron.demo.edgeintegration.client.neko.exceptions.RequestException import io.ktor.client.HttpClient import io.ktor.client.engine.HttpClientEngine import io.ktor.client.request.get @@ -12,7 +12,6 @@ import kotlinx.coroutines.runBlocking import kotlinx.serialization.json.Json import org.springframework.stereotype.Service -@Service class ClientImpl( engine: HttpClientEngine, private val baseUrl: String, diff --git a/edge-integration/src/main/kotlin/com/github/dannecron/demo/edgeintegration/client/dto/CategoryFormat.kt b/edge-integration/src/main/kotlin/com/github/dannecron/demo/edgeintegration/client/neko/dto/CategoryFormat.kt similarity index 62% rename from edge-integration/src/main/kotlin/com/github/dannecron/demo/edgeintegration/client/dto/CategoryFormat.kt rename to edge-integration/src/main/kotlin/com/github/dannecron/demo/edgeintegration/client/neko/dto/CategoryFormat.kt index 5045dba..8140a2c 100644 --- a/edge-integration/src/main/kotlin/com/github/dannecron/demo/edgeintegration/client/dto/CategoryFormat.kt +++ b/edge-integration/src/main/kotlin/com/github/dannecron/demo/edgeintegration/client/neko/dto/CategoryFormat.kt @@ -1,4 +1,4 @@ -package com.github.dannecron.demo.edgeintegration.client.dto +package com.github.dannecron.demo.edgeintegration.client.neko.dto import kotlinx.serialization.Serializable diff --git a/edge-integration/src/main/kotlin/com/github/dannecron/demo/edgeintegration/client/dto/Image.kt b/edge-integration/src/main/kotlin/com/github/dannecron/demo/edgeintegration/client/neko/dto/Image.kt similarity index 85% rename from edge-integration/src/main/kotlin/com/github/dannecron/demo/edgeintegration/client/dto/Image.kt rename to edge-integration/src/main/kotlin/com/github/dannecron/demo/edgeintegration/client/neko/dto/Image.kt index bba1907..af8d136 100644 --- a/edge-integration/src/main/kotlin/com/github/dannecron/demo/edgeintegration/client/dto/Image.kt +++ b/edge-integration/src/main/kotlin/com/github/dannecron/demo/edgeintegration/client/neko/dto/Image.kt @@ -1,4 +1,4 @@ -package com.github.dannecron.demo.edgeintegration.client.dto +package com.github.dannecron.demo.edgeintegration.client.neko.dto import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable diff --git a/edge-integration/src/main/kotlin/com/github/dannecron/demo/edgeintegration/client/dto/ImagesResponse.kt b/edge-integration/src/main/kotlin/com/github/dannecron/demo/edgeintegration/client/neko/dto/ImagesResponse.kt similarity index 63% rename from edge-integration/src/main/kotlin/com/github/dannecron/demo/edgeintegration/client/dto/ImagesResponse.kt rename to edge-integration/src/main/kotlin/com/github/dannecron/demo/edgeintegration/client/neko/dto/ImagesResponse.kt index 617932c..be22aa0 100644 --- a/edge-integration/src/main/kotlin/com/github/dannecron/demo/edgeintegration/client/dto/ImagesResponse.kt +++ b/edge-integration/src/main/kotlin/com/github/dannecron/demo/edgeintegration/client/neko/dto/ImagesResponse.kt @@ -1,4 +1,4 @@ -package com.github.dannecron.demo.edgeintegration.client.dto +package com.github.dannecron.demo.edgeintegration.client.neko.dto import kotlinx.serialization.Serializable diff --git a/edge-integration/src/main/kotlin/com/github/dannecron/demo/edgeintegration/client/neko/exceptions/RequestException.kt b/edge-integration/src/main/kotlin/com/github/dannecron/demo/edgeintegration/client/neko/exceptions/RequestException.kt new file mode 100644 index 0000000..7ca6489 --- /dev/null +++ b/edge-integration/src/main/kotlin/com/github/dannecron/demo/edgeintegration/client/neko/exceptions/RequestException.kt @@ -0,0 +1,3 @@ +package com.github.dannecron.demo.edgeintegration.client.neko.exceptions + +class RequestException(message: String): RuntimeException(message) diff --git a/edge-integration/src/main/kotlin/com/github/dannecron/demo/edgeintegration/configuration/IntegrationConfiguration.kt b/edge-integration/src/main/kotlin/com/github/dannecron/demo/edgeintegration/configuration/IntegrationConfiguration.kt new file mode 100644 index 0000000..6ddc207 --- /dev/null +++ b/edge-integration/src/main/kotlin/com/github/dannecron/demo/edgeintegration/configuration/IntegrationConfiguration.kt @@ -0,0 +1,25 @@ +package com.github.dannecron.demo.edgeintegration.configuration + +import com.github.dannecron.demo.edgeintegration.client.neko.Client +import com.github.dannecron.demo.edgeintegration.client.neko.ClientImpl +import io.ktor.client.engine.HttpClientEngine +import io.ktor.client.engine.cio.CIO +import org.springframework.beans.factory.annotation.Value +import org.springframework.context.annotation.Bean +import org.springframework.context.annotation.Configuration + +@Configuration +class IntegrationConfiguration { + + @Bean + fun httpClientEngine(): HttpClientEngine = CIO.create() + + @Bean + fun nekoClient( + httpClientEngine: HttpClientEngine, + @Value("\${neko.baseUrl}") baseUrl: String, + ): Client = ClientImpl( + engine = httpClientEngine, + baseUrl = baseUrl, + ) +} diff --git a/edge-integration/src/test/kotlin/com/github/dannecron/demo/edgeintegration/client/ClientImplTest.kt b/edge-integration/src/test/kotlin/com/github/dannecron/demo/edgeintegration/client/neko/ClientImplTest.kt similarity index 96% rename from edge-integration/src/test/kotlin/com/github/dannecron/demo/edgeintegration/client/ClientImplTest.kt rename to edge-integration/src/test/kotlin/com/github/dannecron/demo/edgeintegration/client/neko/ClientImplTest.kt index 865d1bf..2ff19f5 100644 --- a/edge-integration/src/test/kotlin/com/github/dannecron/demo/edgeintegration/client/ClientImplTest.kt +++ b/edge-integration/src/test/kotlin/com/github/dannecron/demo/edgeintegration/client/neko/ClientImplTest.kt @@ -1,6 +1,6 @@ -package com.github.dannecron.demo.edgeintegration.client +package com.github.dannecron.demo.edgeintegration.client.neko -import com.github.dannecron.demo.edgeintegration.client.exceptions.RequestException +import com.github.dannecron.demo.edgeintegration.client.neko.exceptions.RequestException import io.ktor.client.engine.mock.MockEngine import io.ktor.client.engine.mock.respond import io.ktor.http.HttpHeaders @@ -34,7 +34,7 @@ class ClientImplTest { } val client = ClientImpl(engine = mockEngine, baseUrl = "https://localhost") - client.getCategories().let { + client.getCategories().also { assertContains(it.toList(), "neko") assertContains(it.toList(), "wink") } @@ -88,7 +88,7 @@ class ClientImplTest { } val client = ClientImpl(engine = mockEngine, baseUrl = "https://localhost") - client.getImages(category = category, amount = amount).results.map { + client.getImages(category = category, amount = amount).results.forEach { assertNull(it.sourceUrl) assertNull(it.artistName) assertNull(it.artistHref) @@ -126,7 +126,7 @@ class ClientImplTest { } val client = ClientImpl(engine = mockEngine, baseUrl = "https://localhost") - client.getImages(category = category, amount = amount).results.map { + client.getImages(category = category, amount = amount).results.forEach { assertNotNull(it.sourceUrl) assertNotNull(it.artistName) assertNotNull(it.artistHref)