Skip to content

Commit 8ff1c94

Browse files
committed
feat: add read from json file
1 parent 1d9190f commit 8ff1c94

File tree

5 files changed

+49
-19
lines changed

5 files changed

+49
-19
lines changed

app/src/main/java/com/nphausg/app/embeddedserver/EmbeddedServer.kt

Lines changed: 7 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -7,29 +7,20 @@
77
package com.nphausg.app.embeddedserver
88

99
import android.os.Build
10-
import com.nphausg.app.embeddedserver.data.BaseResponse
1110
import com.nphausg.app.embeddedserver.data.Database
1211
import com.nphausg.app.embeddedserver.data.models.Cart
12+
import com.nphausg.app.embeddedserver.utils.FileUtils
1313
import com.nphausg.app.embeddedserver.utils.NetworkUtils
1414
import io.ktor.http.ContentDisposition
15-
import io.ktor.http.ContentDisposition.Companion.File
1615
import io.ktor.http.ContentType
1716
import io.ktor.http.HttpHeaders
1817
import io.ktor.http.HttpStatusCode
19-
import io.ktor.http.HttpStatusCode.Companion.PartialContent
2018
import io.ktor.serialization.kotlinx.json.json
2119
import io.ktor.server.application.ApplicationCall
2220
import io.ktor.server.application.call
2321
import io.ktor.server.application.install
2422
import io.ktor.server.engine.embeddedServer
25-
import io.ktor.server.http.content.defaultResource
26-
import io.ktor.server.http.content.resource
27-
import io.ktor.server.http.content.resources
28-
import io.ktor.server.http.content.static
29-
import io.ktor.server.http.content.staticFiles
3023
import io.ktor.server.http.content.staticResources
31-
import kotlinx.serialization.json.Json
32-
import kotlinx.serialization.encodeToString
3324
import io.ktor.server.netty.Netty
3425
import io.ktor.server.plugins.contentnegotiation.ContentNegotiation
3526
import io.ktor.server.plugins.cors.routing.CORS
@@ -42,6 +33,8 @@ import io.ktor.server.routing.routing
4233
import kotlinx.coroutines.CoroutineScope
4334
import kotlinx.coroutines.Dispatchers
4435
import kotlinx.coroutines.launch
36+
import kotlinx.serialization.encodeToString
37+
import kotlinx.serialization.json.Json
4538
import java.io.File
4639

4740
object EmbeddedServer {
@@ -64,16 +57,16 @@ object EmbeddedServer {
6457
}
6558
routing {
6659
// staticResources
67-
staticResources("/static", ""){
60+
staticResources("/static", "") {
6861
default("index.html")
6962
}
7063
get("/") {
7164
okText(call, "Hello!! You are here in ${Build.MODEL}")
7265
}
7366
get("/fruits") {
74-
okText(call, Json.encodeToString(BaseResponse(Cart.sample()).also {
75-
println(it.data)
76-
}))
67+
okText(call, FileUtils.readText("data.json").also {
68+
Database.FRUITS.addAll(FileUtils.decode<Cart>(it).items)
69+
})
7770
}
7871
get("/fruits/{id}") {
7972
val id = call.parameters["id"]

app/src/main/java/com/nphausg/app/embeddedserver/activities/MainActivity.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,8 @@ import androidx.compose.ui.unit.dp
6161
import androidx.core.splashscreen.SplashScreen.Companion.installSplashScreen
6262
import com.nphausg.app.embeddedserver.EmbeddedServer
6363
import com.nphausg.app.embeddedserver.R
64+
import com.nphausg.app.embeddedserver.data.models.Cart
65+
import com.nphausg.app.embeddedserver.utils.FileUtils
6466
import com.nphausg.app.ui.ImsApp
6567
import com.nphausg.app.ui.components.theme.ImsTheme
6668
import com.nphausg.app.ui.components.ThemePreviews

app/src/main/java/com/nphausg/app/embeddedserver/data/Database.kt

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,6 @@ import java.util.UUID
1111

1212
object Database {
1313

14-
val FRUITS = listOf(
15-
Fruit(UUID.randomUUID().toString(), "Cucumbers 🥒"),
16-
Fruit(UUID.randomUUID().toString(), "Tomatoes 🍅"),
17-
Fruit(UUID.randomUUID().toString(), "Orange Juice 🍊")
18-
)
14+
val FRUITS = mutableListOf<Fruit>()
1915

2016
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
/*
2+
* Created by nphau on 4/13/24, 11:46 AM
3+
* Copyright (c) 2024 . All rights reserved.
4+
* Last modified 4/13/24, 11:46 AM
5+
*/
6+
7+
package com.nphausg.app.embeddedserver.utils
8+
9+
import kotlinx.serialization.json.Json
10+
11+
object FileUtils {
12+
fun readText(path: String): String =
13+
this::class.java.classLoader?.getResource(path)?.readText().orEmpty()
14+
15+
inline fun <reified T> decode(json: String): T =
16+
Json.decodeFromString<T>(json)
17+
18+
inline fun <reified T> readJson(path: String): T =
19+
decode(readText(path))
20+
}
21+
22+

app/src/main/resources/data.json

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
{
2+
"id": "8fc012d9-ad1d-4519-a339-578cf803d509",
3+
"items": [
4+
{
5+
"id": "8fc012d9-ad1d-4519-a339-578cf803d509",
6+
"name": "Cucumbers \uD83E\uDD52"
7+
},
8+
{
9+
"id": "594b8138-ffc5-41cc-b399-a6a699506a73",
10+
"name": "Tomatoes \uD83C\uDF45"
11+
},
12+
{
13+
"id": "743f4a4d-6a36-4db3-a6d9-5f189943fae5",
14+
"name": "Tomatoes \uD83C\uDF45"
15+
}
16+
]
17+
}

0 commit comments

Comments
 (0)