Add web-api module with OpenAPI integration, enable chat logs forwarding to web backend, and update dependencies across modules.
This commit is contained in:
@@ -0,0 +1,69 @@
|
||||
plugins {
|
||||
java
|
||||
id("org.openapi.generator") version "7.12.0"
|
||||
}
|
||||
|
||||
group = "com.alttd.chat"
|
||||
version = "2.0.0-SNAPSHOT"
|
||||
|
||||
dependencies {
|
||||
implementation("io.swagger.core.v3:swagger-annotations:2.2.28")
|
||||
|
||||
implementation("com.squareup.okhttp3:okhttp:4.12.0")
|
||||
implementation("com.squareup.okhttp3:logging-interceptor:4.12.0")
|
||||
|
||||
implementation("com.google.code.gson:gson:2.12.1")
|
||||
implementation("io.gsonfire:gson-fire:1.9.0")
|
||||
|
||||
implementation("javax.annotation:javax.annotation-api:1.3.2")
|
||||
implementation("jakarta.annotation:jakarta.annotation-api:2.1.1")
|
||||
}
|
||||
|
||||
sourceSets {
|
||||
main {
|
||||
java {
|
||||
srcDir("${projectDir}/build/generated-sources/client/src/main/java")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
tasks.named<org.openapitools.generator.gradle.plugin.tasks.GenerateTask>("openApiGenerate") {
|
||||
generatorName.set("java")
|
||||
inputSpec.set("${projectDir}/src/main/resources/chat-api.yml")
|
||||
configFile.set("${projectDir}/src/main/resources/config_backend.json")
|
||||
outputDir.set("${projectDir}/build/generated-sources/client")
|
||||
|
||||
apiPackage.set("com.alttd.altitudeweb.api")
|
||||
modelPackage.set("com.alttd.altitudeweb.model")
|
||||
|
||||
modelNameSuffix.set("Dto")
|
||||
|
||||
additionalProperties.set(
|
||||
mapOf(
|
||||
"dateLibrary" to "java8",
|
||||
"library" to "okhttp-gson"
|
||||
)
|
||||
)
|
||||
|
||||
typeMappings.set(mapOf("OffsetDateTime" to "Instant"))
|
||||
importMappings.set(mapOf("OffsetDateTime" to "java.time.Instant"))
|
||||
|
||||
generateApiTests.set(false)
|
||||
generateApiDocumentation.set(false)
|
||||
generateModelTests.set(false)
|
||||
generateModelDocumentation.set(false)
|
||||
|
||||
generateAliasAsModel.set(true)
|
||||
}
|
||||
|
||||
sourceSets {
|
||||
main {
|
||||
java {
|
||||
srcDir(layout.buildDirectory.dir("generated/openapi/src/main/java"))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
tasks.compileJava {
|
||||
dependsOn("openApiGenerate")
|
||||
}
|
||||
@@ -0,0 +1,135 @@
|
||||
openapi: 3.0.3
|
||||
|
||||
info:
|
||||
title: Minecraft Network API
|
||||
version: 1.0.0
|
||||
|
||||
servers:
|
||||
- url: http://localhost:8080/api
|
||||
|
||||
tags:
|
||||
- name: chat
|
||||
description: Data for displaying Chat messages to clients
|
||||
|
||||
paths:
|
||||
/chat/send/chat/message:
|
||||
post:
|
||||
tags:
|
||||
- chat
|
||||
summary: Sends one or more chat messages
|
||||
operationId: sendChatMessages
|
||||
requestBody:
|
||||
required: true
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
type: array
|
||||
items:
|
||||
$ref: "#/components/schemas/ChatMessage"
|
||||
responses:
|
||||
"202":
|
||||
description: Accepted
|
||||
|
||||
/chat/send/servers/state:
|
||||
post:
|
||||
tags:
|
||||
- chat
|
||||
summary: Update server states
|
||||
operationId: updateServerStates
|
||||
requestBody:
|
||||
required: true
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/ServerState"
|
||||
responses:
|
||||
"202":
|
||||
description: Accepted
|
||||
|
||||
components:
|
||||
schemas:
|
||||
User:
|
||||
type: object
|
||||
required:
|
||||
- uuid
|
||||
- name
|
||||
- styledName
|
||||
|
||||
properties:
|
||||
uuid:
|
||||
type: string
|
||||
format: uuid
|
||||
name:
|
||||
type: string
|
||||
styledName:
|
||||
type: string
|
||||
|
||||
ChatMessage:
|
||||
type: object
|
||||
required:
|
||||
- uuid
|
||||
- message
|
||||
- channel
|
||||
- server
|
||||
- timestamp
|
||||
- blocked
|
||||
properties:
|
||||
uuid:
|
||||
type: string
|
||||
format: uuid
|
||||
channel:
|
||||
type: string
|
||||
enum:
|
||||
- CHAT
|
||||
- PARTY
|
||||
- AC
|
||||
- GAC
|
||||
message:
|
||||
type: string
|
||||
server:
|
||||
type: string
|
||||
timestamp:
|
||||
type: string
|
||||
format: date-time
|
||||
blocked:
|
||||
type: boolean
|
||||
|
||||
PrivateMessage:
|
||||
type: object
|
||||
required:
|
||||
- sender
|
||||
- receiver
|
||||
- message
|
||||
- senderServer
|
||||
- receiverServer
|
||||
properties:
|
||||
sender:
|
||||
type: string
|
||||
format: uuid
|
||||
receiver:
|
||||
type: string
|
||||
format: uuid
|
||||
message:
|
||||
type: string
|
||||
senderServer:
|
||||
type: string
|
||||
receiverServer:
|
||||
type: string
|
||||
|
||||
Server:
|
||||
type: object
|
||||
properties:
|
||||
name:
|
||||
type: string
|
||||
players:
|
||||
type: array
|
||||
items:
|
||||
$ref: "#/components/schemas/User"
|
||||
|
||||
ServerState:
|
||||
type: object
|
||||
properties:
|
||||
servers:
|
||||
type: array
|
||||
items:
|
||||
$ref: "#/components/schemas/Server"
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"library": "okhttp-gson",
|
||||
"hideGenerationTimestamp": true,
|
||||
"modelPackage": "com.alttd.altitudeweb.model",
|
||||
"apiPackage": "com.alttd.altitudeweb.api",
|
||||
"invokerPackage": "com.alttd.altitudeweb.invoker",
|
||||
"serializableModel": true,
|
||||
"openApiNullable": false,
|
||||
"useTags": true,
|
||||
"generateApis": true,
|
||||
"generateApiTests": false,
|
||||
"generateApiDocumentation": false,
|
||||
"generateModels": true,
|
||||
"generateModelTests": false,
|
||||
"generateSupportingFiles": true,
|
||||
"modelNameSuffix": "Dto",
|
||||
"generateTests": false,
|
||||
"dateLibrary": "java8",
|
||||
"enumUnknownDefaultCase": true,
|
||||
"disallowAdditionalPropertiesIfNotPresent": false,
|
||||
"useJakartaEe": true
|
||||
}
|
||||
Reference in New Issue
Block a user