Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

0
respostas

[Sugestão] [Reclamação]

Olá, não estava conseguindo avançar dado que precisei fazer uma refatoração por conta do consumo da API, por isso ajustei o código da main de uma mandeira que eu pudesse avançar apenas com o if tratando, não sei se lá pra frente gerará grandes impactos, mas gostaria de deixar minha contribuição e quem puder sugerir algo mais elaborado, sinta-se à vontade.

Na classe ConsumoApi na funcao buscaJogo:

fun buscajogo(id: String): InfoJogo {
        val client: HttpClient = HttpClient.newHttpClient()
        val request = HttpRequest.newBuilder()
            .uri(URI.create("https://www.cheapshark.com/api/1.0/games?id=$id"))
            .build()
        val response = client
            .send(request, BodyHandlers.ofString())

        val json = response.body()
        val gson = Gson()
        var meuInfoJogo: InfoJogo = InfoJogo(InfoApiShark("", ""))

        val resultadoMeuInfoJogo = runCatching {
            meuInfoJogo = gson.fromJson(json, InfoJogo::class.java)
        }
        resultadoMeuInfoJogo.onFailure {
            println("Retorno Inválido. Tente outro id.")
        }
        resultadoMeuInfoJogo.onSuccess {
            println("Meu infojogo criado com sucesso!")


        }
        return meuInfoJogo
    }

na main:

var meuJogo: Jogo? = null
    val buscaApi = ConsumoApi();
    val informacaoJogo = buscaApi.buscajogo(busca)

    // println(informacaoJogo)

    if(informacaoJogo.info.title != "" && informacaoJogo.info.thumb != "") {
    // println("Aqui conseguiremos criar o jogo")
        meuJogo = Jogo(
            informacaoJogo.info.title,
            informacaoJogo.info.thumb
        )
        println("Deseja inserir uma descrição personalizada? S/N")
        val opcao = leitura.nextLine()
        if (opcao.equals("s",true)) {
            println("Insira a descrição personalizada para o jogo:")

            val descricao = leitura.nextLine()
            println("sua descrição: $descricao")
            meuJogo.descricao = descricao
        } else {
            meuJogo?.descricao = informacaoJogo.info.title
            println(meuJogo?.descricao.toString())
        }

    } else {
        println("Jogo não encontrado, tente novamente")
    }

está foi a forma como que consegui avançar, espero que ajude e alguém contribua para a melhoria do código.