sprinkler / shutter WIP
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
NADAL Jean-Baptiste
2020-02-24 18:49:36 +01:00
parent 397320ffe9
commit dfed6f6478

View File

@@ -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); 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) 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; devices_manager_t *dm = (devices_manager_t *)arg;
data = restd_http_get_body(response); return update_device(response, dm, kOutletEntry);
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;
} }
/*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/
@@ -225,8 +192,10 @@ int sprinkler_get_handler(restd_resp_t *response, void *arg)
int sprinkler_update_handler(restd_resp_t *response, void *arg) int sprinkler_update_handler(restd_resp_t *response, void *arg)
{ {
#warning TODO devices_manager_t *dm = (devices_manager_t *)arg;
return RESTD_OK;
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) int shutter_update_handler(restd_resp_t *response, void *arg)
{ {
#warning TODO devices_manager_t *dm = (devices_manager_t *)arg;
return RESTD_OK;
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); 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) int remove_device(restd_resp_t *response, devices_manager_t *dm, const char *capability)