Skip to content
Snippets Groups Projects
UploadApi.java 2.34 KiB
Newer Older
package info.nightscout.api;


import java.io.IOException;
import java.util.concurrent.TimeUnit;

import okhttp3.Interceptor;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
import okhttp3.logging.HttpLoggingInterceptor;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;

public class UploadApi {
    private Retrofit retrofit;
    private GlucoseEndpoints glucoseEndpoints;
    private BolusEndpoints bolusApi;
    private DeviceEndpoints deviceEndpoints;

    public GlucoseEndpoints getGlucoseEndpoints() {
        return glucoseEndpoints;
    }

    public BolusEndpoints getBolusApi() {
        return bolusApi;
    }

    public DeviceEndpoints getDeviceEndpoints() {
        return deviceEndpoints;
    }

    public UploadApi(String baseURL, String token) {

        class AddAuthHeader implements Interceptor {

            private String token;

            public AddAuthHeader(String token) {
                this.token = token;
            }

            @Override
            public Response intercept(Interceptor.Chain chain) throws IOException {
                Request original = chain.request();

                Request.Builder requestBuilder = original.newBuilder()
                        .header("api-secret", token)
                        .method( original.method(), original.body());

                Request request = requestBuilder.build();
                return chain.proceed(request);
            }

        OkHttpClient.Builder okHttpClient = new OkHttpClient().newBuilder()
                .connectTimeout(30, TimeUnit.SECONDS)
                .readTimeout(60, TimeUnit.SECONDS)
                .writeTimeout(60, TimeUnit.SECONDS);

        okHttpClient.addInterceptor(new AddAuthHeader(token));

        HttpLoggingInterceptor logging = new HttpLoggingInterceptor();
        logging.setLevel(HttpLoggingInterceptor.Level.BODY);
        okHttpClient.addInterceptor(logging);

        retrofit = new Retrofit.Builder()
                .baseUrl(baseURL)
                .client(okHttpClient.build())
                .addConverterFactory(GsonConverterFactory.create())
                .build();

        glucoseEndpoints = retrofit.create(GlucoseEndpoints.class);
        bolusApi = retrofit.create(BolusEndpoints.class);
        deviceEndpoints = retrofit.create(DeviceEndpoints.class);

    }
}