Skip to content
This repository has been archived by the owner on Nov 29, 2021. It is now read-only.

Commit

Permalink
chore: gson を kotlinx-serialization に変更
Browse files Browse the repository at this point in the history
  • Loading branch information
sya-ri committed Apr 30, 2021
1 parent cd8bcb6 commit d86b9d2
Show file tree
Hide file tree
Showing 11 changed files with 37 additions and 19 deletions.
3 changes: 2 additions & 1 deletion build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import org.jlleitschuh.gradle.ktlint.KtlintExtension

plugins {
kotlin("jvm") version "1.5.0"
kotlin("plugin.serialization") version "1.5.0"
id("com.github.johnrengelman.shadow") version "7.0.0"
id("org.jlleitschuh.gradle.ktlint") version "10.0.0"
id("com.github.ben-manes.versions") version "0.38.0"
Expand All @@ -27,7 +28,7 @@ dependencies {
implementation("io.ktor:ktor-auth:1.5.3")
implementation("io.ktor:ktor-server-netty:1.5.3")
implementation("io.ktor:ktor-server-sessions:1.5.3")
implementation("io.ktor:ktor-gson:1.5.3")
implementation("io.ktor:ktor-serialization:1.5.3")
implementation(project(":flowerkt:core"))
implementation(project(":flowerkt:database-exposed-sqlite"))
implementation(project(":flowerkt:file-webdav"))
Expand Down
4 changes: 2 additions & 2 deletions src/main/kotlin/com/kokasai/api/KokasaiApiImpl.kt
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import com.kokasai.api.configure.configureAuthCookie
import com.kokasai.api.configure.configureCORS
import com.kokasai.api.configure.configureCallLogging
import com.kokasai.api.configure.configureFormAuth
import com.kokasai.api.configure.configureGson
import com.kokasai.api.configure.configureSerialization
import com.kokasai.api.configure.configureSessionAuth
import com.kokasai.api.configure.configureStatusPages
import com.kokasai.api.http.HttpRoute
Expand Down Expand Up @@ -58,7 +58,7 @@ class KokasaiApiImpl : KokasaiApi, UseFileWebDav, UseMailSendGrid {
configureCORS()
}
install(ContentNegotiation) {
configureGson()
configureSerialization()
}
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package com.kokasai.api.configure

import io.ktor.features.ContentNegotiation
import io.ktor.gson.gson
import io.ktor.serialization.json

fun ContentNegotiation.Configuration.configureGson() {
gson()
fun ContentNegotiation.Configuration.configureSerialization() {
json()
}
15 changes: 9 additions & 6 deletions src/main/kotlin/com/kokasai/api/group/GroupFile.kt
Original file line number Diff line number Diff line change
@@ -1,23 +1,26 @@
package com.kokasai.api.group

import com.google.gson.Gson
import kotlinx.serialization.Serializable
import kotlinx.serialization.decodeFromString
import kotlinx.serialization.encodeToString
import kotlinx.serialization.json.Json
import java.io.File

@Serializable
data class GroupFile(
var owner: List<String> = listOf(),
var member: List<String> = listOf(),
var document: List<String> = listOf()
var document: List<String> = listOf(),
var form: List<String> = listOf()
) {
override fun toString(): String = gson.toJson(this)
override fun toString(): String = Json.encodeToString(this)

fun toFile(): File = File.createTempFile("tmp", ".json").apply {
writeBytes(this@GroupFile.toString().toByteArray())
}

companion object {
private val gson = Gson()

private fun from(json: String): GroupFile? = gson.fromJson(json, GroupFile::class.java)
private fun from(json: String): GroupFile? = Json.decodeFromString(json)

fun from(json: File) = from(json.readText())
}
Expand Down
2 changes: 2 additions & 0 deletions src/main/kotlin/com/kokasai/api/http/auth.kt
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,9 @@ import io.ktor.routing.post
import io.ktor.sessions.get
import io.ktor.sessions.sessionId
import io.ktor.sessions.sessions
import kotlinx.serialization.Serializable

@Serializable
data class AuthResponse(val auth: String?)

val auth: RouteAction = {
Expand Down
4 changes: 4 additions & 0 deletions src/main/kotlin/com/kokasai/api/http/group/document/list.kt
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,12 @@ import io.ktor.routing.get
import io.ktor.routing.post
import io.ktor.sessions.get
import io.ktor.sessions.sessions
import kotlinx.serialization.Serializable

@Serializable
data class ListRequest(val document: List<String>)

@Serializable
data class ListResponse(val document: List<String>)

val list: RouteAction = {
Expand Down
2 changes: 2 additions & 0 deletions src/main/kotlin/com/kokasai/api/http/login.kt
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,9 @@ import io.ktor.request.ContentTransformationException
import io.ktor.request.receive
import io.ktor.response.respond
import io.ktor.routing.post
import kotlinx.serialization.Serializable

@Serializable
data class LoginRequest(val id: String)

val login: RouteAction = {
Expand Down
2 changes: 2 additions & 0 deletions src/main/kotlin/com/kokasai/api/http/user/document/list.kt
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,9 @@ import io.ktor.response.respond
import io.ktor.routing.get
import io.ktor.sessions.get
import io.ktor.sessions.sessions
import kotlinx.serialization.Serializable

@Serializable
data class ListResponse(val document: List<String>)

val list: RouteAction = {
Expand Down
2 changes: 2 additions & 0 deletions src/main/kotlin/com/kokasai/api/http/user/group/list.kt
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,9 @@ import io.ktor.response.respond
import io.ktor.routing.get
import io.ktor.sessions.get
import io.ktor.sessions.sessions
import kotlinx.serialization.Serializable

@Serializable
data class ListResponse(val group: List<String>)

val list: RouteAction = {
Expand Down
12 changes: 7 additions & 5 deletions src/main/kotlin/com/kokasai/api/user/UserFile.kt
Original file line number Diff line number Diff line change
@@ -1,26 +1,28 @@
package com.kokasai.api.user

import com.google.gson.Gson
import com.kokasai.api.group.Group
import kotlinx.serialization.Serializable
import kotlinx.serialization.decodeFromString
import kotlinx.serialization.encodeToString
import kotlinx.serialization.json.Json
import java.io.File

@Serializable
data class UserFile(
val group: MutableList<String> = mutableListOf()
) {
suspend fun getGroup() = group.map { Group.get(it) }

suspend fun getDocument() = getGroup().map { it.file.document }.flatten()

override fun toString(): String = gson.toJson(this)
override fun toString(): String = Json.encodeToString(this)

fun toFile(): File = File.createTempFile("tmp", ".json").apply {
writeBytes(this@UserFile.toString().toByteArray())
}

companion object {
private val gson = Gson()

private fun from(json: String): UserFile? = gson.fromJson(json, UserFile::class.java)
private fun from(json: String): UserFile? = Json.decodeFromString(json)

fun from(json: File) = from(json.readText())
}
Expand Down
4 changes: 2 additions & 2 deletions src/test/kotlin/com/kokasai/api/local/KokasaiApiImpl.kt
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import com.kokasai.api.configure.configureAuthCookie
import com.kokasai.api.configure.configureCORS
import com.kokasai.api.configure.configureCallLogging
import com.kokasai.api.configure.configureFormAuth
import com.kokasai.api.configure.configureGson
import com.kokasai.api.configure.configureSerialization
import com.kokasai.api.configure.configureSessionAuth
import com.kokasai.api.configure.configureStatusPages
import com.kokasai.api.http.HttpRoute
Expand Down Expand Up @@ -58,7 +58,7 @@ class KokasaiApiImpl : KokasaiApi {
configureCORS()
}
install(ContentNegotiation) {
configureGson()
configureSerialization()
}
}
}
Expand Down

0 comments on commit d86b9d2

Please sign in to comment.