package com.bgycc.smartcanteen.api;

import com.bgycc.smartcanteen.BuildConfig;

import java.util.concurrent.TimeUnit;

import okhttp3.OkHttpClient;
import okhttp3.logging.HttpLoggingInterceptor;
import retrofit2.Retrofit;
import retrofit2.converter.scalars.ScalarsConverterFactory;

/**
 * 目前以下实例都不使用单例(因为相关操作频率都非常低)
 */
public class SCRetrofit {
    private static final long TIMEOUT = 10;

    public static SCApi createApi(OkHttpClient client) {
        Retrofit retrofit = createRetrofit(client);
        return retrofit.create(SCApi.class);
    }

    public static OkHttpClient.Builder createOkHttpClientBuilder() {
        OkHttpClient.Builder builder = new OkHttpClient.Builder()
                .connectTimeout(TIMEOUT, TimeUnit.SECONDS)
                .readTimeout(TIMEOUT, TimeUnit.SECONDS)
                .writeTimeout(TIMEOUT, TimeUnit.SECONDS);

        if (BuildConfig.DEBUG) {
            HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
            interceptor.setLevel(HttpLoggingInterceptor.Level.BASIC);
            builder.addInterceptor(interceptor);
        }
        return builder;
    }

    private static Retrofit createRetrofit(OkHttpClient client) {
        return new Retrofit.Builder()
                .client(client)
                .baseUrl(BuildConfig.MainHttpServerHost)
                .addConverterFactory(ScalarsConverterFactory.create())
                .build();
    }
}