O código da aula resolvido, más gostaria de saber se tem um jeito mais fácil ou alguma melhoria no mesmo!
package org.example
import com.google.gson.Gson
import com.google.gson.JsonParser
import java.net.URI
import java.net.http.HttpClient
import java.net.http.HttpRequest
import java.net.http.HttpResponse.BodyHandlers
import java.util.*
fun main() {
val leitura = Scanner(System.`in`)
println("Insira o número do jogo que deseja buscar.")
val idJogo = leitura.nextLine()
val url = "https://www.cheapshark.com/api/1.0/games?id=$idJogo"
val client: HttpClient = HttpClient.newHttpClient()
val request = HttpRequest.newBuilder()
.uri(URI.create(url))
.build()
val response = client
.send(request, BodyHandlers.ofString())
val json = response.body()
val gson = Gson()
val elementoJson = JsonParser.parseString(json)
var meuInfoJogo:InfoJogo? = null
val resultadoGson = runCatching {
meuInfoJogo = gson.fromJson(elementoJson, InfoJogo::class.java)
}
resultadoGson.onFailure {
println("Erro no tipo da resposta")
System.exit(1)
}
var meuJogo:Jogo? = null
val resultadoJogo = runCatching {
meuJogo = meuInfoJogo?.info?.let {
Jogo(
it.title,
it.thumb)
}
}
resultadoJogo.onFailure {
println("Jogo inexistente. Tente outro id")
}
resultadoJogo.onSuccess {
println("Você deseja escrever uma descrição personalizada? S/N")
val opcao = leitura.nextLine()
if (opcao.equals("s", true)) {
println("Dê sua descrição ao jogo ${meuJogo?.titulo}\n")
val descricaoPersonalizada = leitura.nextLine()
meuJogo?.descricao = descricaoPersonalizada
} else {
meuJogo?.descricao = meuJogo?.titulo
}
println(meuJogo)
}
}