Newer
Older
LeftoverRecipe / app / src / main / kotlin / org / ntlab / leftoverrecipe / api / detailrecipe / DetailApiClient.kt
MatsumotoKeiju on 9 Jul 2017 2 KB [add] LeftoverRecipe Project
package org.ntlab.leftoverrecipe.api.recipe

import io.reactivex.Observer
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.disposables.Disposable
import io.reactivex.schedulers.Schedulers
import org.ntlab.leftoverrecipe.api.Api
import org.ntlab.leftoverrecipe.model.RxBus
import org.ntlab.leftoverrecipe.viewmodel.SearchViewModel

/**
 * Created by matsumoto_k on 2017/05/20.
 */
object DetailApiClient : Api() {
    override var endPoint: String = "http://nitta-lab-www2.is.konan-u.ac.jp:8080/"
    var connection = false

    fun getRecipeData(recipeUrl: String) {
        if (connection)
            return
        val recipeService = getClient().create(DetailService::class.java).getRecipe(recipeUrl = recipeUrl)
        RxBus.send(SearchViewModel.StartRecipeApi)
        connection = true
        recipeService.subscribeOn(Schedulers.newThread())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(
                        object : Observer<DetailApiResponse> {
                            override fun onComplete() {
                                println("onComplete")
                                connection = false
                            }

                            override fun onSubscribe(d: Disposable) {
                                println("onSubscribe")
                            }

                            override fun onNext(response: DetailApiResponse) {
                                println("onNext")
                                println("Success")
                                if (response != null) {
                                    RxBus.send(response)
                                }
                            }

                            override fun onError(e: Throwable) {
                                println("onError")
                                connection = false
                                println(e.message)
                                RxBus.send(SearchViewModel.ErrorRecipeApi)
                            }
                        })
    }
}