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