package com.eveningoutpost.dexdrip.UtilityModels; import android.util.Log; import com.eveningoutpost.dexdrip.Interfaces.BgReadingInterface; import com.eveningoutpost.dexdrip.Interfaces.CalibrationInterface; import com.eveningoutpost.dexdrip.Interfaces.SensorInterface; import com.eveningoutpost.dexdrip.Models.BgReading; import com.eveningoutpost.dexdrip.Models.Calibration; import com.eveningoutpost.dexdrip.Sensor; import com.eveningoutpost.dexdrip.Models.User; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.internal.bind.DateTypeAdapter; import java.util.Date; import retrofit.Callback; import retrofit.RequestInterceptor; import retrofit.RestAdapter; import retrofit.RetrofitError; import retrofit.client.Response; import retrofit.converter.GsonConverter; /** * Created by stephenblack on 11/6/14. */ public class RestCalls { private static final String baseUrl = "http://10.0.2.2:3000"; public static Gson gson = new GsonBuilder() .excludeFieldsWithoutExposeAnnotation() .registerTypeAdapter(Date.class, new DateTypeAdapter()) .create(); public static void sendBgReading(final BgSendQueue bgSendQueue) { User user = User.currentUser(); bgReadingInterface().createReading(user.uuid, bgSendQueue.bgReading, new Callback<Gson>() { @Override public void success(Gson gsonResponse, Response response) { bgSendQueue.success = true; bgSendQueue.save(); BgReading bgReading = bgSendQueue.bgReading; bgReading.synced = true; bgReading.save(); } @Override public void failure(RetrofitError error) { Response response = error.getResponse(); Log.w("REST CALL ERROR:", "****************"); Log.w("REST CALL STATUS:", "" + response.getStatus()); Log.w("REST CALL REASON:", response.getReason()); } } ); } public static void updateBgReading(final BgSendQueue bgSendQueue) { User user = User.currentUser(); bgReadingInterface().updateReading(user.uuid, bgSendQueue.bgReading.uuid, bgSendQueue.bgReading, new Callback<Gson>() { @Override public void success(Gson gsonResponse, Response response) { Log.w("REST CALL Update Success!:", "****************"); bgSendQueue.success = true; bgSendQueue.save(); } @Override public void failure(RetrofitError error) { Response response = error.getResponse(); Log.w("REST CALL ERROR:", "****************"); Log.w("REST CALL STATUS:", "" + response.getStatus()); Log.w("REST CALL REASON:", response.getReason()); } } ); } public static void sendCalibration(final CalibrationSendQueue calibrationSendQueue) { User user = User.currentUser(); calibrationInterface().createCalibration(user.uuid, calibrationSendQueue.calibration, new Callback<Gson>() { @Override public void success(Gson gsonResponse, Response response) { calibrationSendQueue.success = true; calibrationSendQueue.save(); Calibration calibration = calibrationSendQueue.calibration; calibration.save(); } @Override public void failure(RetrofitError error) { Response response = error.getResponse(); Log.w("REST CALL ERROR:", "****************"); Log.w("REST CALL STATUS:", "" + response.getStatus()); Log.w("REST CALL REASON:", response.getReason()); } } ); } public static void sendSensor(final SensorSendQueue sensorSendQueue) { User user = User.currentUser(); sensorInterface().createSensor(user.uuid, sensorSendQueue.sensor, new Callback<Gson>() { @Override public void success(Gson gsonResponse, Response response) { sensorSendQueue.success = true; sensorSendQueue.save(); Sensor sensor = sensorSendQueue.sensor; sensor.save(); } @Override public void failure(RetrofitError error) { Response response = error.getResponse(); Log.w("REST CALL ERROR:", "****************"); Log.w("REST CALL STATUS:", "" + response.getStatus()); Log.w("REST CALL REASON:", response.getReason()); } } ); } public static BgReadingInterface bgReadingInterface() { RestAdapter adapter = adapterBuilder().build(); BgReadingInterface bgReadingInterface = adapter.create(BgReadingInterface.class); return bgReadingInterface; } public static SensorInterface sensorInterface() { RestAdapter adapter = adapterBuilder().build(); SensorInterface sensorInterface = adapter.create(SensorInterface.class); return sensorInterface; } public static CalibrationInterface calibrationInterface() { RestAdapter adapter = adapterBuilder().build(); CalibrationInterface calibrationInterface = adapter.create(CalibrationInterface.class); return calibrationInterface; } public static RestAdapter.Builder adapterBuilder() { RestAdapter.Builder adapterBuilder = new RestAdapter.Builder(); adapterBuilder .setEndpoint(baseUrl) .setConverter(new GsonConverter(gson)) .setRequestInterceptor(requestInterceptor()); return adapterBuilder; } public static RequestInterceptor requestInterceptor(){ RequestInterceptor requestInterceptor = new RequestInterceptor() { User currentUser = User.currentUser(); @Override public void intercept(RequestFacade request) { request.addHeader("email", currentUser.email); request.addHeader("token", currentUser.token); } }; return requestInterceptor; } }