Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Api(private val context: Context) {
- private val builder: Retrofit.Builder
- private val logging = HttpLoggingInterceptor()
- private val httpClient = OkHttpClient.Builder()
- init {
- val gson = GsonBuilder().setLenient().create()
- builder = Retrofit.Builder()
- .baseUrl("http://192.168.113.109:8080")
- .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
- .addConverterFactory(GsonConverterFactory.create(gson))
- logging.level = HttpLoggingInterceptor.Level.BODY
- httpClient.addInterceptor(logging)
- }
- fun <S> createService(serviceClass: Class<S>): S {
- return createService(serviceClass, null)
- }
- fun <S> createService(serviceClass: Class<S>, authToken: String?): S {
- val retrofit: Retrofit
- if (!TextUtils.isEmpty(authToken)) {
- val interceptor = AuthorizationInterceptor(authToken!!)
- if (!httpClient.interceptors().contains(interceptor)) {
- httpClient.addInterceptor(RefleshTokenInterception(context))
- httpClient.addInterceptor(interceptor)
- }
- } else {
- httpClient.addInterceptor(AuthenticatorInterception(context))
- }
- httpClient.addInterceptor(object : NetworkConnectionInterceptor() {
- override fun isInternetAvailable(): Boolean {
- val connectivityManager = context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
- val netInfo = connectivityManager.activeNetworkInfo
- return netInfo != null && netInfo.isConnected
- }
- override fun onInternetUnavailable() {
- }
- })
- httpClient.connectTimeout(100, TimeUnit.SECONDS)
- .readTimeout(100, TimeUnit.SECONDS)
- .writeTimeout(100, TimeUnit.SECONDS)
- builder.client(httpClient.build())
- retrofit = builder.build()
- return retrofit.create(serviceClass)
- }
- fun produtoService(): ProdutoService {
- val tokenPreference = AccessTokenPreference(context)
- return createService(ProdutoService::class.java, tokenPreference.getToken())
- }
- fun clienteService(): ClienteService {
- val tokenPreference = AccessTokenPreference(context)
- return createService(ClienteService::class.java, tokenPreference.getToken())
- }
- fun municipioService() :MunicipioService {
- val tokenPreference = AccessTokenPreference(context)
- return createService(MunicipioService::class.java, tokenPreference.getToken())
- }
- fun segurancaService(): TokenService {
- return createService(TokenService::class.java)
- }
- fun login(usuario: String, senha: String): Observable<AccessToken> {
- return segurancaService().getAccessToken(
- userName = usuario,
- password = senha
- )
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement