Untitled

mail@pastecode.io avatarunknown
plain_text
2 months ago
2.3 kB
3
Indexable
Never
package com.example.agricarbonuk.accessor.common;

import android.content.Context;

import com.example.agricarbonuk.BuildConfig;
import com.example.agricarbonuk.accessor.AppConstantsAccessor;
import com.example.agricarbonuk.accessor.AppOperatorLogAccessor;
import com.example.agricarbonuk.accessor.AssignmentSearchAccessor;
import com.example.agricarbonuk.accessor.UserLoginAccessor;
import com.example.agricarbonuk.auth.AuthenticationInterceptor;
import com.example.agricarbonuk.auth.TokenAuthenticator;
import com.example.agricarbonuk.common.DateUtils;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;

import okhttp3.OkHttpClient;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;

/**
 * Singleton class for Retrofit
 */
public class RetrofitInstance {


    private static Retrofit retrofit = null;
    private static Context context;
    private static String BASE_URL = BuildConfig.WEB_SERVER_BASE_URL;
    private static Gson gson = new GsonBuilder()
            .setDateFormat(DateUtils.DATE_FORMAT_ONLY_DATE)
            .registerTypeAdapter(Boolean.class, new BooleanTypeAdapter())
            .create();

    public static void initRetrofitInstance(Context context) {

        OkHttpClient client = new OkHttpClient.Builder()
                .addInterceptor(new AuthenticationInterceptor())
                .addInterceptor(new ExceptionInterceptor())
                .addInterceptor(new URLLoggerInterceptor())
                .authenticator(new TokenAuthenticator(context))
                .build();

        retrofit = new Retrofit
                .Builder()
                .baseUrl(BASE_URL)
                .client(client)
                .addConverterFactory(GsonConverterFactory.create(gson))
                .build();

    }

    public static AppOperatorLogAccessor getAppOperatorLogAccessor() {


        return retrofit.create(AppOperatorLogAccessor.class);
    }

    public static AppConstantsAccessor getAppConstantsAccessor() {


        return retrofit.create(AppConstantsAccessor.class);
    }

    public static AssignmentSearchAccessor getAssignmentSearchAccessor() {

        return retrofit.create(AssignmentSearchAccessor.class);
    }

    public static UserLoginAccessor getUserLoginAccessor() {
        return retrofit.create(UserLoginAccessor.class);
    }

}