From 4f96d2ce76b7c2f09502276a8e4be9c359008d77 Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Sat, 22 Jan 2022 13:37:56 +0600 Subject: [PATCH] provide to server work with posts --- .../java/dev/inmo/postssystem/server/DI.kt | 9 ++- .../server/DefaultExposedReadPostsService.kt | 11 ++++ .../posts/server/DownloadFullNewPost.kt | 61 ------------------- .../posts/server/ServerPostsService.kt | 10 +++ 4 files changed, 29 insertions(+), 62 deletions(-) create mode 100644 services/posts/server/src/jvmMain/kotlin/dev/inmo/postssystem/services/posts/server/DefaultExposedReadPostsService.kt delete mode 100644 services/posts/server/src/jvmMain/kotlin/dev/inmo/postssystem/services/posts/server/DownloadFullNewPost.kt create mode 100644 services/posts/server/src/jvmMain/kotlin/dev/inmo/postssystem/services/posts/server/ServerPostsService.kt diff --git a/server/src/main/java/dev/inmo/postssystem/server/DI.kt b/server/src/main/java/dev/inmo/postssystem/server/DI.kt index 2f14f6b8..e58e238a 100644 --- a/server/src/main/java/dev/inmo/postssystem/server/DI.kt +++ b/server/src/main/java/dev/inmo/postssystem/server/DI.kt @@ -35,7 +35,7 @@ import dev.inmo.postssystem.features.posts.server.ExposedServerPostsStorage import dev.inmo.postssystem.features.posts.server.ServerPostsStorage import dev.inmo.postssystem.features.publication.server.PublicationManager import dev.inmo.postssystem.features.publication.server.PublicationTarget -import dev.inmo.postssystem.services.posts.server.ServerPostsServiceRoutingConfigurator +import dev.inmo.postssystem.services.posts.server.* import dev.inmo.postssystem.targets.telegram.publication.server.PublicationTargetTelegram import io.ktor.application.featureOrNull import io.ktor.application.log @@ -177,6 +177,13 @@ fun getDIModule( // Posts storage single { ExposedServerPostsStorage(get()) } + singleWithBinds { + ServerPostsService( + DefaultExposedReadPostsService(get()), + DefaultWritePostsService(get(), get>()) + ) + } + // Routing configurators singleWithBinds { FilesRoutingConfigurator(get(), null, get()) } singleWithBinds { StatusRoutingConfigurator } diff --git a/services/posts/server/src/jvmMain/kotlin/dev/inmo/postssystem/services/posts/server/DefaultExposedReadPostsService.kt b/services/posts/server/src/jvmMain/kotlin/dev/inmo/postssystem/services/posts/server/DefaultExposedReadPostsService.kt new file mode 100644 index 00000000..76ac418b --- /dev/null +++ b/services/posts/server/src/jvmMain/kotlin/dev/inmo/postssystem/services/posts/server/DefaultExposedReadPostsService.kt @@ -0,0 +1,11 @@ +package dev.inmo.postssystem.services.posts.server + +import dev.inmo.micro_utils.repos.ReadCRUDRepo +import dev.inmo.postssystem.features.posts.common.PostId +import dev.inmo.postssystem.features.posts.common.RegisteredPost +import dev.inmo.postssystem.features.posts.server.ServerReadPostsStorage +import dev.inmo.postssystem.services.posts.common.ReadPostsService + +class DefaultExposedReadPostsService( + private val postsStorage: ServerReadPostsStorage +) : ReadPostsService, ReadCRUDRepo by postsStorage diff --git a/services/posts/server/src/jvmMain/kotlin/dev/inmo/postssystem/services/posts/server/DownloadFullNewPost.kt b/services/posts/server/src/jvmMain/kotlin/dev/inmo/postssystem/services/posts/server/DownloadFullNewPost.kt deleted file mode 100644 index 3cc5932c..00000000 --- a/services/posts/server/src/jvmMain/kotlin/dev/inmo/postssystem/services/posts/server/DownloadFullNewPost.kt +++ /dev/null @@ -1,61 +0,0 @@ -package dev.inmo.postssystem.services.posts.server - -import dev.inmo.micro_utils.common.FileName -import dev.inmo.micro_utils.common.MPPFile -import dev.inmo.micro_utils.ktor.common.StandardKtorSerialFormat -import dev.inmo.micro_utils.ktor.common.decodeHex -import dev.inmo.postssystem.features.content.common.ContentSerializer -import dev.inmo.postssystem.services.posts.common.FullNewPost -import io.ktor.application.ApplicationCall -import io.ktor.application.call -import io.ktor.http.content.PartData -import io.ktor.request.receiveMultipart -import io.ktor.util.asStream -import io.ktor.util.pipeline.PipelineContext -import io.ktor.utils.io.core.use - -suspend fun PipelineContext.downloadFullNewPost( - serialFormat: StandardKtorSerialFormat -): FullNewPost { - val multipart = call.receiveMultipart() - val map = mutableMapOf() - - var part = multipart.readPart() - - while (part != null) { - val name = part.name - val capturedPart = part - when { - name == null -> {} - capturedPart is PartData.FormItem -> { - map[name] = serialFormat.decodeHex( - ContentSerializer, - capturedPart.value - ) - } - capturedPart is PartData.FileItem -> { - val filename = FileName(capturedPart.originalFileName ?: error("File name is unknown for default part")) - val resultInput = MPPFile.createTempFile( - filename.nameWithoutExtension.let { - var resultName = it - while (resultName.length < 3) { - resultName += "_" - } - resultName - }, - ".${filename.extension}" - ).apply { - outputStream().use { fileStream -> - capturedPart.provider().asStream().copyTo(fileStream) - } - } - - } - else -> {} - } - - part = multipart.readPart() - } - - -} diff --git a/services/posts/server/src/jvmMain/kotlin/dev/inmo/postssystem/services/posts/server/ServerPostsService.kt b/services/posts/server/src/jvmMain/kotlin/dev/inmo/postssystem/services/posts/server/ServerPostsService.kt new file mode 100644 index 00000000..2d3465e7 --- /dev/null +++ b/services/posts/server/src/jvmMain/kotlin/dev/inmo/postssystem/services/posts/server/ServerPostsService.kt @@ -0,0 +1,10 @@ +package dev.inmo.postssystem.services.posts.server + +import dev.inmo.postssystem.services.posts.common.* + +class ServerPostsService( + private val readPostsService: ReadPostsService, + private val writePostsService: WritePostsService +) : PostsService, + ReadPostsService by readPostsService, + WritePostsService by writePostsService