mirror of
				https://github.com/asterisk/asterisk.git
				synced 2025-11-04 05:15:22 +00:00 
			
		
		
		
	
		
			
	
	
		
			72 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			72 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| 
								 | 
							
								{{!
							 | 
						||
| 
								 | 
							
								 * Asterisk -- An open source telephony toolkit.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * Copyright (C) 2014, Digium, Inc.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * William Kinsey Moore, III <kmoore@digium.com>
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * 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.
							 | 
						||
| 
								 | 
							
								}}
							 | 
						||
| 
								 | 
							
								{{#parse_body}}
							 | 
						||
| 
								 | 
							
								int ast_ari_{{c_name}}_{{c_nickname}}_parse_body(
							 | 
						||
| 
								 | 
							
									struct ast_json *body,
							 | 
						||
| 
								 | 
							
									struct ast_ari_{{c_name}}_{{c_nickname}}_args *args)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								{{#has_query_parameters}}
							 | 
						||
| 
								 | 
							
									struct ast_json *field;
							 | 
						||
| 
								 | 
							
								{{/has_query_parameters}}
							 | 
						||
| 
								 | 
							
									/* Parse query parameters out of it */
							 | 
						||
| 
								 | 
							
								{{#query_parameters}}
							 | 
						||
| 
								 | 
							
								{{^is_body_parameter}}
							 | 
						||
| 
								 | 
							
									field = ast_json_object_get(body, "{{name}}");
							 | 
						||
| 
								 | 
							
									if (field) {
							 | 
						||
| 
								 | 
							
								{{^allow_multiple}}
							 | 
						||
| 
								 | 
							
										args->{{c_name}} = {{json_convert}}(field);
							 | 
						||
| 
								 | 
							
								{{/allow_multiple}}
							 | 
						||
| 
								 | 
							
								{{#allow_multiple}}
							 | 
						||
| 
								 | 
							
										/* If they were silly enough to both pass in a query param and a
							 | 
						||
| 
								 | 
							
										 * JSON body, free up the query value.
							 | 
						||
| 
								 | 
							
										 */
							 | 
						||
| 
								 | 
							
										ast_free(args->{{c_name}});
							 | 
						||
| 
								 | 
							
										if (ast_json_typeof(field) == AST_JSON_ARRAY) {
							 | 
						||
| 
								 | 
							
											/* Multiple param passed as array */
							 | 
						||
| 
								 | 
							
											size_t i;
							 | 
						||
| 
								 | 
							
											args->{{c_name}}_count = ast_json_array_size(field);
							 | 
						||
| 
								 | 
							
											args->{{c_name}} = ast_malloc(sizeof(*args->{{c_name}}) * args->{{c_name}}_count);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
											if (!args->{{c_name}}) {
							 | 
						||
| 
								 | 
							
												return -1;
							 | 
						||
| 
								 | 
							
											}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
											for (i = 0; i < args->{{c_name}}_count; ++i) {
							 | 
						||
| 
								 | 
							
												args->{{c_name}}[i] = {{json_convert}}(ast_json_array_get(field, i));
							 | 
						||
| 
								 | 
							
											}
							 | 
						||
| 
								 | 
							
										} else {
							 | 
						||
| 
								 | 
							
											/* Multiple param passed as single value */
							 | 
						||
| 
								 | 
							
											args->{{c_name}}_count = 1;
							 | 
						||
| 
								 | 
							
											args->{{c_name}} = ast_malloc(sizeof(*args->{{c_name}}) * args->{{c_name}}_count);
							 | 
						||
| 
								 | 
							
											if (!args->{{c_name}}) {
							 | 
						||
| 
								 | 
							
												return -1;
							 | 
						||
| 
								 | 
							
											}
							 | 
						||
| 
								 | 
							
											args->{{c_name}}[0] = {{json_convert}}(field);
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
								{{/allow_multiple}}
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								{{/is_body_parameter}}
							 | 
						||
| 
								 | 
							
								{{/query_parameters}}
							 | 
						||
| 
								 | 
							
									return 0;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								{{/parse_body}}
							 |