Add image upload functionality and enhance page metadata creation.
All checks were successful
SteamWarCI Build successful
All checks were successful
SteamWarCI Build successful
This commit is contained in:
@@ -38,7 +38,11 @@ import io.ktor.server.response.*
|
|||||||
import io.ktor.server.routing.*
|
import io.ktor.server.routing.*
|
||||||
import kotlinx.serialization.Serializable
|
import kotlinx.serialization.Serializable
|
||||||
import kotlinx.serialization.json.*
|
import kotlinx.serialization.json.*
|
||||||
|
import java.time.Instant
|
||||||
|
import java.time.LocalDate
|
||||||
|
import java.time.format.DateTimeFormatter
|
||||||
import java.util.Base64
|
import java.util.Base64
|
||||||
|
import java.util.Date
|
||||||
|
|
||||||
val pathPageIdMap = mutableMapOf<String, Int>()
|
val pathPageIdMap = mutableMapOf<String, Int>()
|
||||||
var pageId = 1
|
var pageId = 1
|
||||||
@@ -87,6 +91,9 @@ data class PageResponse(
|
|||||||
@Serializable
|
@Serializable
|
||||||
data class CreatePageRequest(val path: String, val slug: String?, val title: String?)
|
data class CreatePageRequest(val path: String, val slug: String?, val title: String?)
|
||||||
|
|
||||||
|
@Serializable
|
||||||
|
data class AddImageRequest(val name: String, val data: String)
|
||||||
|
|
||||||
@Serializable
|
@Serializable
|
||||||
data class CreateBranchRequest(val branch: String)
|
data class CreateBranchRequest(val branch: String)
|
||||||
|
|
||||||
@@ -99,6 +106,9 @@ data class MergeBranchRequest(val branch: String, val message: String)
|
|||||||
@Serializable
|
@Serializable
|
||||||
data class DeletePageRequest(val sha: String, val message: String)
|
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() {
|
fun Route.configurePage() {
|
||||||
val client = HttpClient(Java) {
|
val client = HttpClient(Java) {
|
||||||
install(ContentNegotiation) {
|
install(ContentNegotiation) {
|
||||||
@@ -148,8 +158,6 @@ fun Route.configurePage() {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
post {
|
post {
|
||||||
@Serializable
|
|
||||||
data class CreateGiteaPageRequest(val message: String, val content: String, val branch: String, val author: Identity)
|
|
||||||
|
|
||||||
val req = call.receive<CreatePageRequest>()
|
val req = call.receive<CreatePageRequest>()
|
||||||
if(req.path.startsWith("src/content/")) {
|
if(req.path.startsWith("src/content/")) {
|
||||||
@@ -164,7 +172,10 @@ fun Route.configurePage() {
|
|||||||
---
|
---
|
||||||
title: ${req.title ?: "[Enter Title]"}
|
title: ${req.title ?: "[Enter Title]"}
|
||||||
description: [Enter Description]
|
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}
|
# ${req.path}
|
||||||
@@ -259,6 +270,21 @@ fun Route.configurePage() {
|
|||||||
|
|
||||||
call.respond(filesInDirectory("/src/images", branch))
|
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)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user