27 lines
1.1 KiB
Kotlin
27 lines
1.1 KiB
Kotlin
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<Content>,
|
|
triggerId: TriggerId?
|
|
): RegisteredPost? = unifiedRequester.unipost(
|
|
buildStandardUrl(realBaseUrl, postCreatingCreatePostRoute),
|
|
BodyPair(PostCreatingCreatePostModel.serializer(), PostCreatingCreatePostModel(postContent, triggerId)),
|
|
RegisteredPost.serializer().nullable
|
|
)
|
|
}
|