From 3615684b941f8a726e0c8aefbeeda4670238ad36 Mon Sep 17 00:00:00 2001 From: Jean-Philippe Orsini Date: Tue, 8 Nov 2011 20:03:55 +0000 Subject: [PATCH] moved fct creating psensor struct from json to appropriate file --- src/lib/psensor_json.c | 29 +++++++++++++++++++++++++++++ src/lib/psensor_json.h | 7 +++++++ src/rsensor.c | 36 ++++-------------------------------- 3 files changed, 40 insertions(+), 32 deletions(-) diff --git a/src/lib/psensor_json.c b/src/lib/psensor_json.c index 129e24c..898b1f0 100644 --- a/src/lib/psensor_json.c +++ b/src/lib/psensor_json.c @@ -17,9 +17,11 @@ 02110-1301 USA */ +#include #include #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; +} + diff --git a/src/lib/psensor_json.h b/src/lib/psensor_json.h index cde92f0..cc1fecc 100644 --- a/src/lib/psensor_json.h +++ b/src/lib/psensor_json.h @@ -27,4 +27,11 @@ 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 diff --git a/src/rsensor.c b/src/rsensor.c index 370c343..32e4664 100644 --- a/src/rsensor.c +++ b/src/rsensor.c @@ -20,17 +20,16 @@ #include #define _(str) gettext(str) -#include "url.h" -#include "server/server.h" - #include #include #include #include -#include +#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); -- 2.7.4