impl publishing klient and kerver
This commit is contained in:
41
publishing/ktor/server/build.gradle
Normal file
41
publishing/ktor/server/build.gradle
Normal file
@@ -0,0 +1,41 @@
|
||||
buildscript {
|
||||
repositories {
|
||||
mavenLocal()
|
||||
jcenter()
|
||||
mavenCentral()
|
||||
}
|
||||
|
||||
dependencies {
|
||||
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
|
||||
classpath "org.jetbrains.kotlin:kotlin-serialization:$kotlin_version"
|
||||
classpath "com.jfrog.bintray.gradle:gradle-bintray-plugin:$gradle_bintray_plugin_version"
|
||||
}
|
||||
}
|
||||
|
||||
plugins {
|
||||
id "org.jetbrains.kotlin.plugin.serialization" version "$kotlin_version"
|
||||
}
|
||||
|
||||
project.version = "$core_version"
|
||||
project.group = "com.insanusmokrassar"
|
||||
|
||||
apply plugin: "java-library"
|
||||
apply plugin: "kotlin"
|
||||
|
||||
repositories {
|
||||
mavenLocal()
|
||||
jcenter()
|
||||
mavenCentral()
|
||||
maven { url "https://kotlin.bintray.com/kotlinx" }
|
||||
}
|
||||
|
||||
dependencies {
|
||||
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
|
||||
|
||||
api projectByName("postssystem.publishing.ktor.common")
|
||||
api projectByName("postssystem.ktor.server")
|
||||
|
||||
testImplementation "org.xerial:sqlite-jdbc:$test_sqlite_version"
|
||||
testImplementation "org.jetbrains.kotlin:kotlin-test"
|
||||
testImplementation "org.jetbrains.kotlin:kotlin-test-junit"
|
||||
}
|
@@ -0,0 +1,20 @@
|
||||
package com.insanusmokrassar.postssystem.publishing.ktor.server
|
||||
|
||||
import com.insanusmokrassar.postssystem.core.publishing.repos.PublishingKeysRepo
|
||||
import com.insanusmokrassar.postssystem.ktor.server.configurators.ApplicationRoutingConfigurator
|
||||
import io.ktor.routing.Route
|
||||
|
||||
fun Route.configurePublishingKeysRepoRoutes (
|
||||
proxyTo: PublishingKeysRepo
|
||||
) {
|
||||
configureReadPublishingKeysRepoRoutes(proxyTo)
|
||||
configureWritePublishingKeysRepoRoutes(proxyTo)
|
||||
}
|
||||
|
||||
class PublishingKeysRepoRoutingConfigurator (
|
||||
private val proxyTo: PublishingKeysRepo
|
||||
) : ApplicationRoutingConfigurator.Element {
|
||||
override fun Route.invoke() {
|
||||
configurePublishingKeysRepoRoutes(proxyTo)
|
||||
}
|
||||
}
|
@@ -0,0 +1,45 @@
|
||||
package com.insanusmokrassar.postssystem.publishing.ktor.server
|
||||
|
||||
import com.insanusmokrassar.postssystem.core.post.PostId
|
||||
import com.insanusmokrassar.postssystem.core.publishing.TriggerControlKey
|
||||
import com.insanusmokrassar.postssystem.core.publishing.repos.ReadPublishingKeysRepo
|
||||
import com.insanusmokrassar.postssystem.ktor.server.configurators.ApplicationRoutingConfigurator
|
||||
import com.insanusmokrassar.postssystem.ktor.server.getParameterOrSendError
|
||||
import com.insanusmokrassar.postssystem.ktor.server.unianswer
|
||||
import com.insanusmokrassar.postssystem.publishing.ktor.getPostIdByTriggerControlKeyRoute
|
||||
import com.insanusmokrassar.postssystem.publishing.ktor.getTriggerControlKeyByPostIdRoute
|
||||
import io.ktor.application.call
|
||||
import io.ktor.routing.Route
|
||||
import io.ktor.routing.get
|
||||
import kotlinx.serialization.builtins.nullable
|
||||
import kotlinx.serialization.builtins.serializer
|
||||
|
||||
fun Route.configureReadPublishingKeysRepoRoutes (
|
||||
proxyTo: ReadPublishingKeysRepo
|
||||
) {
|
||||
get("$getPostIdByTriggerControlKeyRoute/{key}") {
|
||||
val key: TriggerControlKey = call.getParameterOrSendError("key") ?: return@get
|
||||
|
||||
call.unianswer(
|
||||
PostId.serializer().nullable,
|
||||
proxyTo.getPostIdByTriggerControlKey(key)
|
||||
)
|
||||
}
|
||||
|
||||
get("$getTriggerControlKeyByPostIdRoute/{postId}") {
|
||||
val postId: PostId = call.getParameterOrSendError("postId") ?: return@get
|
||||
|
||||
call.unianswer(
|
||||
TriggerControlKey.serializer().nullable,
|
||||
proxyTo.getTriggerControlKeyByPostId(postId)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
class ReadPublishingKeysRepoRoutingConfigurator (
|
||||
private val proxyTo: ReadPublishingKeysRepo
|
||||
) : ApplicationRoutingConfigurator.Element {
|
||||
override fun Route.invoke() {
|
||||
configureReadPublishingKeysRepoRoutes(proxyTo)
|
||||
}
|
||||
}
|
@@ -0,0 +1,39 @@
|
||||
package com.insanusmokrassar.postssystem.publishing.ktor.server
|
||||
|
||||
import com.insanusmokrassar.postssystem.core.post.PostId
|
||||
import com.insanusmokrassar.postssystem.core.publishing.repos.WritePublishingKeysRepo
|
||||
import com.insanusmokrassar.postssystem.ktor.server.unianswer
|
||||
import com.insanusmokrassar.postssystem.ktor.server.uniload
|
||||
import com.insanusmokrassar.postssystem.publishing.ktor.SetPostTriggerControlKeyObject
|
||||
import com.insanusmokrassar.postssystem.publishing.ktor.setPostTriggerControlKeyRoute
|
||||
import com.insanusmokrassar.postssystem.publishing.ktor.unsetPostTriggerControlKeyRoute
|
||||
import io.ktor.application.call
|
||||
import io.ktor.routing.Route
|
||||
import io.ktor.routing.post
|
||||
import kotlinx.serialization.builtins.serializer
|
||||
|
||||
fun Route.configureWritePublishingKeysRepoRoutes (
|
||||
proxyTo: WritePublishingKeysRepo
|
||||
) {
|
||||
post(setPostTriggerControlKeyRoute) {
|
||||
val obj = call.uniload(SetPostTriggerControlKeyObject.serializer())
|
||||
|
||||
call.unianswer(
|
||||
Boolean.serializer(),
|
||||
proxyTo.setPostTriggerControlKey(obj.postId, obj.key)
|
||||
)
|
||||
}
|
||||
|
||||
post(unsetPostTriggerControlKeyRoute) {
|
||||
val postId = call.uniload(PostId.serializer())
|
||||
|
||||
call.unianswer(
|
||||
Boolean.serializer(),
|
||||
proxyTo.unsetPostTriggerControlKey(postId)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
class WritePublishingKeysRepoRoutingConfigurator (
|
||||
private val proxyTo: WritePublishingKeysRepo
|
||||
)
|
Reference in New Issue
Block a user