X-Git-Url: http://git.wpitchoune.net/gitweb/?a=blobdiff_plain;f=src%2Flib%2Fpsensor_json.c;fp=src%2Flib%2Fpsensor_json.c;h=898b1f095181681ec4f3151d1b0f9e8f1c743b17;hb=3615684b941f8a726e0c8aefbeeda4670238ad36;hp=129e24cf9925f7be545b3d801e9dc66653234044;hpb=b1b31ef3066b5df2c5d0428dcb9852c09d98a547;p=psensor.git 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; +} +