From dfed6f6478405e9a1015f17e3c7db457c5188537 Mon Sep 17 00:00:00 2001 From: NADAL Jean-Baptiste Date: Mon, 24 Feb 2020 18:49:36 +0100 Subject: [PATCH] sprinkler / shutter WIP --- src/rest/rest_devices_handlers.c | 92 ++++++++++++++++++-------------- 1 file changed, 53 insertions(+), 39 deletions(-) diff --git a/src/rest/rest_devices_handlers.c b/src/rest/rest_devices_handlers.c index 75a7b39..ded7094 100644 --- a/src/rest/rest_devices_handlers.c +++ b/src/rest/rest_devices_handlers.c @@ -41,6 +41,7 @@ /*--------------------------------------------------------------------------*/ +int update_device(restd_resp_t *response, devices_manager_t *dm, const char *capability); int remove_device(restd_resp_t *response, devices_manager_t *dm, const char *capability); /*--------------------------------------------------------------------------*/ @@ -149,43 +150,9 @@ int outlet_get_handler(restd_resp_t *response, void *arg) int outlet_update_handler(restd_resp_t *response, void *arg) { - struct json_object *root_node = NULL; - char *data; devices_manager_t *dm = (devices_manager_t *)arg; - data = restd_http_get_body(response); - - if (data == NULL) - { - restd_http_response(response, 400, "application/json", kerror_body); - return RESTD_OK; - } - - root_node = json_tokener_parse(data); - free(data); - - if (root_node != NULL) - { - int ret; - if (response->has_parameter == true) - { - if (response->parameter_name != NULL) - { - json_object_object_add(root_node, response->parameter_name, json_object_new_int(response->parameter_value)); - } - } - - ret = devices_manager_update(dm, kOutletEntry, root_node); - json_object_put(root_node); - if (ret == 0) - { - restd_http_response(response, 204, "application/json", kempty_body); - return RESTD_OK; - } - } - - restd_http_response(response, 500, "application/json", kerror_body); - return RESTD_OK; + return update_device(response, dm, kOutletEntry); } /*--------------------------------------------------------------------------*/ @@ -225,8 +192,10 @@ int sprinkler_get_handler(restd_resp_t *response, void *arg) int sprinkler_update_handler(restd_resp_t *response, void *arg) { -#warning TODO - return RESTD_OK; + devices_manager_t *dm = (devices_manager_t *)arg; + + return update_device(response, dm, kSprinklerEntry); + } /*--------------------------------------------------------------------------*/ @@ -266,8 +235,10 @@ int shutter_get_handler(restd_resp_t *response, void *arg) int shutter_update_handler(restd_resp_t *response, void *arg) { -#warning TODO - return RESTD_OK; + devices_manager_t *dm = (devices_manager_t *)arg; + + return update_device(response, dm, kShutterEntry); + } /*--------------------------------------------------------------------------*/ @@ -279,6 +250,49 @@ int shutter_remove_handler(restd_resp_t *response, void *arg) return remove_device(response, dm, kShutterEntry); } + +/*--------------------------------------------------------------------------*/ + +int update_device(restd_resp_t *response, devices_manager_t *dm, const char *capability) +{ + struct json_object *root_node = NULL; + char *data; + + data = restd_http_get_body(response); + + if (data == NULL) + { + restd_http_response(response, 400, "application/json", kerror_body); + return RESTD_OK; + } + + root_node = json_tokener_parse(data); + free(data); + + if (root_node != NULL) + { + int ret; + if (response->has_parameter == true) + { + if (response->parameter_name != NULL) + { + json_object_object_add(root_node, response->parameter_name, json_object_new_int(response->parameter_value)); + } + } + + ret = devices_manager_update(dm, capability, root_node); + json_object_put(root_node); + if (ret == 0) + { + restd_http_response(response, 204, "application/json", kempty_body); + return RESTD_OK; + } + } + + restd_http_response(response, 500, "application/json", kerror_body); + return RESTD_OK; +} + /*--------------------------------------------------------------------------*/ int remove_device(restd_resp_t *response, devices_manager_t *dm, const char *capability)