diff --git a/src/rest/rest_devices_handlers.c b/src/rest/rest_devices_handlers.c index aa9a8bd..75a7b39 100644 --- a/src/rest/rest_devices_handlers.c +++ b/src/rest/rest_devices_handlers.c @@ -38,6 +38,11 @@ // 204 Success. No content. // 400 Bad request + +/*--------------------------------------------------------------------------*/ + +int remove_device(restd_resp_t *response, devices_manager_t *dm, const char *capability); + /*--------------------------------------------------------------------------*/ int capabilities_handler(restd_resp_t *response, void *arg) @@ -186,10 +191,100 @@ int outlet_update_handler(restd_resp_t *response, void *arg) /*--------------------------------------------------------------------------*/ int outlet_remove_handler(restd_resp_t *response, void *arg) +{ + devices_manager_t *dm = (devices_manager_t *)arg; + + return remove_device(response, dm, kOutletEntry); +} + +/*--------------------------------------------------------------------------*/ + +int sprinkler_create_handler(restd_resp_t *response, void *arg) +{ +#warning TODO + return RESTD_OK; +} + +/*--------------------------------------------------------------------------*/ + +int sprinkler_list_handler(restd_resp_t *response, void *arg) +{ +#warning TODO + return RESTD_OK; +} + +/*--------------------------------------------------------------------------*/ + +int sprinkler_get_handler(restd_resp_t *response, void *arg) +{ +#warning TODO + return RESTD_OK; +} + +/*--------------------------------------------------------------------------*/ + +int sprinkler_update_handler(restd_resp_t *response, void *arg) +{ +#warning TODO + return RESTD_OK; +} + +/*--------------------------------------------------------------------------*/ + +int sprinkler_remove_handler(restd_resp_t *response, void *arg) +{ + devices_manager_t *dm = (devices_manager_t *)arg; + + return remove_device(response, dm, kSprinklerEntry); +} + +/*--------------------------------------------------------------------------*/ + +int shutter_create_handler(restd_resp_t *response, void *arg) +{ +#warning TODO + return RESTD_OK; +} + +/*--------------------------------------------------------------------------*/ + +int shutter_list_handler(restd_resp_t *response, void *arg) +{ +#warning TODO + return RESTD_OK; +} + +/*--------------------------------------------------------------------------*/ + +int shutter_get_handler(restd_resp_t *response, void *arg) +{ +#warning TODO + return RESTD_OK; +} + +/*--------------------------------------------------------------------------*/ + +int shutter_update_handler(restd_resp_t *response, void *arg) +{ +#warning TODO + return RESTD_OK; +} + +/*--------------------------------------------------------------------------*/ + +int shutter_remove_handler(restd_resp_t *response, void *arg) +{ + devices_manager_t *dm = (devices_manager_t *)arg; + + return remove_device(response, dm, kShutterEntry); +} + +/*--------------------------------------------------------------------------*/ + +int remove_device(restd_resp_t *response, devices_manager_t *dm, const char *capability) { struct json_object *root_node = NULL; int ret; - devices_manager_t *dm = (devices_manager_t *)arg; if (response->has_parameter == false) { @@ -197,7 +292,7 @@ int outlet_remove_handler(restd_resp_t *response, void *arg) return RESTD_OK; } - ret = devices_manager_delete(dm, kOutletEntry, response->parameter_value); + ret = devices_manager_delete(dm, capability, response->parameter_value); if (ret == 0) restd_http_response(response, 204, "application/json", ""); else diff --git a/src/rest/rest_devices_handlers.h b/src/rest/rest_devices_handlers.h index a8ef518..63a513a 100644 --- a/src/rest/rest_devices_handlers.h +++ b/src/rest/rest_devices_handlers.h @@ -44,4 +44,18 @@ extern int outlet_get_handler(restd_resp_t *response, void *arg); extern int outlet_update_handler(restd_resp_t *response, void *arg); extern int outlet_remove_handler(restd_resp_t *response, void *arg); +// Sprinkler +extern int sprinkler_create_handler(restd_resp_t *response, void *arg); +extern int sprinkler_list_handler(restd_resp_t *response, void *arg); +extern int sprinkler_get_handler(restd_resp_t *response, void *arg); +extern int sprinkler_update_handler(restd_resp_t *response, void *arg); +extern int sprinkler_remove_handler(restd_resp_t *response, void *arg); + +// Shutters +extern int shutter_create_handler(restd_resp_t *response, void *arg); +extern int shutter_list_handler(restd_resp_t *response, void *arg); +extern int shutter_get_handler(restd_resp_t *response, void *arg); +extern int shutter_update_handler(restd_resp_t *response, void *arg); +extern int shutter_remove_handler(restd_resp_t *response, void *arg); + #endif /*_REST_DEVICES_HANDLERS_H */ diff --git a/src/rest/rest_server.c b/src/rest/rest_server.c index aad1039..fdedb99 100644 --- a/src/rest/rest_server.c +++ b/src/rest/rest_server.c @@ -71,8 +71,18 @@ int setup_rest_server(restd_server_t *rest_server, const char *port, const char restd_server_register_hook_on_path(rest_server, EVHTTP_REQ_DELETE, "/api/v1/outlets/:id", outlet_remove_handler, dm); // Sprinkler + restd_server_register_hook_on_path(rest_server, EVHTTP_REQ_POST, "/api/v1/sprinklers", sprinkler_create_handler, dm); + restd_server_register_hook_on_path(rest_server, EVHTTP_REQ_GET, "/api/v1/sprinklers", sprinkler_list_handler, dm); + restd_server_register_hook_on_path(rest_server, EVHTTP_REQ_GET, "/api/v1/sprinklers/:id", sprinkler_get_handler, dm); + restd_server_register_hook_on_path(rest_server, EVHTTP_REQ_PUT, "/api/v1/sprinklers/:id", sprinkler_update_handler, dm); + restd_server_register_hook_on_path(rest_server, EVHTTP_REQ_DELETE, "/api/v1/sprinklers/:id", sprinkler_remove_handler, dm); // Shutters + restd_server_register_hook_on_path(rest_server, EVHTTP_REQ_POST, "/api/v1/shutters", shutter_create_handler, dm); + restd_server_register_hook_on_path(rest_server, EVHTTP_REQ_GET, "/api/v1/shutters", shutter_list_handler, dm); + restd_server_register_hook_on_path(rest_server, EVHTTP_REQ_GET, "/api/v1/shutters/:id", shutter_get_handler, dm); + restd_server_register_hook_on_path(rest_server, EVHTTP_REQ_PUT, "/api/v1/shutters/:id", shutter_update_handler, dm); + restd_server_register_hook_on_path(rest_server, EVHTTP_REQ_DELETE, "/api/v1/shutters/:id", shutter_remove_handler, dm); return 0; }