diff --git a/app/src/main/java/info/nightscout/android/upload/nightscout/NightscoutUploadIntentService.java b/app/src/main/java/info/nightscout/android/upload/nightscout/NightscoutUploadIntentService.java index ee134cb0fab61eadf800894443fc6afe092cf6ab..75bfb3e869ac2de32c037b504c3f83e9ce4ae513 100644 --- a/app/src/main/java/info/nightscout/android/upload/nightscout/NightscoutUploadIntentService.java +++ b/app/src/main/java/info/nightscout/android/upload/nightscout/NightscoutUploadIntentService.java @@ -30,6 +30,7 @@ import java.util.regex.Pattern; import info.nightscout.android.R; import info.nightscout.android.medtronic.MainActivity; +import info.nightscout.android.medtronic.service.MedtronicCnlIntentService; import info.nightscout.android.model.medtronicNg.PumpStatusEvent; import info.nightscout.android.upload.nightscout.serializer.EntriesSerializer; import io.realm.Realm; @@ -74,18 +75,22 @@ public class NightscoutUploadIntentService extends IntentService { .notEqualTo("sgv", 0) .findAll(); - SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(mContext); + if (records.size() > 0) { + SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(mContext); - Boolean enableRESTUpload = prefs.getBoolean("EnableRESTUpload", false); - try { - if (enableRESTUpload) { - long start = System.currentTimeMillis(); - Log.i(TAG, String.format("Starting upload of %s record using a REST API", records.size())); - doRESTUpload(prefs, records); - Log.i(TAG, String.format("Finished upload of %s record using a REST API in %s ms", records.size(), System.currentTimeMillis() - start)); + Boolean enableRESTUpload = prefs.getBoolean("EnableRESTUpload", false); + try { + if (enableRESTUpload) { + long start = System.currentTimeMillis(); + Log.i(TAG, String.format("Starting upload of %s record using a REST API", records.size())); + doRESTUpload(prefs, records); + Log.i(TAG, String.format("Finished upload of %s record using a REST API in %s ms", records.size(), System.currentTimeMillis() - start)); + } + } catch (Exception e) { + Log.e(TAG, "ERROR uploading data!!!!!", e); } - } catch (Exception e) { - Log.e(TAG, "ERROR uploading data!!!!!", e); + } else { + Log.i(TAG, "No records has to be uploaded"); } NightscoutUploadReceiver.completeWakefulIntent(intent); @@ -159,14 +164,16 @@ public class NightscoutUploadIntentService extends IntentService { JSONArray entriesBody = new JSONArray(); for (PumpStatusEvent record : records) { - addDeviceStatus(devicestatusBody, record); addSgvEntry(entriesBody, record); addMbgEntry(entriesBody, record); } uploadToNightscout(new URL(baseURL + "/entries"), secret, entriesBody); - uploadToNightscout(new URL(baseURL + "/devicestatus"), secret, devicestatusBody); + + for(int i = 0; i < devicestatusBody.length(); i++) { + uploadToNightscout(new URL(baseURL + "/devicestatus"), secret, devicestatusBody.getJSONObject(i)); + } // Yay! We uploaded. Tell Realm // FIXME - check the upload succeeded! @@ -183,7 +190,15 @@ public class NightscoutUploadIntentService extends IntentService { } } + private boolean uploadToNightscout(URL endpoint, String secret, JSONObject httpBody) throws Exception { + return uploadToNightscout(endpoint, secret, httpBody.toString()); + } + private boolean uploadToNightscout(URL endpoint, String secret, JSONArray httpBody) throws Exception { + return uploadToNightscout(endpoint, secret, httpBody.toString()); + } + + private boolean uploadToNightscout(URL endpoint, String secret, String httpBody) throws Exception { Log.i(TAG, "postURL: " + endpoint.toString()); HttpPost post = new HttpPost(endpoint.toString()); @@ -209,12 +224,10 @@ public class NightscoutUploadIntentService extends IntentService { DefaultHttpClient httpclient = new DefaultHttpClient(params); - String jsonString = httpBody.toString(); - - Log.i(TAG, "Upload JSON: " + jsonString); + Log.i(TAG, "Upload JSON: " + httpBody); try { - StringEntity se = new StringEntity(jsonString); + StringEntity se = new StringEntity(httpBody); post.setEntity(se); post.setHeader("Accept", "application/json"); post.setHeader("Content-type", "application/json");