Add image upload functionality and enhance page metadata creation.
All checks were successful
SteamWarCI Build successful

This commit is contained in:
2025-05-29 14:30:06 +02:00
parent a5bb62590c
commit 2f93f336c9

View File

@ -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<String, Int>()
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<CreatePageRequest>()
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<AddImageRequest>()
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<SWAuthPrincipal>()!!.user.userName, "admin-tool@steamwar.de"
)))
}
call.respond(HttpStatusCode.Created)
}
}
}
}