first fully ready for trying system
This commit is contained in:
18
publicators/simple/client/build.gradle
Normal file
18
publicators/simple/client/build.gradle
Normal 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")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@@ -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)
|
||||
}
|
@@ -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()
|
||||
)
|
||||
}
|
1
publicators/simple/client/src/main/AndroidManifest.xml
Normal file
1
publicators/simple/client/src/main/AndroidManifest.xml
Normal file
@@ -0,0 +1 @@
|
||||
<manifest package="dev.inmo.postssystem.publicators.simple.client"/>
|
17
publicators/simple/common/build.gradle
Normal file
17
publicators/simple/common/build.gradle
Normal 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")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@@ -0,0 +1,4 @@
|
||||
package dev.inmo.postssystem.publicators.simple.common
|
||||
|
||||
const val simplePublicatorRootPath = "simple"
|
||||
const val simplePublicatorPublishPathPart = "publish"
|
1
publicators/simple/common/src/main/AndroidManifest.xml
Normal file
1
publicators/simple/common/src/main/AndroidManifest.xml
Normal file
@@ -0,0 +1 @@
|
||||
<manifest package="dev.inmo.postssystem.publicators.simple.common"/>
|
17
publicators/simple/server/build.gradle
Normal file
17
publicators/simple/server/build.gradle
Normal 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")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@@ -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()
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
@@ -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)
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@@ -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")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -10,7 +10,7 @@ kotlin {
|
||||
sourceSets {
|
||||
commonMain {
|
||||
dependencies {
|
||||
api project(":postssystem.features.common.common")
|
||||
api project(":postssystem.features.publication.common")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -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")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user