Можно ли вызвать службу на другой сервис? - PullRequest
0 голосов
/ 22 апреля 2020

Я хочу получить список объектов с заголовком, text1, text2 и URL-адресом изображения. Чтобы иметь эти элементы, мне нужны две службы. Первый сервис, дайте мне 10 Titles и 10 CallLetters, и мне нужен каждый из callLetters для вызова второго сервиса (запрос должен отправить имя callLetter в URL второго сервиса). Я использую дооснащение для запроса услуг. Итак, возможно ли вызвать службу в другой службе? То есть внутри запроса 1 можно запросить услугу 2?

class ChannelListRepository {
    companion object {
        val sharedInstance = ChannelListRepository()
    }

    val televisionProgramCovers: TelevisionProgramCovers = TelevisionProgramCovers()

     fun getFristTenChannels(onListed : (List<Channels>) -> Unit, onFinnish : (Boolean) -> Unit) {
        val auxList = ArrayList<Channels>()
        var list = ArrayList<Channels>()
        var i = 0

        val retrofitClient = NetworkUtils.getRetrofitInstance("http://ott.online.meo.pt/")
        val endpoint = retrofitClient.create(Endpoint::class.java)
        val callGetChannels = endpoint.getChannels()

        callGetChannels.enqueue(object : Callback<SerializeChannels?> {
            override fun onResponse(call: Call<SerializeChannels?>, response: Response<SerializeChannels?>) {
                response.body().let {
                    while (i < 10) {
                        val title = it?.value?.get(i)?.Title
                        val callLetter = it?.value?.get(i)?.CallLetter
                        val urlImage = televisionProgramCovers.getCover(title, callLetter)

                        doAsync {
                            val newCallLetter = "CallLetter eq '" + callLetter + "'"
                            getProgramsNowAndNext(newCallLetter)
                        }

                        auxList.add(Channels(title, callLetter, urlImage, "listNowNext?.get(0)", "listNowNext?.get(1)"))
                        i++
                    }
                }
                list = auxList
                onListed(list)
                onFinnish(true)
            }

            override fun onFailure(call: Call<SerializeChannels?>?, t: Throwable?) {
                Log.e("onFailure error", t?.message)
                //dizer que o download não foi feito
                onListed(emptyList())
                onFinnish(false)
            }
        })
    }

    fun getProgramsNowAndNext(callLetter : String?){
        val retrofitClient = NetworkUtils.getRetrofitInstance("http://ott.online.meo.pt/")
        val endpoint = retrofitClient.create(Endpoint::class.java)
        val callGetNowNext = endpoint.getEPGNowNext(callLetter, "StartDate asc")

        //val list : MutableList<String?>? = null
        callGetNowNext?.enqueue(object : Callback<SerializeNowAndNext?> {
            override fun onResponse(call: Call<SerializeNowAndNext?>, response: Response<SerializeNowAndNext?>) {
                response.body().let {
                    val now = it?.value?.get(0)?.Title
                    val next = it?.value?.get(1)?.Title
                }
            }

            override fun onFailure(call: Call<SerializeNowAndNext?>, t: Throwable) {
                Log.e("onFailure error", t?.message)
            }
        })
    }
}
...