moved fct creating psensor struct from json to appropriate file
authorJean-Philippe Orsini <jeanfi@gmail.com>
Tue, 8 Nov 2011 20:03:55 +0000 (20:03 +0000)
committerJean-Philippe Orsini <jeanfi@gmail.com>
Tue, 8 Nov 2011 20:03:55 +0000 (20:03 +0000)
src/lib/psensor_json.c
src/lib/psensor_json.h
src/rsensor.c

index 129e24c..898b1f0 100644 (file)
     02110-1301 USA
 */
 
+#include <stdlib.h>
 #include <string.h>
 
 #include "psensor_json.h"
+#include "url.h"
 
 #define ATT_SENSOR_ID "id"
 #define ATT_SENSOR_NAME "name"
@@ -131,3 +133,30 @@ char *sensors_to_json_string(struct psensor **sensors)
        return str;
 }
 
+struct psensor *psensor_new_from_json(json_object *o,
+                                     const char *sensors_url,
+                                     int values_max_length)
+{
+       json_object *oid, *oname, *otype;
+       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");
+
+       eid = url_encode(json_object_get_string(oid));
+       url = malloc(strlen(sensors_url) + 1 + strlen(eid) + 1);
+       sprintf(url, "%s/%s", sensors_url, eid);
+
+       s = psensor_create(strdup(url),
+                          strdup(json_object_get_string(oname)),
+                          json_object_get_int(otype) | SENSOR_TYPE_REMOTE,
+                          values_max_length);
+       s->url = url;
+
+       free(eid);
+
+       return s;
+}
+
index cde92f0..cc1fecc 100644 (file)
 char *sensor_to_json_string(struct psensor *s);
 char *sensors_to_json_string(struct psensor **sensors);
 
+/*
+ * Creates a new allocated psensor corresponding to a given json
+ * representation.
+ */
+struct psensor *psensor_new_from_json(json_object *o,
+                                     const char *sensors_url,
+                                     int values_max_length);
 #endif
index 370c343..32e4664 100644 (file)
 #include <libintl.h>
 #define _(str) gettext(str)
 
-#include "url.h"
-#include "server/server.h"
-
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
 
 #include <curl/curl.h>
-#include <json/json.h>
 
+#include "psensor_json.h"
 #include "rsensor.h"
+#include "server/server.h"
+#include "url.h"
 
 struct ucontent {
        char *data;
@@ -73,33 +72,6 @@ static char *create_api_1_0_sensors_url(const char *base_url)
        return ret;
 }
 
-static struct psensor *json_object_to_psensor(json_object *o,
-                                             const char *sensors_url,
-                                             int values_max_length)
-{
-       json_object *oid, *oname, *otype;
-       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");
-
-       eid = url_encode(json_object_get_string(oid));
-       url = malloc(strlen(sensors_url) + 1 + strlen(eid) + 1);
-       sprintf(url, "%s/%s", sensors_url, eid);
-
-       s = psensor_create(strdup(url),
-                          strdup(json_object_get_string(oname)),
-                          json_object_get_int(otype) | SENSOR_TYPE_REMOTE,
-                          values_max_length);
-       s->url = url;
-
-       free(eid);
-
-       return s;
-}
-
 void rsensor_init()
 {
        curl = curl_easy_init();
@@ -158,7 +130,7 @@ struct psensor **get_remote_sensors(const char *server_url,
                sensors = malloc((n + 1) * sizeof(struct psensor *));
 
                for (i = 0; i < n; i++) {
-                       s = json_object_to_psensor
+                       s = psensor_new_from_json
                                (json_object_array_get_idx(obj, i),
                                 url,
                                 values_max_length);