X-Git-Url: https://git.wpitchoune.net/gitweb/?a=blobdiff_plain;f=src%2Frsensor.c;h=96b334616238e5a37199b91a1701b699ba6e3b03;hb=472cac625c92e0d5e0e2511e272e216489936490;hp=fbf6d2b0195107a11ee2fef9f58ee83b02a991d8;hpb=2b51051578ef29b031d0927388c4d62baa3c525e;p=psensor.git diff --git a/src/rsensor.c b/src/rsensor.c index fbf6d2b..96b3346 100644 --- a/src/rsensor.c +++ b/src/rsensor.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2010-2012 jeanfi@gmail.com + * Copyright (C) 2010-2014 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 @@ -26,10 +26,10 @@ #include -#include "psensor_json.h" -#include "rsensor.h" -#include "server/server.h" -#include "url.h" +#include +#include +#include +#include struct ucontent { char *data; @@ -38,6 +38,11 @@ struct ucontent { static CURL *curl; +static const char *get_url(struct psensor *s) +{ + return (char *)s->provider_data; +} + static size_t cbk_curl(void *buffer, size_t size, size_t nmemb, void *userp) { size_t realsize; @@ -55,29 +60,29 @@ static size_t cbk_curl(void *buffer, size_t size, size_t nmemb, void *userp) return realsize; } -static char *create_api_1_0_sensors_url(const char *base_url) +static char *create_api_1_1_sensors_url(const char *base_url) { char *nurl, *ret; int n; nurl = url_normalize(base_url); - n = strlen(nurl) + strlen(URL_BASE_API_1_0_SENSORS) + 1; + n = strlen(nurl) + strlen(URL_BASE_API_1_1_SENSORS) + 1; ret = malloc(n); strcpy(ret, nurl); - strcat(ret, URL_BASE_API_1_0_SENSORS); + strcat(ret, URL_BASE_API_1_1_SENSORS); free(nurl); return ret; } -void rsensor_init() +void rsensor_init(void) { curl = curl_easy_init(); } -void rsensor_cleanup() +void rsensor_cleanup(void) { curl_easy_cleanup(curl); } @@ -121,7 +126,7 @@ struct psensor **get_remote_sensors(const char *server_url, sensors = NULL; - url = create_api_1_0_sensors_url(server_url); + url = create_api_1_1_sensors_url(server_url); obj = get_json_object(url); @@ -154,23 +159,23 @@ struct psensor **get_remote_sensors(const char *server_url, return sensors; } -void remote_psensor_update(struct psensor *s) +static void remote_psensor_update(struct psensor *s) { json_object *obj; - obj = get_json_object(s->url); + obj = get_json_object(get_url(s)); if (obj && !is_error(obj)) { json_object *om; - om = json_object_object_get(obj, "last_measure"); + json_object_object_get_ex(obj, "last_measure", &om); if (!is_error(obj)) { json_object *ov, *ot; struct timeval tv; - ov = json_object_object_get(om, "value"); - ot = json_object_object_get(om, "time"); + json_object_object_get_ex(om, "value", &ov); + json_object_object_get_ex(om, "time", &ot); tv.tv_sec = json_object_get_int(ot); tv.tv_usec = 0; @@ -181,7 +186,7 @@ void remote_psensor_update(struct psensor *s) json_object_put(obj); } else { - log_printf(LOG_ERR, _("Invalid JSON: %s"), s->url); + log_printf(LOG_ERR, _("Invalid JSON: %s"), get_url(s)); } }