core/core/ktor/client/src/commonMain/kotlin/dev/inmo/postssystem/core/ktor/client/post/PostsRepoKtorClient.kt

29 lines
889 B
Kotlin

package dev.inmo.postssystem.core.ktor.client.post
import dev.inmo.postssystem.core.ktor.postsRootRoute
import dev.inmo.postssystem.core.post.repo.*
import io.ktor.client.HttpClient
import io.ktor.client.features.websocket.WebSockets
class PostsRepoKtorClient private constructor(
readPostsRepo: ReadPostsRepo,
writePostsRepo: WritePostsRepo
) : PostsRepo, ReadPostsRepo by readPostsRepo, WritePostsRepo by writePostsRepo {
constructor(
baseUrl: String,
rootRoute: String? = postsRootRoute,
client: HttpClient = HttpClient {
install(WebSockets)
}
) : this(
ReadPostsRepoKtorClient(
rootRoute ?.let { "${baseUrl}/$rootRoute" } ?: baseUrl,
client
),
WritePostsRepoKtorClient(
rootRoute ?.let { "${baseUrl}/$rootRoute" } ?: baseUrl,
client
)
)
}