Merge tag 'upstream/1.2.0'
[psensor-pkg-debian.git] / src / lib / psensor_json.c
index b6feecf..14e69e0 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2010-2013 jeanfi@gmail.com
+ * Copyright (C) 2010-2016 jeanfi@gmail.com
  *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU General Public License as
@@ -19,6 +19,8 @@
 #include <stdlib.h>
 #include <string.h>
 
+#include <stdio.h>
+
 #include "psensor_json.h"
 #include "url.h"
 
@@ -78,9 +80,11 @@ static json_object *sensor_to_json(struct psensor *s)
        json_object_object_add(obj,
                               ATT_SENSOR_TYPE, json_object_new_int(s->type));
        json_object_object_add(obj,
-                              ATT_SENSOR_MIN, json_object_new_double(s->min));
+                              ATT_SENSOR_MIN,
+                              json_object_new_double(s->sess_lowest));
        json_object_object_add(obj,
-                              ATT_SENSOR_MAX, json_object_new_double(s->max));
+                              ATT_SENSOR_MAX,
+                              json_object_new_double(s->sess_highest));
        json_object_object_add(obj,
                               ATT_SENSOR_MEASURES,
                               measures_to_json_object(s));
@@ -115,14 +119,16 @@ char *sensors_to_json_string(struct psensor **sensors)
        char *str;
        json_object *obj = json_object_new_array();
 
-       sensors_cur = sensors;
+       if (sensors) {
+               sensors_cur = sensors;
 
-       while (*sensors_cur) {
-               struct psensor *s = *sensors_cur;
+               while (*sensors_cur) {
+                       struct psensor *s = *sensors_cur;
 
-               json_object_array_add(obj, sensor_to_json(s));
+                       json_object_array_add(obj, sensor_to_json(s));
 
-               sensors_cur++;
+                       sensors_cur++;
+               }
        }
 
        str = strdup(json_object_to_json_string(obj));
@@ -140,9 +146,9 @@ struct psensor *psensor_new_from_json(json_object *o,
        struct psensor *s;
        char *eid, *url;
 
-       oid = json_object_object_get(o, "id");
-       oname = json_object_object_get(o, "name");
-       otype = json_object_object_get(o, "type");
+       json_object_object_get_ex(o, "id", &oid);
+       json_object_object_get_ex(o, "name", &oname);
+       json_object_object_get_ex(o, "type", &otype);
 
        eid = url_encode(json_object_get_string(oid));
        url = malloc(strlen(sensors_url) + 1 + strlen(eid) + 1);
@@ -153,7 +159,7 @@ struct psensor *psensor_new_from_json(json_object *o,
                           NULL,
                           json_object_get_int(otype) | SENSOR_TYPE_REMOTE,
                           values_max_length);
-       s->url = url;
+       s->provider_data = url;
 
        free(eid);