first fully ready for trying system

This commit is contained in:
2022-03-11 22:26:06 +06:00
parent 559545438a
commit 369dcb12f5
24 changed files with 199 additions and 13 deletions

View File

@@ -0,0 +1,18 @@
plugins {
id "org.jetbrains.kotlin.multiplatform"
id "org.jetbrains.kotlin.plugin.serialization"
id "com.android.library"
}
apply from: "$mppProjectWithSerializationPresetPath"
kotlin {
sourceSets {
commonMain {
dependencies {
api project(":postssystem.publicators.simple.common")
api project(":postssystem.features.publication.client")
}
}
}
}

View File

@@ -0,0 +1,7 @@
package dev.inmo.postssystem.publicators.simple.client
import dev.inmo.postssystem.features.posts.common.PostId
interface SimplePublicatorService {
suspend fun publish(postId: PostId)
}

View File

@@ -0,0 +1,33 @@
package dev.inmo.postssystem.publicators.simple.client
import dev.inmo.micro_utils.ktor.client.UnifiedRequester
import dev.inmo.micro_utils.ktor.common.buildStandardUrl
import dev.inmo.postssystem.features.posts.common.PostId
import dev.inmo.postssystem.features.publication.common.publicatorsRootPath
import dev.inmo.postssystem.publicators.simple.common.simplePublicatorPublishPathPart
import dev.inmo.postssystem.publicators.simple.common.simplePublicatorRootPath
import kotlinx.serialization.builtins.serializer
class SimplePublicatorServiceClient(
baseUrl: String,
private val unifiedRequester: UnifiedRequester
) : SimplePublicatorService {
private val fullUrl = buildStandardUrl(
baseUrl,
buildStandardUrl(
publicatorsRootPath,
simplePublicatorRootPath
)
)
private val publishFullUrl = buildStandardUrl(
fullUrl,
simplePublicatorPublishPathPart
)
override suspend fun publish(postId: PostId) = unifiedRequester.unipost(
publishFullUrl,
PostId.serializer() to postId,
Unit.serializer()
)
}

View File

@@ -0,0 +1 @@
<manifest package="dev.inmo.postssystem.publicators.simple.client"/>

View File

@@ -0,0 +1,17 @@
plugins {
id "org.jetbrains.kotlin.multiplatform"
id "org.jetbrains.kotlin.plugin.serialization"
id "com.android.library"
}
apply from: "$mppProjectWithSerializationPresetPath"
kotlin {
sourceSets {
commonMain {
dependencies {
api project(":postssystem.features.publication.common")
}
}
}
}

View File

@@ -0,0 +1,4 @@
package dev.inmo.postssystem.publicators.simple.common
const val simplePublicatorRootPath = "simple"
const val simplePublicatorPublishPathPart = "publish"

View File

@@ -0,0 +1 @@
<manifest package="dev.inmo.postssystem.publicators.simple.common"/>

View File

@@ -0,0 +1,17 @@
plugins {
id "org.jetbrains.kotlin.multiplatform"
id "org.jetbrains.kotlin.plugin.serialization"
}
apply from: "$mppJavaProjectPresetPath"
kotlin {
sourceSets {
commonMain {
dependencies {
api project(":postssystem.publicators.simple.common")
api project(":postssystem.features.publication.server")
}
}
}
}

View File

@@ -0,0 +1,17 @@
package dev.inmo.postssystem.publicators.simple.server
import dev.inmo.micro_utils.ktor.server.configurators.ApplicationRoutingConfigurator
import dev.inmo.postssystem.features.common.common.singleWithRandomQualifier
import dev.inmo.postssystem.features.common.server.sessions.ModuleLoader
import kotlinx.serialization.json.JsonObject
import org.koin.core.module.Module
class SimplePublicationTriggerLoader : ModuleLoader {
override fun Module.load(config: JsonObject) {
singleWithRandomQualifier<ApplicationRoutingConfigurator.Element> {
SimplePublicatorRoutingConfigurator(
get()
)
}
}
}

View File

@@ -0,0 +1,32 @@
package dev.inmo.postssystem.publicators.simple.server
import dev.inmo.micro_utils.ktor.server.configurators.ApplicationRoutingConfigurator
import dev.inmo.micro_utils.ktor.server.unianswer
import dev.inmo.micro_utils.ktor.server.uniload
import dev.inmo.postssystem.features.posts.common.PostId
import dev.inmo.postssystem.features.publication.common.publicatorsRootPath
import dev.inmo.postssystem.features.publication.server.PublicationManager
import dev.inmo.postssystem.publicators.simple.common.simplePublicatorPublishPathPart
import dev.inmo.postssystem.publicators.simple.common.simplePublicatorRootPath
import io.ktor.application.call
import io.ktor.routing.*
import kotlinx.serialization.builtins.serializer
class SimplePublicatorRoutingConfigurator(
private val publicationManager: PublicationManager
) : ApplicationRoutingConfigurator.Element {
override fun Route.invoke() {
route(publicatorsRootPath) {
route(simplePublicatorRootPath) {
post(simplePublicatorPublishPathPart) {
val postId = call.uniload(PostId.serializer())
call.unianswer(
Unit.serializer(),
publicationManager.publish(postId)
)
}
}
}
}
}

View File

@@ -11,7 +11,7 @@ kotlin {
commonMain {
dependencies {
api project(":postssystem.publicators.template.common")
api project(":postssystem.features.common.client")
api project(":postssystem.features.publication.client")
}
}
}

View File

@@ -10,7 +10,7 @@ kotlin {
sourceSets {
commonMain {
dependencies {
api project(":postssystem.features.common.common")
api project(":postssystem.features.publication.common")
}
}
}

View File

@@ -10,7 +10,7 @@ kotlin {
commonMain {
dependencies {
api project(":postssystem.publicators.template.common")
api project(":postssystem.features.common.server")
api project(":postssystem.features.publication.server")
}
}
}