summaryrefslogtreecommitdiff
path: root/res/res_ari_sounds.c
diff options
context:
space:
mode:
Diffstat (limited to 'res/res_ari_sounds.c')
-rw-r--r--res/res_ari_sounds.c29
1 files changed, 29 insertions, 0 deletions
diff --git a/res/res_ari_sounds.c b/res/res_ari_sounds.c
index 62a34364e..a3657d13b 100644
--- a/res/res_ari_sounds.c
+++ b/res/res_ari_sounds.c
@@ -59,11 +59,14 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
* \param[out] response Response to the HTTP request.
*/
static void ast_ari_sounds_list_cb(
+ struct ast_tcptls_session_instance *ser,
struct ast_variable *get_params, struct ast_variable *path_vars,
struct ast_variable *headers, struct ast_ari_response *response)
{
struct ast_ari_sounds_list_args args = {};
struct ast_variable *i;
+ RAII_VAR(struct ast_json *, body, NULL, ast_json_unref);
+ struct ast_json *field;
#if defined(AST_DEVMODE)
int is_valid;
int code;
@@ -78,6 +81,30 @@ static void ast_ari_sounds_list_cb(
} else
{}
}
+ /* Look for a JSON request entity */
+ body = ast_http_get_json(ser, headers);
+ if (!body) {
+ switch (errno) {
+ case EFBIG:
+ ast_ari_response_error(response, 413, "Request Entity Too Large", "Request body too large");
+ goto fin;
+ case ENOMEM:
+ ast_ari_response_error(response, 500, "Internal Server Error", "Error processing request");
+ goto fin;
+ case EIO:
+ ast_ari_response_error(response, 400, "Bad Request", "Error parsing request body");
+ goto fin;
+ }
+ }
+ /* Parse query parameters out of it */
+ field = ast_json_object_get(body, "lang");
+ if (field) {
+ args.lang = ast_json_string_get(field);
+ }
+ field = ast_json_object_get(body, "format");
+ if (field) {
+ args.format = ast_json_string_get(field);
+ }
ast_ari_sounds_list(headers, &args, response);
#if defined(AST_DEVMODE)
code = response->response_code;
@@ -118,11 +145,13 @@ fin: __attribute__((unused))
* \param[out] response Response to the HTTP request.
*/
static void ast_ari_sounds_get_cb(
+ struct ast_tcptls_session_instance *ser,
struct ast_variable *get_params, struct ast_variable *path_vars,
struct ast_variable *headers, struct ast_ari_response *response)
{
struct ast_ari_sounds_get_args args = {};
struct ast_variable *i;
+ RAII_VAR(struct ast_json *, body, NULL, ast_json_unref);
#if defined(AST_DEVMODE)
int is_valid;
int code;