21 static void res_get_handler(
void* request,
void* response, uint8_t *buffer, uint16_t preferred_size, int32_t *offset) {
24 if (!ms_get_time(&time)) {
25 REST.set_response_status(response, REST.status.SERVICE_UNAVAILABLE);
29 int length = snprintf((
char *)buffer, preferred_size,
"%" PRIu32, time);
31 REST.set_header_content_type(response, REST.type.TEXT_PLAIN);
32 REST.set_response_payload(response, buffer, length);
35 static void res_post_put_handler(
void *request,
void *response, uint8_t *buffer, uint16_t preferred_size, int32_t *offset) {
42 DEBUG(
"Attempting to set time!\n");
44 if (!(incoming_len = REST.get_request_payload(request, (
const uint8_t **)&incoming))) {
45 DEBUG(
"Failed to get payload\n");
46 REST.set_response_status(response, REST.status.BAD_REQUEST);
50 start_ptr = (
char *) incoming;
54 seconds = strtol(start_ptr, &end_ptr, 0);
57 if (errno != 0 || ((
char *) incoming) + incoming_len > end_ptr) {
58 DEBUG(
"Failed to parse epoch\n");
59 REST.set_response_status(response, REST.status.BAD_REQUEST);
63 DEBUG(
"Requested time is %" PRIu32
"\n", seconds);
65 if (!ms_set_time(seconds)) {
66 DEBUG(
"Failed to set epoch\n");
67 REST.set_response_status(response, REST.status.SERVICE_UNAVAILABLE);
71 REST.set_response_status(response, REST.status.CHANGED);
74 RESOURCE(res_date,
"title=\"date: ?len=0..\";rt=\"Text\"", res_get_handler, res_post_put_handler,
NULL,
NULL);
An abstraction layer for RESTful Web services (Erbium).
#define NULL
The null pointer.
RESOURCE(res_routes,"Routes", res_get_handler, NULL, NULL, NULL)
Route resource.