| | |
| | | package cn.flightfeather.thirdapp.common.net |
| | | |
| | | import cn.flightfeather.thirdapp.BuildConfig |
| | | import cn.flightfeather.thirdapp.CommonApplication |
| | | import com.google.gson.GsonBuilder |
| | | import io.reactivex.Observable |
| | | import io.reactivex.android.schedulers.AndroidSchedulers |
| | | import io.reactivex.schedulers.Schedulers |
| | | import okhttp3.Interceptor |
| | | import okhttp3.OkHttpClient |
| | | import retrofit2.Response |
| | | import retrofit2.Retrofit |
| | | import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory |
| | | import retrofit2.converter.gson.GsonConverterFactory |
| | | import java.util.concurrent.TimeUnit |
| | | |
| | | /** |
| | | * @author riku |
| | | * Date: 2019/7/22 |
| | | * 网络请求 |
| | | */ |
| | | class RetrofitFactory constructor(application: CommonApplication){ |
| | | class RetrofitFactory constructor(val application: CommonApplication){ |
| | | |
| | | val retrofit: Retrofit = application.retrofit |
| | | val retrofitImage: Retrofit = application.retrofitImage |
| | | |
| | | private fun newOkHttpClient(list: List<Interceptor>): OkHttpClient = |
| | | OkHttpClient.Builder() |
| | | .connectTimeout(20 * 1000L, TimeUnit.MILLISECONDS) |
| | | .apply { |
| | | list.forEach { |
| | | addInterceptor(it) |
| | | } |
| | | } |
| | | .build() |
| | | |
| | | private fun newRetrofit(mOkHttpClient: OkHttpClient): Retrofit = |
| | | Retrofit.Builder() |
| | | .apply { |
| | | baseUrl(application.ROOT_URL_RELEASE) |
| | | } |
| | | .addConverterFactory( |
| | | GsonConverterFactory.create( |
| | | GsonBuilder() |
| | | .setDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ") |
| | | .create() |
| | | ) |
| | | ) |
| | | .addCallAdapterFactory(RxJava2CallAdapterFactory.create()) |
| | | .client(mOkHttpClient) |
| | | .build() |
| | | |
| | | companion object { |
| | | |
| | |
| | | .observeOn(AndroidSchedulers.mainThread()) |
| | | .subscribe(subscriber) |
| | | } |
| | | |
| | | fun withProgressListeningRetrofit(listener: NetWorkProgressListener?): Retrofit { |
| | | return if (listener == null) { |
| | | instance.retrofit |
| | | } else { |
| | | val c = instance.newOkHttpClient(listOf(NetWorkProgressInterceptor(listener))) |
| | | instance.newRetrofit(c) |
| | | } |
| | | } |
| | | } |
| | | } |