X-Git-Url: https://git.wpitchoune.net/gitweb/?a=blobdiff_plain;f=src%2Frsensor.c;h=629bd0dd7fcfbccb40bd6e940b940732ff0257be;hb=cc35e177d57bc4ee2cc57ae25f130dfc168aa61d;hp=0e20bddcea39d6d673ead05c2bbe320b40855f79;hpb=f57262f6f5923041555abb84b0ed0369a5ad1aff;p=psensor.git diff --git a/src/rsensor.c b/src/rsensor.c index 0e20bdd..629bd0d 100644 --- a/src/rsensor.c +++ b/src/rsensor.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2010-2011 jeanfi@gmail.com + * Copyright (C) 2010-2013 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 @@ -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,36 +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; - json_object *oname; - json_object *otype; - struct psensor *s; - char *eid; - char *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(); @@ -131,6 +100,7 @@ static json_object *get_json_object(const char *url) curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, cbk_curl); curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void *)&chunk); + log_debug("HTTP request %s", url); if (curl_easy_perform(curl) == CURLE_OK) obj = json_tokener_parse(chunk.data); else @@ -160,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); @@ -206,7 +176,7 @@ void remote_psensor_update(struct psensor *s) tv.tv_usec = 0; psensor_set_current_measure - (s, json_object_get_double(ov), tv);; + (s, json_object_get_double(ov), tv); } json_object_put(obj);