From 46d471a927953eb981cca61726eb853dc65f11e2 Mon Sep 17 00:00:00 2001 From: Matte23 Date: Wed, 2 Sep 2020 21:01:15 +0200 Subject: [PATCH] Replace Gson with Moshi --- app/build.gradle | 3 ++- .../underdesk/circolapp/server/DataFetcher.kt | 18 ++++++++++-------- .../underdesk/circolapp/server/pojo/Content.kt | 5 ++++- .../circolapp/server/pojo/Response.kt | 5 ++++- 4 files changed, 20 insertions(+), 11 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 290b6ac..3569f0b 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -55,6 +55,7 @@ dependencies { androidTestImplementation 'androidx.test:runner:1.3.0' androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0' implementation 'com.squareup.okhttp3:okhttp:4.8.1' - implementation 'com.google.code.gson:gson:2.8.6' + implementation 'com.squareup.moshi:moshi:1.9.3' + kapt 'com.squareup.moshi:moshi-kotlin-codegen:1.9.3' implementation 'org.jsoup:jsoup:1.13.1' } diff --git a/app/src/main/java/net/underdesk/circolapp/server/DataFetcher.kt b/app/src/main/java/net/underdesk/circolapp/server/DataFetcher.kt index e8a1178..1973231 100644 --- a/app/src/main/java/net/underdesk/circolapp/server/DataFetcher.kt +++ b/app/src/main/java/net/underdesk/circolapp/server/DataFetcher.kt @@ -18,7 +18,7 @@ package net.underdesk.circolapp.server -import com.google.gson.Gson +import com.squareup.moshi.Moshi import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext import net.underdesk.circolapp.data.Circular @@ -32,16 +32,17 @@ class DataFetcher { companion object { const val ENDPOINT_URL = "https://www.curiepinerolo.edu.it/wp-json/wp/v2/pages/5958" - val gson = Gson() - val client = OkHttpClient() + private val moshi = Moshi.Builder().build() + private val responseAdapter = moshi.adapter(Response::class.java) + private val client = OkHttpClient() } @Throws(IOException::class) suspend fun getCircularsFromServer(): List { return withContext(Dispatchers.Default) { - val json = gson.fromJson(retrieveDataFromServer(), Response::class.java) + val json = retrieveDataFromServer() - val document = Jsoup.parseBodyFragment(json.content!!.rendered) + val document = Jsoup.parseBodyFragment(json.content.rendered) val htmlList = document.getElementsByTag("ul")[0].getElementsByTag("a") val list = ArrayList() @@ -54,13 +55,12 @@ class DataFetcher { list.add(Circular.generateFromString(element.text(), element.attr("href"))) } } - list } } @Throws(IOException::class) - private suspend fun retrieveDataFromServer(): String? { + private suspend fun retrieveDataFromServer(): Response { val request = Request.Builder() .url(ENDPOINT_URL) .build() @@ -72,7 +72,9 @@ class DataFetcher { throw IOException("HTTP error code: ${response.code})") } - response.body?.string() + responseAdapter.fromJson( + response.body!!.string() + )!! } } } \ No newline at end of file diff --git a/app/src/main/java/net/underdesk/circolapp/server/pojo/Content.kt b/app/src/main/java/net/underdesk/circolapp/server/pojo/Content.kt index ee4a6f1..1d14914 100644 --- a/app/src/main/java/net/underdesk/circolapp/server/pojo/Content.kt +++ b/app/src/main/java/net/underdesk/circolapp/server/pojo/Content.kt @@ -1,5 +1,8 @@ package net.underdesk.circolapp.server.pojo +import com.squareup.moshi.JsonClass + +@JsonClass(generateAdapter = true) data class Content( - val rendered: String? = null + val rendered: String ) diff --git a/app/src/main/java/net/underdesk/circolapp/server/pojo/Response.kt b/app/src/main/java/net/underdesk/circolapp/server/pojo/Response.kt index c9f0c59..c42c418 100644 --- a/app/src/main/java/net/underdesk/circolapp/server/pojo/Response.kt +++ b/app/src/main/java/net/underdesk/circolapp/server/pojo/Response.kt @@ -1,5 +1,8 @@ package net.underdesk.circolapp.server.pojo +import com.squareup.moshi.JsonClass + +@JsonClass(generateAdapter = true) data class Response( - val content: Content? = null + val content: Content )