diff options
author | Roberto Hueso Gómez <rhueso@soleta.eu> | 2020-07-06 17:26:40 +0200 |
---|---|---|
committer | OpenGnSys Support Team <soporte-og@soleta.eu> | 2020-07-06 17:27:33 +0200 |
commit | 33b0c6f694c3365e6280b01d9253aefa892075e9 (patch) | |
tree | 2a5be232ba5edc587423f97b5265d86e065c4781 /src/json.c | |
parent | 96b02b5424db61c32386c48fe05ec3375d8a84f5 (diff) |
Add POST /modes REST request
This patch implements HTTP POST /modes request which can change the mode of any
particular scope.
Request: POST /modes
{
"scope": {"id": 1,
"type": "computer"},
"mode": "pxe"
}
Response: 200 OK
Diffstat (limited to 'src/json.c')
-rw-r--r-- | src/json.c | 29 |
1 files changed, 29 insertions, 0 deletions
@@ -39,6 +39,35 @@ int og_json_parse_bool(json_t *element, bool *value) return 0; } +int og_json_parse_scope(json_t *element, struct og_scope *scope, + const uint64_t required_flags) +{ + uint64_t flags = 0UL; + const char *key; + json_t *value; + int err = 0; + + json_object_foreach(element, key, value) { + if (!strcmp(key, "id")) { + err = og_json_parse_uint(value, &scope->id); + flags |= OG_PARAM_SCOPE_ID; + } else if (!strcmp(key, "type")) { + err = og_json_parse_string(value, &scope->type); + flags |= OG_PARAM_SCOPE_TYPE; + } else { + err = -1; + } + + if (err < 0) + return err; + } + + if (flags != required_flags) + return -1; + + return err; +} + int og_json_parse_partition(json_t *element, struct og_partition *part, uint64_t required_flags) { |