{{! * Asterisk -- An open source telephony toolkit. * * Copyright (C) 2013, Digium, Inc. * * David M. Lee, II * * See http://www.asterisk.org for more information about * the Asterisk project. Please do not directly contact * any of the maintainers of this project for assistance; * the project provides a web site, mailing lists and IRC * channels for your use. * * This program is free software, distributed under the terms of * the GNU General Public License Version 2. See the LICENSE file * at the top of the source tree. }} {{! * Snippet for decoding parameters into an _args struct. }} {{#has_query_parameters}} for (i = get_params; i; i = i->next) { {{#query_parameters}} if (strcmp(i->name, "{{name}}") == 0) { {{^allow_multiple}} args.{{c_name}} = {{c_convert}}(i->value); {{/allow_multiple}} {{#allow_multiple}} /* Parse comma separated list */ char *vals[MAX_VALS]; size_t j; args.{{c_name}}_parse = ast_strdup(i->value); if (!args.{{c_name}}_parse) { ast_ari_response_alloc_failed(response); goto fin; } if (strlen(args.{{c_name}}_parse) == 0) { /* ast_app_separate_args can't handle "" */ args.{{c_name}}_count = 1; vals[0] = args.{{c_name}}_parse; } else { args.{{c_name}}_count = ast_app_separate_args( args.{{c_name}}_parse, ',', vals, ARRAY_LEN(vals)); } if (args.{{c_name}}_count == 0) { ast_ari_response_alloc_failed(response); goto fin; } if (args.{{c_name}}_count >= MAX_VALS) { ast_ari_response_error(response, 400, "Bad Request", "Too many values for {{c_name}}"); goto fin; } args.{{c_name}} = ast_malloc(sizeof(*args.{{c_name}}) * args.{{c_name}}_count); if (!args.{{c_name}}) { ast_ari_response_alloc_failed(response); goto fin; } for (j = 0; j < args.{{c_name}}_count; ++j) { args.{{c_name}}[j] = {{c_convert}}(vals[j]); } {{/allow_multiple}} } else {{/query_parameters}} {} } {{/has_query_parameters}} {{#has_path_parameters}} for (i = path_vars; i; i = i->next) { {{#path_parameters}} if (strcmp(i->name, "{{name}}") == 0) { args.{{c_name}} = {{c_convert}}(i->value); } else {{/path_parameters}} {} } {{/has_path_parameters}} {{^is_websocket}} {{#parse_body}} {{#body_parameter}} args.{{c_name}} = body; {{/body_parameter}} {{^body_parameter}} if (ast_ari_{{c_name}}_{{c_nickname}}_parse_body(body, &args)) { ast_ari_response_alloc_failed(response); goto fin; } {{/body_parameter}} {{/parse_body}} {{/is_websocket}}