Skip to content

Commit

Permalink
Remove klaxon. duplicated with kotlinx.serialization
Browse files Browse the repository at this point in the history
  • Loading branch information
andrewcell committed Aug 22, 2023
1 parent cf70b3b commit 546caa9
Show file tree
Hide file tree
Showing 23 changed files with 73 additions and 33 deletions.
4 changes: 2 additions & 2 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,6 @@ dependencies {
implementation("org.postgresql:postgresql:42.6.0")
implementation("org.xerial:sqlite-jdbc:3.42.0.0")
implementation("com.h2database:h2:2.2.220")
implementation("com.beust", "klaxon", "5.6")
implementation("ch.qos.logback:logback-classic:1.4.11")
implementation("org.bouncycastle:bcprov-jdk15on:1.70")
implementation("org.mariadb.jdbc:mariadb-java-client:3.1.4")
Expand All @@ -48,6 +47,7 @@ dependencies {
implementation("io.ktor:ktor-server-call-logging-jvm:$ktorVersion")
implementation("io.ktor:ktor-serialization-kotlinx-json-jvm:$ktorVersion")
implementation("io.ktor:ktor-server-status-pages:$ktorVersion")
implementation("io.ktor:ktor-server-cors:$ktorVersion")
dokkaGfmPlugin("org.jetbrains.dokka:jekyll-plugin:1.8.20")
dokkaGfmPlugin("org.jetbrains.dokka:kotlin-as-java-plugin:1.8.20")
testImplementation("org.jetbrains.kotlin:kotlin-test:1.9.0")
Expand All @@ -72,4 +72,4 @@ tasks.dokkaHtml.configure {
samples.from("src/test/kotlin/Sample.kt")
}
}
}
}
4 changes: 2 additions & 2 deletions src/main/kotlin/scripting/reactor/ReactorScriptManager.kt
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package scripting.reactor

import client.Client
import com.beust.klaxon.Klaxon
import kotlinx.serialization.json.Json
import mu.KLoggable
import scripting.AbstractScriptManager
import server.maps.Reactor
Expand Down Expand Up @@ -33,7 +33,7 @@ object ReactorScriptManager : AbstractScriptManager(), KLoggable {
var ret = drops[id]
if (ret == null) {
val reactorDropData = ResourceFile.load("ReactorDrops.json")
?.let { Klaxon().parseArray<ReactorDropDatabase>(it) } ?: return emptyList()
?.let { Json.decodeFromString<Array<ReactorDropDatabase>>(it) } ?: return emptyList()
val retT = mutableListOf<ReactorDropEntry>()
reactorDropData.forEach {
retT.add(ReactorDropEntry(it.itemId, it.change, it.questId))
Expand Down
5 changes: 2 additions & 3 deletions src/main/kotlin/server/ItemInformationProvider.kt
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@ import client.inventory.Equip
import client.inventory.InventoryType
import client.inventory.Item
import client.inventory.WeaponType
import com.beust.klaxon.Klaxon
import constants.ItemConstants
import kotlinx.serialization.json.Json
import mu.KLoggable
import provider.Data
import provider.DataProviderFactory
Expand Down Expand Up @@ -512,8 +512,7 @@ object ItemInformationProvider : KLoggable {
private fun loadMonsterCardIdData(): Map<Int, Int> {
val map = mutableMapOf<Int, Int>()
try {
val cardData = ResourceFile.load("MonsterCardData.json")
?.let { Klaxon().parseArray<MonsterCardDataDatabase>(it) } ?: return emptyMap()
val cardData = ResourceFile.load("MonsterCardData.json")?.let { Json.decodeFromString<Array<MonsterCardDataDatabase>>(it) } ?: emptyArray()
cardData.forEach {
map[it.id] = it.cardId
}
Expand Down
6 changes: 3 additions & 3 deletions src/main/kotlin/server/Shop.kt
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@ package server
import client.Client
import client.inventory.InventoryType
import client.inventory.Pet
import com.beust.klaxon.Klaxon
import constants.ItemConstants
import kotlinx.serialization.json.Json
import mu.KLogging
import tools.PacketCreator
import tools.ResourceFile
Expand Down Expand Up @@ -161,8 +161,8 @@ class Shop(val id: Int, val npcId: Int) {
fun createFromDatabase(id: Int, isShopId: Boolean): Shop? {
var ret: Shop? = null
val shopId: Int
val shopData = ResourceFile.load("shops.json")?.let { Klaxon().parseArray<ShopDatabase>(it) } ?: return null
val shopItemData = ResourceFile.load("shopItem.json")?.let { Klaxon().parseArray<ShopItemDatabase>(it) } ?: return null
val shopData = ResourceFile.load("shops.json")?.let { Json.decodeFromString<Array<ShopDatabase>>(it) } ?: return null
val shopItemData = ResourceFile.load("shopItem.json")?.let { Json.decodeFromString<Array<ShopItemDatabase>>(it) } ?: return null
try {
val filtered = shopData.filter { if (isShopId) it.shopId == id else it.npcId == id }
if (filtered.isEmpty()) return null
Expand Down
8 changes: 4 additions & 4 deletions src/main/kotlin/server/life/MonsterInformationProvider.kt
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package server.life

import com.beust.klaxon.Klaxon
import kotlinx.serialization.json.Json
import mu.KLoggable
import tools.ResourceFile
import tools.settings.DropData
Expand All @@ -13,19 +13,19 @@ object MonsterInformationProvider : KLoggable {

init {
retrieveGlobal()
val dropData = ResourceFile.load("DropData.json")?.let { Klaxon().parseArray<DropData>(it) } ?: emptyList()
val dropData = ResourceFile.load("DropData.json")?.let { Json.decodeFromString<Array<DropData>>(it) } ?: emptyArray()
val drops = mutableMapOf<Int, List<MonsterDropEntry>>()
dropData.forEach {
val list = drops[it.dropperId] ?: emptyList()
drops[it.dropperId] = list + listOf(MonsterDropEntry(it.itemId, it.chance, it.minimumQuantity, it.maximumQuantity, it.questId.toShort()))
logger.trace { "Drop data loaded. DropperId: ${it.dropperId}, ItemId: ${it.itemId}" }
}
this.drops = drops
}

private fun retrieveGlobal() {
try {
val globalDropData = ResourceFile.load("DropDataGlobal.json")
?.let { Klaxon().parseArray<DropDataGlobal>(it) } ?: return
val globalDropData = ResourceFile.load("DropDataGlobal.json")?.let { Json.decodeFromString<Array<DropDataGlobal>>(it) } ?: emptyArray()
globalDropData.forEach {
globalDrops.add(
MonsterGlobalDropEntry(it.itemId, it.chance, it.continent,
Expand Down
5 changes: 2 additions & 3 deletions src/main/kotlin/server/maps/MapFactory.kt
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package server.maps

import com.beust.klaxon.Klaxon
import database.PlayerNpcs
import kotlinx.serialization.json.Json
import mu.KLogging
import org.jetbrains.exposed.sql.select
import org.jetbrains.exposed.sql.transactions.transaction
Expand All @@ -12,7 +12,6 @@ import server.PortalFactory
import server.life.LifeFactory
import server.life.Monster
import tools.ResourceFile
import tools.StringXmlParser
import tools.settings.WZCustomLifeDatabase
import java.awt.Point
import java.awt.Rectangle
Expand Down Expand Up @@ -241,7 +240,7 @@ class MapFactory(val source: DataProvider, stringSource: DataProvider, val world
customLife.clear()
try {
val customLifeData = ResourceFile.load("WZCustomLife.json")
?.let { Klaxon().parseArray<WZCustomLifeDatabase>(it) }
?.let { Json.decodeFromString<Array<WZCustomLifeDatabase>>(it) }
?: return -1
customLifeData.forEach {
val mapId = it.mid
Expand Down
18 changes: 4 additions & 14 deletions src/main/kotlin/tools/ServerJSON.kt
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
package tools

import com.beust.klaxon.Klaxon
import kotlinx.serialization.json.Json
import net.server.Server
import tools.ServerJSON.path
import tools.ServerJSON.settings
import tools.ServerJSON.settingsJsonText
import tools.settings.DatabaseConfig
import tools.settings.Settings
import java.io.File
import kotlin.system.exitProcess
Expand All @@ -31,12 +30,8 @@ object ServerJSON {
init {
try {
val file = File(path)
val parsed = Klaxon().parse(file) as? Settings
settingsJsonText = file.readText()
settings = if (parsed == null) {
printErrorAndExit()
Settings(database = DatabaseConfig("mysql", "", "", "", "", port = 3306), worlds = listOf())
} else parsed
settings = Json.decodeFromString<Settings>(settingsJsonText)
} catch (e: Exception) {
println("Failed to load settings.json.")
e.printStackTrace()
Expand All @@ -52,13 +47,8 @@ object ServerJSON {
*/
suspend fun reload(): Boolean {
try {
val file = File(path)
val parsed = Klaxon().parse(file) as? Settings
settingsJsonText = file.readText()
settings = if (parsed == null) {
printErrorAndExit()
Settings(database = DatabaseConfig("mysql", "", "", "", "", port = 3306), worlds = listOf())
} else parsed
settingsJsonText = File(path).readText()
settings = Json.decodeFromString<Settings>(settingsJsonText)
Server.worlds.forEach {
it.reload()
}
Expand Down
3 changes: 3 additions & 0 deletions src/main/kotlin/tools/settings/DatabaseConfig.kt
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
package tools.settings

import kotlinx.serialization.Serializable

@Serializable
data class DatabaseConfig(
val type: String,
val host: String,
Expand Down
4 changes: 4 additions & 0 deletions src/main/kotlin/tools/settings/DropData.kt
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
package tools.settings

import kotlinx.serialization.Serializable

/*
{
"id": 2999,
Expand All @@ -10,6 +13,7 @@ package tools.settings
"chance": 30000
},
*/
@Serializable
data class DropData(
val id: Int,
val dropperId: Int,
Expand Down
4 changes: 4 additions & 0 deletions src/main/kotlin/tools/settings/DropDataGlobal.kt
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
package tools.settings

import kotlinx.serialization.Serializable

/*
{
"id": 1,
Expand All @@ -12,6 +15,7 @@ package tools.settings
"comments": "마우스"
},
*/
@Serializable
data class DropDataGlobal(
val id: Int,
val continent: Int,
Expand Down
3 changes: 3 additions & 0 deletions src/main/kotlin/tools/settings/HashType.kt
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
package tools.settings

import kotlinx.serialization.Serializable

@Serializable
data class HashType(
val hashType: String = "pbkdf2", // sha-512, sha-1, pbkdf2
// Above is only for PBKDF2
Expand Down
3 changes: 3 additions & 0 deletions src/main/kotlin/tools/settings/LoggingOption.kt
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
package tools.settings

import kotlinx.serialization.Serializable

@Serializable
data class LoggingOption(
val directory: String = "./logs",
val loggingLevel: String = "info",
Expand Down
3 changes: 3 additions & 0 deletions src/main/kotlin/tools/settings/MonsterCardDataDatabase.kt
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
package tools.settings

import kotlinx.serialization.Serializable

@Serializable
data class MonsterCardDataDatabase(val id: Int, val cardId: Int, val mobId: Int)
3 changes: 3 additions & 0 deletions src/main/kotlin/tools/settings/ReactorDropDatabase.kt
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
package tools.settings

import kotlinx.serialization.Serializable

@Serializable
data class ReactorDropDatabase(
val reactorDropId: Int,
val reactorId: Int,
Expand Down
3 changes: 3 additions & 0 deletions src/main/kotlin/tools/settings/Settings.kt
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
package tools.settings

import kotlinx.serialization.Serializable

@Serializable
data class Settings(
val host: String = "127.0.0.1",
val bindHost: String = "0.0.0.0",
Expand Down
3 changes: 3 additions & 0 deletions src/main/kotlin/tools/settings/ShopDatabase.kt
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
package tools.settings

import kotlinx.serialization.Serializable

@Serializable
data class ShopDatabase(
val shopId: Int,
val npcId: Int
Expand Down
3 changes: 3 additions & 0 deletions src/main/kotlin/tools/settings/ShopItemDatabase.kt
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
package tools.settings

import kotlinx.serialization.Serializable

@Serializable
data class ShopItemDatabase(
// {"shopItemId":3355,"shopId":9999999,"itemId":1902001,"price":1,"pitch":0,"position":328},
val shopItemId: Int,
Expand Down
4 changes: 4 additions & 0 deletions src/main/kotlin/tools/settings/WZCustomLifeDatabase.kt
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
package tools.settings

import kotlinx.serialization.Serializable

//{"id":1,"dataId":9900000,"f":0,"hide":0,"fh":228,"type":"n","cy":101,"rx0":-217,"rx1":-217,"x":-217,"y":101,"mobTime":1000,"mid":100000000},
@Serializable
data class WZCustomLifeDatabase(
val id: Int,
val dataId: Int,
Expand Down
3 changes: 3 additions & 0 deletions src/main/kotlin/tools/settings/WebAPIConfig.kt
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
package tools.settings

import kotlinx.serialization.Serializable

@Serializable
data class WebAPIConfig(
val enable: Boolean = false,
val port: Int = 9090
Expand Down
3 changes: 3 additions & 0 deletions src/main/kotlin/tools/settings/WorldConfig.kt
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
package tools.settings

import kotlinx.serialization.Serializable

@Serializable
data class WorldConfig(
val flag: Int = 0,
val serverMessage: String = "",
Expand Down
3 changes: 3 additions & 0 deletions src/main/kotlin/tools/settings/WorldRates.kt
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
package tools.settings

import kotlinx.serialization.Serializable

@Serializable
data class WorldRates(
val exp: Int = 1,
val meso: Int = 1,
Expand Down
10 changes: 9 additions & 1 deletion src/main/kotlin/webapi/WebApiApplication.kt
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import io.ktor.server.netty.*
import io.ktor.server.plugins.*
import io.ktor.server.plugins.callloging.*
import io.ktor.server.plugins.contentnegotiation.*
import io.ktor.server.plugins.cors.routing.*
import io.ktor.server.plugins.statuspages.*
import io.ktor.server.request.*
import io.ktor.server.response.*
Expand All @@ -34,6 +35,13 @@ object WebApiApplication : KLoggable {
level = Level.INFO
filter { call -> call.request.path().startsWith("/") }
}
install(CORS) {
allowHost("*")
allowHeader(HttpHeaders.ContentType)
allowMethod(HttpMethod.Options)
allowMethod(HttpMethod.Post)
allowMethod(HttpMethod.Get)
}
install(ContentNegotiation) {
json(Json {
prettyPrint = true
Expand Down Expand Up @@ -74,4 +82,4 @@ object WebApiApplication : KLoggable {
}
}.start(wait = false)
}
}
}
1 change: 0 additions & 1 deletion src/main/kotlin/webapi/controller/Account.kt
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ package webapi.controller
import client.Client
import com.auth0.jwt.JWT
import com.auth0.jwt.algorithms.Algorithm
import com.beust.klaxon.JsonObject
import database.Accounts
import database.Characters
import io.ktor.http.*
Expand Down

0 comments on commit 546caa9

Please sign in to comment.