SubwayTooter-Android-App/app/src/main/java/jp/juggler/subwaytooter/util/SimpleHttpClient.kt

61 lines
1.5 KiB
Kotlin
Raw Normal View History

2018-01-12 10:01:25 +01:00
package jp.juggler.subwaytooter.util
import android.content.Context
2018-01-12 10:01:25 +01:00
import okhttp3.*
2018-09-30 17:00:28 +02:00
import jp.juggler.subwaytooter.App1
2018-12-01 00:02:18 +01:00
import jp.juggler.util.LogCategory
2018-01-12 10:01:25 +01:00
// okhttpそのままだとモックしづらいので
// リクエストを投げてレスポンスを得る部分をインタフェースにまとめる
interface CurrentCallCallback {
fun onCallCreated(call : Call)
}
interface SimpleHttpClient {
2018-01-12 10:01:25 +01:00
var currentCallCallback : CurrentCallCallback?
fun getResponse(
request : Request,
tmpOkhttpClient : OkHttpClient? = null
) : Response
fun getWebSocket(
request : Request,
webSocketListener : WebSocketListener
) : WebSocket
2018-01-12 10:01:25 +01:00
}
class SimpleHttpClientImpl(
2018-09-30 17:00:28 +02:00
val context : Context,
private val okHttpClient : OkHttpClient
) : SimpleHttpClient {
companion object {
val log = LogCategory("SimpleHttpClientImpl")
}
2018-01-12 10:01:25 +01:00
override var currentCallCallback : CurrentCallCallback? = null
override fun getResponse(
request : Request,
tmpOkhttpClient : OkHttpClient?
) : Response {
2018-09-30 17:00:28 +02:00
App1.getAppState(context).networkTracker.checkNetworkState()
val call = (tmpOkhttpClient ?: this.okHttpClient).newCall(request)
2018-01-12 10:01:25 +01:00
currentCallCallback?.onCallCreated(call)
return call.execute()
}
override fun getWebSocket(
request : Request,
webSocketListener : WebSocketListener
) : WebSocket {
2018-09-30 17:00:28 +02:00
App1.getAppState(context).networkTracker.checkNetworkState()
return okHttpClient.newWebSocket(request, webSocketListener)
2018-01-12 10:01:25 +01:00
}
2018-01-12 10:01:25 +01:00
}