diff options
author | Martin Schanzenbach <mschanzenbach@posteo.de> | 2016-05-04 09:44:35 +0000 |
---|---|---|
committer | Martin Schanzenbach <mschanzenbach@posteo.de> | 2016-05-04 09:44:35 +0000 |
commit | 493305a0d4e9d7f9bdc35fabfd8027a487586e47 (patch) | |
tree | ec05c1bde5b5cfb7937de6f06dc3586f26f557f9 /src/jsonapi/jsonapi.c | |
parent | 8e9bb50b7543608c2c1a833a5b92f19941ed7a0a (diff) |
- rework rest/jsonapi API; bugfixes
Diffstat (limited to 'src/jsonapi/jsonapi.c')
-rw-r--r-- | src/jsonapi/jsonapi.c | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/src/jsonapi/jsonapi.c b/src/jsonapi/jsonapi.c index 6bd03e0ec8..b648590e55 100644 --- a/src/jsonapi/jsonapi.c +++ b/src/jsonapi/jsonapi.c @@ -20,6 +20,7 @@ */ #include "platform.h" #include "gnunet_json_lib.h" +#include "gnunet_rest_lib.h" #define GNUNET_JSONAPI_KEY_DATA "data" @@ -476,3 +477,56 @@ GNUNET_JSON_spec_jsonapi (struct GNUNET_JSONAPI_Object **jsonapi_object) *jsonapi_object = NULL; return ret; } + +/** + * Check rest request for validity + * + * @param req handle to the request + * @return GNUNET_OK if valid + */ +int +GNUNET_JSONAPI_check_request_acceptable (struct GNUNET_REST_RequestHandle *req) +{ + //TODO + return GNUNET_OK; +} + +/** + * Check rest request for validity + * + * @param req handle to the request + * @return GNUNET_OK if valid + */ +int +GNUNET_JSONAPI_check_request_supported (struct GNUNET_REST_RequestHandle *req) +{ + //TODO + return GNUNET_OK; +} + +/** + * Handle jsonapi rest request. Checks request headers for jsonapi compliance + * + * @param req rest request handle + * @param handler rest request handlers + * @param cls closure + * @return GNUNET_OK if successful + */ +int +GNUNET_JSONAPI_handle_request (struct GNUNET_REST_RequestHandle *handle, + const struct GNUNET_REST_RequestHandler *handlers, + struct GNUNET_REST_RequestHandlerError *err, + void *cls) +{ + if (GNUNET_OK != GNUNET_JSONAPI_check_request_acceptable (handle)) + { + err->error_code = MHD_HTTP_NOT_ACCEPTABLE; + return GNUNET_SYSERR; + } + if (GNUNET_OK != GNUNET_JSONAPI_check_request_supported (handle)) + { + err->error_code = MHD_HTTP_UNSUPPORTED_MEDIA_TYPE; + return GNUNET_SYSERR; + } + return GNUNET_REST_handle_request (handle, handlers, err, cls); +} |