package dev.inmo.postssystem.business_cases.post_creating.client import dev.inmo.micro_utils.ktor.client.* import dev.inmo.postssystem.business_cases.post_creating.server.* import dev.inmo.postssystem.core.content.Content import dev.inmo.postssystem.core.post.RegisteredPost import dev.inmo.postssystem.core.publishing.TriggerId import dev.inmo.micro_utils.ktor.common.buildStandardUrl import io.ktor.client.HttpClient import kotlinx.serialization.builtins.nullable class PostCreatingClientCase( private val baseUrl: String, private val unifiedRequester: UnifiedRequester, private val rootRoute: String? = postCreatingRootRoute ) : PostCreatingCase { private val realBaseUrl = rootRoute ?.let { "$baseUrl/$rootRoute" } ?: baseUrl override suspend fun createPost( postContent: List, triggerId: TriggerId? ): RegisteredPost? = unifiedRequester.unipost( buildStandardUrl(realBaseUrl, postCreatingCreatePostRoute), BodyPair(PostCreatingCreatePostModel.serializer(), PostCreatingCreatePostModel(postContent, triggerId)), RegisteredPost.serializer().nullable ) }