[asterisk-commits] dlee: branch dlee/ASTERISK-22685-json-body r402384 - in /team/dlee/ASTERISK-2...
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Fri Nov 1 15:58:01 CDT 2013
Author: dlee
Date: Fri Nov 1 15:58:00 2013
New Revision: 402384
URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=402384
Log:
Compiles!
Modified:
team/dlee/ASTERISK-22685-json-body/res/res_ari_applications.c
team/dlee/ASTERISK-22685-json-body/res/res_ari_asterisk.c
team/dlee/ASTERISK-22685-json-body/res/res_ari_bridges.c
team/dlee/ASTERISK-22685-json-body/res/res_ari_channels.c
team/dlee/ASTERISK-22685-json-body/res/res_ari_endpoints.c
team/dlee/ASTERISK-22685-json-body/res/res_ari_events.c
team/dlee/ASTERISK-22685-json-body/res/res_ari_playback.c
team/dlee/ASTERISK-22685-json-body/res/res_ari_recordings.c
team/dlee/ASTERISK-22685-json-body/res/res_ari_sounds.c
team/dlee/ASTERISK-22685-json-body/rest-api-templates/asterisk_processor.py
team/dlee/ASTERISK-22685-json-body/rest-api-templates/param_parsing.mustache
team/dlee/ASTERISK-22685-json-body/rest-api-templates/res_ari_resource.c.mustache
Modified: team/dlee/ASTERISK-22685-json-body/res/res_ari_applications.c
URL: http://svnview.digium.com/svn/asterisk/team/dlee/ASTERISK-22685-json-body/res/res_ari_applications.c?view=diff&rev=402384&r1=402383&r2=402384
==============================================================================
--- team/dlee/ASTERISK-22685-json-body/res/res_ari_applications.c (original)
+++ team/dlee/ASTERISK-22685-json-body/res/res_ari_applications.c Fri Nov 1 15:58:00 2013
@@ -64,10 +64,12 @@
struct ast_variable *headers, struct ast_ari_response *response)
{
struct ast_get_applications_args args = {};
+ RAII_VAR(struct ast_json *, body, NULL, ast_json_unref);
#if defined(AST_DEVMODE)
int is_valid;
int code;
#endif /* AST_DEVMODE */
+
ast_ari_get_applications(headers, &args, response);
#if defined(AST_DEVMODE)
@@ -115,6 +117,7 @@
{
struct ast_get_application_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;
@@ -126,6 +129,7 @@
} else
{}
}
+
ast_ari_get_application(headers, &args, response);
#if defined(AST_DEVMODE)
code = response->response_code;
@@ -173,6 +177,8 @@
{
struct ast_application_subscribe_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;
@@ -229,6 +235,47 @@
args.application_name = (i->value);
} 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, "eventSource");
+ if (field && ast_json_typeof(field) == AST_JSON_ARRAY) {
+ size_t i;
+ args.event_source_count = ast_json_array_size(field);
+ ast_free(args.event_source); /* In case it was set above */
+ args.event_source = ast_malloc(sizeof(*args.event_source) * args.event_source_count);
+
+ if (!args.event_source) {
+ ast_ari_response_alloc_failed(response);
+ goto fin;
+ }
+
+ for (i = 0; i < args.event_source_count; ++i) {
+ args.event_source[i] = ast_json_string_get(ast_json_array_get(field, i));
+ }
+ } else {
+ args.event_source_count = 1;
+ args.event_source = ast_malloc(sizeof(*args.event_source) * args.event_source_count);
+ if (!args.event_source) {
+ ast_ari_response_alloc_failed(response);
+ goto fin;
+ }
+ args.event_source[0] = ast_json_string_get(field);
}
ast_ari_application_subscribe(headers, &args, response);
#if defined(AST_DEVMODE)
@@ -281,6 +328,8 @@
{
struct ast_application_unsubscribe_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;
@@ -337,6 +386,47 @@
args.application_name = (i->value);
} 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, "eventSource");
+ if (field && ast_json_typeof(field) == AST_JSON_ARRAY) {
+ size_t i;
+ args.event_source_count = ast_json_array_size(field);
+ ast_free(args.event_source); /* In case it was set above */
+ args.event_source = ast_malloc(sizeof(*args.event_source) * args.event_source_count);
+
+ if (!args.event_source) {
+ ast_ari_response_alloc_failed(response);
+ goto fin;
+ }
+
+ for (i = 0; i < args.event_source_count; ++i) {
+ args.event_source[i] = ast_json_string_get(ast_json_array_get(field, i));
+ }
+ } else {
+ args.event_source_count = 1;
+ args.event_source = ast_malloc(sizeof(*args.event_source) * args.event_source_count);
+ if (!args.event_source) {
+ ast_ari_response_alloc_failed(response);
+ goto fin;
+ }
+ args.event_source[0] = ast_json_string_get(field);
}
ast_ari_application_unsubscribe(headers, &args, response);
#if defined(AST_DEVMODE)
Modified: team/dlee/ASTERISK-22685-json-body/res/res_ari_asterisk.c
URL: http://svnview.digium.com/svn/asterisk/team/dlee/ASTERISK-22685-json-body/res/res_ari_asterisk.c?view=diff&rev=402384&r1=402383&r2=402384
==============================================================================
--- team/dlee/ASTERISK-22685-json-body/res/res_ari_asterisk.c (original)
+++ team/dlee/ASTERISK-22685-json-body/res/res_ari_asterisk.c Fri Nov 1 15:58:00 2013
@@ -64,13 +64,16 @@
struct ast_variable *headers, struct ast_ari_response *response)
{
struct ast_asterisk_echo_args args = {};
+ RAII_VAR(struct ast_json *, body, NULL, ast_json_unref);
#if defined(AST_DEVMODE)
int is_valid;
int code;
#endif /* AST_DEVMODE */
- args.anything = ast_http_get_json(ser, headers);
- if (!args.anything) {
+
+ /* 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");
@@ -83,6 +86,7 @@
goto fin;
}
}
+ args.anything = ast_json_ref(body);
ast_ari_asterisk_echo(headers, &args, response);
#if defined(AST_DEVMODE)
code = response->response_code;
@@ -130,6 +134,8 @@
{
struct ast_get_asterisk_info_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;
@@ -181,6 +187,47 @@
} 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, "only");
+ if (field && ast_json_typeof(field) == AST_JSON_ARRAY) {
+ size_t i;
+ args.only_count = ast_json_array_size(field);
+ ast_free(args.only); /* In case it was set above */
+ args.only = ast_malloc(sizeof(*args.only) * args.only_count);
+
+ if (!args.only) {
+ ast_ari_response_alloc_failed(response);
+ goto fin;
+ }
+
+ for (i = 0; i < args.only_count; ++i) {
+ args.only[i] = ast_json_string_get(ast_json_array_get(field, i));
+ }
+ } else {
+ args.only_count = 1;
+ args.only = ast_malloc(sizeof(*args.only) * args.only_count);
+ if (!args.only) {
+ ast_ari_response_alloc_failed(response);
+ goto fin;
+ }
+ args.only[0] = ast_json_string_get(field);
+ }
ast_ari_get_asterisk_info(headers, &args, response);
#if defined(AST_DEVMODE)
code = response->response_code;
@@ -229,6 +276,8 @@
{
struct ast_get_global_var_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;
@@ -239,6 +288,27 @@
args.variable = (i->value);
} 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, "variable");
+ if (field) {
+ args.variable = ast_json_string_get(field);
}
ast_ari_get_global_var(headers, &args, response);
#if defined(AST_DEVMODE)
@@ -287,6 +357,8 @@
{
struct ast_set_global_var_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;
@@ -300,6 +372,31 @@
args.value = (i->value);
} 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, "variable");
+ if (field) {
+ args.variable = ast_json_string_get(field);
+ }
+ field = ast_json_object_get(body, "value");
+ if (field) {
+ args.value = ast_json_string_get(field);
}
ast_ari_set_global_var(headers, &args, response);
#if defined(AST_DEVMODE)
Modified: team/dlee/ASTERISK-22685-json-body/res/res_ari_bridges.c
URL: http://svnview.digium.com/svn/asterisk/team/dlee/ASTERISK-22685-json-body/res/res_ari_bridges.c?view=diff&rev=402384&r1=402383&r2=402384
==============================================================================
--- team/dlee/ASTERISK-22685-json-body/res/res_ari_bridges.c (original)
+++ team/dlee/ASTERISK-22685-json-body/res/res_ari_bridges.c Fri Nov 1 15:58:00 2013
@@ -64,10 +64,12 @@
struct ast_variable *headers, struct ast_ari_response *response)
{
struct ast_get_bridges_args args = {};
+ RAII_VAR(struct ast_json *, body, NULL, ast_json_unref);
#if defined(AST_DEVMODE)
int is_valid;
int code;
#endif /* AST_DEVMODE */
+
ast_ari_get_bridges(headers, &args, response);
#if defined(AST_DEVMODE)
@@ -115,6 +117,8 @@
{
struct ast_new_bridge_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;
@@ -125,6 +129,27 @@
args.type = (i->value);
} 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, "type");
+ if (field) {
+ args.type = ast_json_string_get(field);
}
ast_ari_new_bridge(headers, &args, response);
#if defined(AST_DEVMODE)
@@ -172,6 +197,7 @@
{
struct ast_get_bridge_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;
@@ -183,6 +209,7 @@
} else
{}
}
+
ast_ari_get_bridge(headers, &args, response);
#if defined(AST_DEVMODE)
code = response->response_code;
@@ -230,6 +257,7 @@
{
struct ast_delete_bridge_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;
@@ -241,6 +269,7 @@
} else
{}
}
+
ast_ari_delete_bridge(headers, &args, response);
#if defined(AST_DEVMODE)
code = response->response_code;
@@ -288,6 +317,8 @@
{
struct ast_add_channel_to_bridge_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;
@@ -348,6 +379,51 @@
} 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, "channel");
+ if (field && ast_json_typeof(field) == AST_JSON_ARRAY) {
+ size_t i;
+ args.channel_count = ast_json_array_size(field);
+ ast_free(args.channel); /* In case it was set above */
+ args.channel = ast_malloc(sizeof(*args.channel) * args.channel_count);
+
+ if (!args.channel) {
+ ast_ari_response_alloc_failed(response);
+ goto fin;
+ }
+
+ for (i = 0; i < args.channel_count; ++i) {
+ args.channel[i] = ast_json_string_get(ast_json_array_get(field, i));
+ }
+ } else {
+ args.channel_count = 1;
+ args.channel = ast_malloc(sizeof(*args.channel) * args.channel_count);
+ if (!args.channel) {
+ ast_ari_response_alloc_failed(response);
+ goto fin;
+ }
+ args.channel[0] = ast_json_string_get(field);
+ }
+ field = ast_json_object_get(body, "role");
+ if (field) {
+ args.role = ast_json_string_get(field);
+ }
ast_ari_add_channel_to_bridge(headers, &args, response);
#if defined(AST_DEVMODE)
code = response->response_code;
@@ -400,6 +476,8 @@
{
struct ast_remove_channel_from_bridge_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;
@@ -457,6 +535,47 @@
} 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, "channel");
+ if (field && ast_json_typeof(field) == AST_JSON_ARRAY) {
+ size_t i;
+ args.channel_count = ast_json_array_size(field);
+ ast_free(args.channel); /* In case it was set above */
+ args.channel = ast_malloc(sizeof(*args.channel) * args.channel_count);
+
+ if (!args.channel) {
+ ast_ari_response_alloc_failed(response);
+ goto fin;
+ }
+
+ for (i = 0; i < args.channel_count; ++i) {
+ args.channel[i] = ast_json_string_get(ast_json_array_get(field, i));
+ }
+ } else {
+ args.channel_count = 1;
+ args.channel = ast_malloc(sizeof(*args.channel) * args.channel_count);
+ if (!args.channel) {
+ ast_ari_response_alloc_failed(response);
+ goto fin;
+ }
+ args.channel[0] = ast_json_string_get(field);
+ }
ast_ari_remove_channel_from_bridge(headers, &args, response);
#if defined(AST_DEVMODE)
code = response->response_code;
@@ -509,6 +628,8 @@
{
struct ast_moh_start_bridge_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;
@@ -525,6 +646,27 @@
args.bridge_id = (i->value);
} 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, "mohClass");
+ if (field) {
+ args.moh_class = ast_json_string_get(field);
}
ast_ari_moh_start_bridge(headers, &args, response);
#if defined(AST_DEVMODE)
@@ -574,6 +716,7 @@
{
struct ast_moh_stop_bridge_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;
@@ -585,6 +728,7 @@
} else
{}
}
+
ast_ari_moh_stop_bridge(headers, &args, response);
#if defined(AST_DEVMODE)
code = response->response_code;
@@ -633,6 +777,8 @@
{
struct ast_play_on_bridge_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;
@@ -658,6 +804,39 @@
args.bridge_id = (i->value);
} 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, "media");
+ if (field) {
+ args.media = ast_json_string_get(field);
+ }
+ field = ast_json_object_get(body, "lang");
+ if (field) {
+ args.lang = ast_json_string_get(field);
+ }
+ field = ast_json_object_get(body, "offsetms");
+ if (field) {
+ args.offsetms = ast_json_integer_get(field);
+ }
+ field = ast_json_object_get(body, "skipms");
+ if (field) {
+ args.skipms = ast_json_integer_get(field);
}
ast_ari_play_on_bridge(headers, &args, response);
#if defined(AST_DEVMODE)
@@ -707,6 +886,8 @@
{
struct ast_record_bridge_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;
@@ -741,6 +922,51 @@
args.bridge_id = (i->value);
} 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, "name");
+ if (field) {
+ args.name = ast_json_string_get(field);
+ }
+ field = ast_json_object_get(body, "format");
+ if (field) {
+ args.format = ast_json_string_get(field);
+ }
+ field = ast_json_object_get(body, "maxDurationSeconds");
+ if (field) {
+ args.max_duration_seconds = ast_json_integer_get(field);
+ }
+ field = ast_json_object_get(body, "maxSilenceSeconds");
+ if (field) {
+ args.max_silence_seconds = ast_json_integer_get(field);
+ }
+ field = ast_json_object_get(body, "ifExists");
+ if (field) {
+ args.if_exists = ast_json_string_get(field);
+ }
+ field = ast_json_object_get(body, "beep");
+ if (field) {
+ args.beep = ast_json_is_true(field);
+ }
+ field = ast_json_object_get(body, "terminateOn");
+ if (field) {
+ args.terminate_on = ast_json_string_get(field);
}
ast_ari_record_bridge(headers, &args, response);
#if defined(AST_DEVMODE)
Modified: team/dlee/ASTERISK-22685-json-body/res/res_ari_channels.c
URL: http://svnview.digium.com/svn/asterisk/team/dlee/ASTERISK-22685-json-body/res/res_ari_channels.c?view=diff&rev=402384&r1=402383&r2=402384
==============================================================================
--- team/dlee/ASTERISK-22685-json-body/res/res_ari_channels.c (original)
+++ team/dlee/ASTERISK-22685-json-body/res/res_ari_channels.c Fri Nov 1 15:58:00 2013
@@ -64,10 +64,12 @@
struct ast_variable *headers, struct ast_ari_response *response)
{
struct ast_get_channels_args args = {};
+ RAII_VAR(struct ast_json *, body, NULL, ast_json_unref);
#if defined(AST_DEVMODE)
int is_valid;
int code;
#endif /* AST_DEVMODE */
+
ast_ari_get_channels(headers, &args, response);
#if defined(AST_DEVMODE)
@@ -115,6 +117,8 @@
{
struct ast_originate_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;
@@ -146,6 +150,55 @@
args.timeout = atoi(i->value);
} 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, "endpoint");
+ if (field) {
+ args.endpoint = ast_json_string_get(field);
+ }
+ field = ast_json_object_get(body, "extension");
+ if (field) {
+ args.extension = ast_json_string_get(field);
+ }
+ field = ast_json_object_get(body, "context");
+ if (field) {
+ args.context = ast_json_string_get(field);
+ }
+ field = ast_json_object_get(body, "priority");
+ if (field) {
+ args.priority = ast_json_integer_get(field);
+ }
+ field = ast_json_object_get(body, "app");
+ if (field) {
+ args.app = ast_json_string_get(field);
+ }
+ field = ast_json_object_get(body, "appArgs");
+ if (field) {
+ args.app_args = ast_json_string_get(field);
+ }
+ field = ast_json_object_get(body, "callerId");
+ if (field) {
+ args.caller_id = ast_json_string_get(field);
+ }
+ field = ast_json_object_get(body, "timeout");
+ if (field) {
+ args.timeout = ast_json_integer_get(field);
}
ast_ari_originate(headers, &args, response);
#if defined(AST_DEVMODE)
@@ -194,6 +247,7 @@
{
struct ast_get_channel_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;
@@ -205,6 +259,7 @@
} else
{}
}
+
ast_ari_get_channel(headers, &args, response);
#if defined(AST_DEVMODE)
code = response->response_code;
@@ -252,6 +307,8 @@
{
struct ast_delete_channel_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;
@@ -268,6 +325,27 @@
args.channel_id = (i->value);
} 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, "reason");
+ if (field) {
+ args.reason = ast_json_string_get(field);
}
ast_ari_delete_channel(headers, &args, response);
#if defined(AST_DEVMODE)
@@ -317,6 +395,8 @@
{
struct ast_continue_in_dialplan_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;
@@ -339,6 +419,35 @@
args.channel_id = (i->value);
} 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, "context");
+ if (field) {
+ args.context = ast_json_string_get(field);
+ }
+ field = ast_json_object_get(body, "extension");
+ if (field) {
+ args.extension = ast_json_string_get(field);
+ }
+ field = ast_json_object_get(body, "priority");
+ if (field) {
+ args.priority = ast_json_integer_get(field);
}
ast_ari_continue_in_dialplan(headers, &args, response);
#if defined(AST_DEVMODE)
@@ -388,6 +497,7 @@
{
struct ast_answer_channel_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;
@@ -399,6 +509,7 @@
} else
{}
}
+
ast_ari_answer_channel(headers, &args, response);
#if defined(AST_DEVMODE)
code = response->response_code;
@@ -447,6 +558,7 @@
{
struct ast_ring_channel_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;
@@ -458,6 +570,7 @@
} else
{}
}
+
ast_ari_ring_channel(headers, &args, response);
#if defined(AST_DEVMODE)
code = response->response_code;
@@ -506,6 +619,8 @@
{
struct ast_send_dtmfchannel_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;
@@ -534,6 +649,43 @@
args.channel_id = (i->value);
} 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, "dtmf");
+ if (field) {
+ args.dtmf = ast_json_string_get(field);
+ }
+ field = ast_json_object_get(body, "before");
+ if (field) {
+ args.before = ast_json_integer_get(field);
+ }
+ field = ast_json_object_get(body, "between");
+ if (field) {
+ args.between = ast_json_integer_get(field);
+ }
+ field = ast_json_object_get(body, "duration");
+ if (field) {
+ args.duration = ast_json_integer_get(field);
+ }
+ field = ast_json_object_get(body, "after");
+ if (field) {
+ args.after = ast_json_integer_get(field);
}
ast_ari_send_dtmfchannel(headers, &args, response);
#if defined(AST_DEVMODE)
@@ -584,6 +736,8 @@
{
struct ast_mute_channel_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;
@@ -600,6 +754,27 @@
args.channel_id = (i->value);
} 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, "direction");
+ if (field) {
+ args.direction = ast_json_string_get(field);
}
ast_ari_mute_channel(headers, &args, response);
#if defined(AST_DEVMODE)
@@ -649,6 +824,8 @@
{
struct ast_unmute_channel_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;
@@ -665,6 +842,27 @@
args.channel_id = (i->value);
} 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, "direction");
+ if (field) {
+ args.direction = ast_json_string_get(field);
}
ast_ari_unmute_channel(headers, &args, response);
#if defined(AST_DEVMODE)
@@ -714,6 +912,7 @@
{
struct ast_hold_channel_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;
@@ -725,6 +924,7 @@
} else
{}
}
+
ast_ari_hold_channel(headers, &args, response);
#if defined(AST_DEVMODE)
code = response->response_code;
@@ -773,6 +973,7 @@
{
struct ast_unhold_channel_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;
@@ -784,6 +985,7 @@
} else
{}
}
+
ast_ari_unhold_channel(headers, &args, response);
#if defined(AST_DEVMODE)
code = response->response_code;
@@ -832,6 +1034,8 @@
{
struct ast_moh_start_channel_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;
@@ -848,6 +1052,27 @@
args.channel_id = (i->value);
} 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, "mohClass");
+ if (field) {
+ args.moh_class = ast_json_string_get(field);
}
ast_ari_moh_start_channel(headers, &args, response);
#if defined(AST_DEVMODE)
@@ -897,6 +1122,7 @@
{
struct ast_moh_stop_channel_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;
@@ -908,6 +1134,7 @@
} else
{}
}
+
ast_ari_moh_stop_channel(headers, &args, response);
#if defined(AST_DEVMODE)
code = response->response_code;
@@ -956,6 +1183,8 @@
{
struct ast_play_on_channel_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;
@@ -981,6 +1210,39 @@
args.channel_id = (i->value);
} 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, "media");
+ if (field) {
+ args.media = ast_json_string_get(field);
+ }
+ field = ast_json_object_get(body, "lang");
+ if (field) {
+ args.lang = ast_json_string_get(field);
+ }
+ field = ast_json_object_get(body, "offsetms");
+ if (field) {
+ args.offsetms = ast_json_integer_get(field);
+ }
+ field = ast_json_object_get(body, "skipms");
+ if (field) {
+ args.skipms = ast_json_integer_get(field);
}
ast_ari_play_on_channel(headers, &args, response);
#if defined(AST_DEVMODE)
@@ -1030,6 +1292,8 @@
{
struct ast_record_channel_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;
@@ -1064,6 +1328,51 @@
args.channel_id = (i->value);
} 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, "name");
+ if (field) {
+ args.name = ast_json_string_get(field);
+ }
+ field = ast_json_object_get(body, "format");
+ if (field) {
+ args.format = ast_json_string_get(field);
+ }
+ field = ast_json_object_get(body, "maxDurationSeconds");
+ if (field) {
+ args.max_duration_seconds = ast_json_integer_get(field);
+ }
+ field = ast_json_object_get(body, "maxSilenceSeconds");
+ if (field) {
+ args.max_silence_seconds = ast_json_integer_get(field);
+ }
+ field = ast_json_object_get(body, "ifExists");
+ if (field) {
+ args.if_exists = ast_json_string_get(field);
+ }
+ field = ast_json_object_get(body, "beep");
+ if (field) {
+ args.beep = ast_json_is_true(field);
+ }
+ field = ast_json_object_get(body, "terminateOn");
+ if (field) {
+ args.terminate_on = ast_json_string_get(field);
}
ast_ari_record_channel(headers, &args, response);
#if defined(AST_DEVMODE)
@@ -1115,6 +1424,8 @@
{
struct ast_get_channel_var_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;
@@ -1131,6 +1442,27 @@
args.channel_id = (i->value);
} 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, "variable");
+ if (field) {
+ args.variable = ast_json_string_get(field);
}
ast_ari_get_channel_var(headers, &args, response);
#if defined(AST_DEVMODE)
@@ -1181,6 +1513,8 @@
{
struct ast_set_channel_var_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;
@@ -1200,6 +1534,31 @@
args.channel_id = (i->value);
} 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, "variable");
+ if (field) {
+ args.variable = ast_json_string_get(field);
+ }
+ field = ast_json_object_get(body, "value");
+ if (field) {
+ args.value = ast_json_string_get(field);
}
ast_ari_set_channel_var(headers, &args, response);
#if defined(AST_DEVMODE)
Modified: team/dlee/ASTERISK-22685-json-body/res/res_ari_endpoints.c
URL: http://svnview.digium.com/svn/asterisk/team/dlee/ASTERISK-22685-json-body/res/res_ari_endpoints.c?view=diff&rev=402384&r1=402383&r2=402384
==============================================================================
--- team/dlee/ASTERISK-22685-json-body/res/res_ari_endpoints.c (original)
+++ team/dlee/ASTERISK-22685-json-body/res/res_ari_endpoints.c Fri Nov 1 15:58:00 2013
@@ -64,10 +64,12 @@
struct ast_variable *headers, struct ast_ari_response *response)
{
struct ast_get_endpoints_args args = {};
+ RAII_VAR(struct ast_json *, body, NULL, ast_json_unref);
#if defined(AST_DEVMODE)
int is_valid;
int code;
#endif /* AST_DEVMODE */
+
ast_ari_get_endpoints(headers, &args, response);
#if defined(AST_DEVMODE)
@@ -115,6 +117,7 @@
{
struct ast_get_endpoints_by_tech_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;
@@ -126,6 +129,7 @@
} else
{}
}
+
ast_ari_get_endpoints_by_tech(headers, &args, response);
#if defined(AST_DEVMODE)
code = response->response_code;
@@ -172,6 +176,7 @@
{
struct ast_get_endpoint_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;
@@ -186,6 +191,7 @@
} else
{}
}
+
ast_ari_get_endpoint(headers, &args, response);
#if defined(AST_DEVMODE)
code = response->response_code;
Modified: team/dlee/ASTERISK-22685-json-body/res/res_ari_events.c
[... 577 lines stripped ...]
More information about the asterisk-commits
mailing list