From 2f93f336c9df7da583569bd03180763cf3b47702 Mon Sep 17 00:00:00 2001 From: Chaoscaot Date: Thu, 29 May 2025 14:30:06 +0200 Subject: [PATCH] Add image upload functionality and enhance page metadata creation. --- WebsiteBackend/src/de/steamwar/routes/Page.kt | 32 +++++++++++++++++-- 1 file changed, 29 insertions(+), 3 deletions(-) diff --git a/WebsiteBackend/src/de/steamwar/routes/Page.kt b/WebsiteBackend/src/de/steamwar/routes/Page.kt index 139814c7..083d8dc4 100644 --- a/WebsiteBackend/src/de/steamwar/routes/Page.kt +++ b/WebsiteBackend/src/de/steamwar/routes/Page.kt @@ -38,7 +38,11 @@ import io.ktor.server.response.* import io.ktor.server.routing.* import kotlinx.serialization.Serializable import kotlinx.serialization.json.* +import java.time.Instant +import java.time.LocalDate +import java.time.format.DateTimeFormatter import java.util.Base64 +import java.util.Date val pathPageIdMap = mutableMapOf() var pageId = 1 @@ -87,6 +91,9 @@ data class PageResponse( @Serializable data class CreatePageRequest(val path: String, val slug: String?, val title: String?) +@Serializable +data class AddImageRequest(val name: String, val data: String) + @Serializable data class CreateBranchRequest(val branch: String) @@ -99,6 +106,9 @@ data class MergeBranchRequest(val branch: String, val message: String) @Serializable data class DeletePageRequest(val sha: String, val message: String) +@Serializable +data class CreateGiteaPageRequest(val message: String, val content: String, val branch: String, val author: Identity) + fun Route.configurePage() { val client = HttpClient(Java) { install(ContentNegotiation) { @@ -148,8 +158,6 @@ fun Route.configurePage() { }) } post { - @Serializable - data class CreateGiteaPageRequest(val message: String, val content: String, val branch: String, val author: Identity) val req = call.receive() if(req.path.startsWith("src/content/")) { @@ -164,7 +172,10 @@ fun Route.configurePage() { --- title: ${req.title ?: "[Enter Title]"} description: [Enter Description] - slug: ${req.slug ?: "[Enter Slug]"} + key: ${req.slug ?: "[Enter Slug]"} + created: ${LocalDate.now().format(DateTimeFormatter.ISO_LOCAL_DATE)} + tags: + - test --- # ${req.path} @@ -259,6 +270,21 @@ fun Route.configurePage() { call.respond(filesInDirectory("/src/images", branch)) } + post { + val req = call.receive() + + client.post("repos/SteamWar/Website/contents/src/images/${req.name}") { + contentType(ContentType.Application.Json) + setBody(CreateGiteaPageRequest( + "Add Image ${req.name}", + req.data, + call.request.queryParameters["branch"] ?: "master", + Identity(call.principal()!!.user.userName, "admin-tool@steamwar.de" + ))) + } + + call.respond(HttpStatusCode.Created) + } } } } \ No newline at end of file