mirror of
https://github.com/Dannecron/spring-boot-demo.git
synced 2025-12-26 00:32:34 +03:00
fix edge-integration sub-projects
This commit is contained in:
@@ -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
|
|
||||||
}
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
package com.github.dannecron.demo.edgeintegration.client.exceptions
|
|
||||||
|
|
||||||
class RequestException(message: String): RuntimeException(message)
|
|
||||||
@@ -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
|
||||||
|
}
|
||||||
@@ -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.neko.dto.CategoryFormat
|
||||||
import com.github.dannecron.demo.edgeintegration.client.dto.ImagesResponse
|
import com.github.dannecron.demo.edgeintegration.client.neko.dto.ImagesResponse
|
||||||
import com.github.dannecron.demo.edgeintegration.client.exceptions.RequestException
|
import com.github.dannecron.demo.edgeintegration.client.neko.exceptions.RequestException
|
||||||
import io.ktor.client.HttpClient
|
import io.ktor.client.HttpClient
|
||||||
import io.ktor.client.engine.HttpClientEngine
|
import io.ktor.client.engine.HttpClientEngine
|
||||||
import io.ktor.client.request.get
|
import io.ktor.client.request.get
|
||||||
@@ -12,7 +12,6 @@ import kotlinx.coroutines.runBlocking
|
|||||||
import kotlinx.serialization.json.Json
|
import kotlinx.serialization.json.Json
|
||||||
import org.springframework.stereotype.Service
|
import org.springframework.stereotype.Service
|
||||||
|
|
||||||
@Service
|
|
||||||
class ClientImpl(
|
class ClientImpl(
|
||||||
engine: HttpClientEngine,
|
engine: HttpClientEngine,
|
||||||
private val baseUrl: String,
|
private val baseUrl: String,
|
||||||
@@ -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
|
import kotlinx.serialization.Serializable
|
||||||
|
|
||||||
@@ -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.SerialName
|
||||||
import kotlinx.serialization.Serializable
|
import kotlinx.serialization.Serializable
|
||||||
@@ -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
|
import kotlinx.serialization.Serializable
|
||||||
|
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
package com.github.dannecron.demo.edgeintegration.client.neko.exceptions
|
||||||
|
|
||||||
|
class RequestException(message: String): RuntimeException(message)
|
||||||
@@ -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,
|
||||||
|
)
|
||||||
|
}
|
||||||
@@ -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.MockEngine
|
||||||
import io.ktor.client.engine.mock.respond
|
import io.ktor.client.engine.mock.respond
|
||||||
import io.ktor.http.HttpHeaders
|
import io.ktor.http.HttpHeaders
|
||||||
@@ -34,7 +34,7 @@ class ClientImplTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
val client = ClientImpl(engine = mockEngine, baseUrl = "https://localhost")
|
val client = ClientImpl(engine = mockEngine, baseUrl = "https://localhost")
|
||||||
client.getCategories().let {
|
client.getCategories().also {
|
||||||
assertContains(it.toList(), "neko")
|
assertContains(it.toList(), "neko")
|
||||||
assertContains(it.toList(), "wink")
|
assertContains(it.toList(), "wink")
|
||||||
}
|
}
|
||||||
@@ -88,7 +88,7 @@ class ClientImplTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
val client = ClientImpl(engine = mockEngine, baseUrl = "https://localhost")
|
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.sourceUrl)
|
||||||
assertNull(it.artistName)
|
assertNull(it.artistName)
|
||||||
assertNull(it.artistHref)
|
assertNull(it.artistHref)
|
||||||
@@ -126,7 +126,7 @@ class ClientImplTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
val client = ClientImpl(engine = mockEngine, baseUrl = "https://localhost")
|
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.sourceUrl)
|
||||||
assertNotNull(it.artistName)
|
assertNotNull(it.artistName)
|
||||||
assertNotNull(it.artistHref)
|
assertNotNull(it.artistHref)
|
||||||
Reference in New Issue
Block a user