core/business_cases/post_creating/client/src/commonMain/kotlin/dev/inmo/postssystem/business_cases/post_creating/client/PostCreatingClientCase.kt

27 lines
1.1 KiB
Kotlin
Raw Normal View History

2020-11-25 08:08:45 +00:00
package dev.inmo.postssystem.business_cases.post_creating.client
2020-09-09 18:04:25 +00:00
2020-11-30 08:13:39 +00:00
import dev.inmo.micro_utils.ktor.client.*
2020-11-25 08:08:45 +00:00
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
2020-11-25 07:53:15 +00:00
import dev.inmo.micro_utils.ktor.common.buildStandardUrl
2020-09-09 18:04:25 +00:00
import io.ktor.client.HttpClient
2020-11-30 08:13:39 +00:00
import kotlinx.serialization.builtins.nullable
2020-09-09 18:04:25 +00:00
class PostCreatingClientCase(
private val baseUrl: String,
2020-11-30 08:13:39 +00:00
private val unifiedRequester: UnifiedRequester,
private val rootRoute: String? = postCreatingRootRoute
2020-09-09 18:04:25 +00:00
) : PostCreatingCase {
2020-11-30 08:13:39 +00:00
private val realBaseUrl = rootRoute ?.let { "$baseUrl/$rootRoute" } ?: baseUrl
override suspend fun createPost(
postContent: List<Content>,
triggerId: TriggerId?
): RegisteredPost? = unifiedRequester.unipost(
2020-09-09 18:04:25 +00:00
buildStandardUrl(realBaseUrl, postCreatingCreatePostRoute),
BodyPair(PostCreatingCreatePostModel.serializer(), PostCreatingCreatePostModel(postContent, triggerId)),
2020-11-30 08:13:39 +00:00
RegisteredPost.serializer().nullable
2020-09-09 18:04:25 +00:00
)
}