fix edge-integration sub-projects

This commit is contained in:
Savosin Denis
2025-06-03 14:30:43 +07:00
parent 92da5ba32e
commit b817da4a72
10 changed files with 52 additions and 28 deletions

View File

@@ -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<String>
@Throws(RequestException::class)
fun getImages(category: String, amount: Int): ImagesResponse
}

View File

@@ -1,3 +0,0 @@
package com.github.dannecron.demo.edgeintegration.client.exceptions
class RequestException(message: String): RuntimeException(message)

View File

@@ -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<String>
@Throws(RequestException::class)
fun getImages(category: String, amount: Int): ImagesResponse
}

View File

@@ -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,

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -0,0 +1,3 @@
package com.github.dannecron.demo.edgeintegration.client.neko.exceptions
class RequestException(message: String): RuntimeException(message)

View File

@@ -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,
)
}

View File

@@ -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)