Browse code

Add actual support for extra fields POSTed with the data

Natasha Kerensikova authored on15/05/2016 18:29:05
Showing1 changed files
... ...
@@ -25,6 +25,7 @@ var cfg_sign_key = "";
25 25
 var cfg_sign_key_format = "";
26 26
 var cfg_auto_close = false;
27 27
 var cfg_wakeup_time = -1;
28
+var cfg_extra_fields = [];
28 29
 
29 30
 var to_send = [];
30 31
 var senders = [new XMLHttpRequest(), new XMLHttpRequest()];
... ...
@@ -43,6 +44,15 @@ function sendPayload(payload) {
43 44
       data.append(cfg_sign_field, sha.getHMAC(cfg_sign_field_format));
44 45
    }
45 46
 
47
+   if (cfg_extra_fields.length > 0) {
48
+      for (var i = 0; i < cfg_extra_fields.length; i += 1) {
49
+         var decoded = decodeURIComponent(cfg_extra_fields[i]).split("=");
50
+         var name = decoded.shift();
51
+         var value = decoded.join("=");
52
+         data.append(name, value);
53
+      }
54
+   }
55
+
46 56
    i_sender = 1 - i_sender;
47 57
    senders[i_sender].open("POST", cfg_endpoint, true);
48 58
    senders[i_sender].send(data);
... ...
@@ -95,6 +105,9 @@ Pebble.addEventListener("ready", function() {
95 105
    var str_to_send = localStorage.getItem("toSend");
96 106
    to_send = str_to_send ? str_to_send.split("|") : [];
97 107
 
108
+   var str_extra_fields = localStorage.getItem("extraFields");
109
+   cfg_extra_fields = str_extra_fields ? str_extra_fields.split(",") : [];
110
+
98 111
    cfg_endpoint = localStorage.getItem("cfgEndpoint");
99 112
    cfg_data_field = localStorage.getItem("cfgDataField");
100 113
    cfg_bundle_max = parseInt(localStorage.getItem("cfgBundleMax") || "1", 10);
... ...
@@ -167,6 +180,10 @@ Pebble.addEventListener("showConfiguration", function() {
167 180
       settings += "&wakeup=" + cfg_wakeup_time.toString(10);
168 181
    }
169 182
 
183
+   if (cfg_extra_fields.length > 0) {
184
+      settings += "&extra=" + cfg_extra_fields.join(",");
185
+   }
186
+
170 187
    Pebble.openURL("https://cdn.rawgit.com/faelys/pebble-health-export/v1.0/config.html" + settings);
171 188
 });
172 189
 
... ...
@@ -245,6 +262,13 @@ Pebble.addEventListener("webviewclosed", function(e) {
245 262
          console.log("Invalid wakeupTime \"" + configData.wakeupTime + "\"");
246 263
    }
247 264
 
265
+   if (configData.extraFields !== null) {
266
+      console.log("received extraFields \"" + configData.extraFields + "\"");
267
+      cfg_extra_fields = configData.extraFields
268
+       ? configData.extraFields.split(",") : [];
269
+      localStorage.setItem("extraFields", cfg_extra_fields.join(","));
270
+   }
271
+
248 272
    if (configData.resend) {
249 273
       senders[0].abort();
250 274
       senders[1].abort();