mirror of
				https://github.com/asterisk/asterisk.git
				synced 2025-11-03 20:38:59 +00:00 
			
		
		
		
	Breaks many things until they can be reworked. A partial list: chan_agent chan_dahdi, chan_misdn, chan_iax2 native bridging app_queue COLP updates DTMF attended transfers Protocol attended transfers git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@389378 65c4cc65-6c06-0410-ace0-fbb531ad65f3
		
			
				
	
	
		
			153 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			153 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
{{#api_declaration}}
 | 
						|
/*
 | 
						|
 * Asterisk -- An open source telephony toolkit.
 | 
						|
 *
 | 
						|
 * {{{copyright}}}
 | 
						|
 *
 | 
						|
 * {{{author}}}
 | 
						|
{{! Template Copyright
 | 
						|
 * Copyright (C) 2013, Digium, Inc.
 | 
						|
 *
 | 
						|
 * Kinsey Moore <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.
 | 
						|
 */
 | 
						|
 | 
						|
{{! Template for rendering the res_ module for an HTTP resource. }}
 | 
						|
/*
 | 
						|
{{> do-not-edit}}
 | 
						|
 * This file is generated by a mustache template. Please see the original
 | 
						|
 * template in rest-api-templates/res_stasis_http_resource.c.mustache
 | 
						|
 */
 | 
						|
 | 
						|
/*! \file
 | 
						|
 *
 | 
						|
 * \brief {{{description}}}
 | 
						|
 *
 | 
						|
 * \author {{{author}}}
 | 
						|
 */
 | 
						|
 | 
						|
/*** MODULEINFO
 | 
						|
	<support_level>core</support_level>
 | 
						|
 ***/
 | 
						|
 | 
						|
#include "asterisk.h"
 | 
						|
 | 
						|
ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
 | 
						|
 | 
						|
#include "asterisk/module.h"
 | 
						|
#include "asterisk/json.h"
 | 
						|
#include "stasis_json/resource_{{name}}.h"
 | 
						|
{{#has_events}}
 | 
						|
#include "asterisk/stasis_channels.h"
 | 
						|
#include "asterisk/stasis_bridging.h"
 | 
						|
 | 
						|
{{#events}}
 | 
						|
{{> event_function_decl}}
 | 
						|
	)
 | 
						|
{
 | 
						|
	RAII_VAR(struct ast_json *, message, NULL, ast_json_unref);
 | 
						|
	RAII_VAR(struct ast_json *, event, NULL, ast_json_unref);
 | 
						|
{{#has_properties}}
 | 
						|
	struct ast_json *validator;
 | 
						|
{{/has_properties}}
 | 
						|
{{#channel}}
 | 
						|
	int ret;
 | 
						|
{{/channel}}
 | 
						|
{{#bridge}}
 | 
						|
{{^channel}}
 | 
						|
	int ret;
 | 
						|
{{/channel}}
 | 
						|
{{/bridge}}
 | 
						|
 | 
						|
{{#channel}}
 | 
						|
	ast_assert(channel_snapshot != NULL);
 | 
						|
{{/channel}}
 | 
						|
{{#bridge}}
 | 
						|
	ast_assert(bridge_snapshot != NULL);
 | 
						|
{{/bridge}}
 | 
						|
{{#has_properties}}
 | 
						|
	ast_assert(blob != NULL);
 | 
						|
{{#channel}}
 | 
						|
	ast_assert(ast_json_object_get(blob, "channel") == NULL);
 | 
						|
{{/channel}}
 | 
						|
{{#bridge}}
 | 
						|
	ast_assert(ast_json_object_get(blob, "bridge") == NULL);
 | 
						|
{{/bridge}}
 | 
						|
	ast_assert(ast_json_object_get(blob, "type") == NULL);
 | 
						|
{{#properties}}
 | 
						|
 | 
						|
	validator = ast_json_object_get(blob, "{{name}}");
 | 
						|
	if (validator) {
 | 
						|
		/* do validation? XXX */
 | 
						|
{{#required}}
 | 
						|
	} else {
 | 
						|
		/* fail message generation if the required parameter doesn't exist */
 | 
						|
		return NULL;
 | 
						|
{{/required}}
 | 
						|
	}
 | 
						|
{{/properties}}
 | 
						|
 | 
						|
	event = ast_json_deep_copy(blob);
 | 
						|
{{/has_properties}}
 | 
						|
{{^has_properties}}
 | 
						|
 | 
						|
	event = ast_json_object_create();
 | 
						|
{{/has_properties}}
 | 
						|
	if (!event) {
 | 
						|
		return NULL;
 | 
						|
	}
 | 
						|
 | 
						|
{{#channel}}
 | 
						|
	ret = ast_json_object_set(event,
 | 
						|
		"channel", ast_channel_snapshot_to_json(channel_snapshot));
 | 
						|
	if (ret) {
 | 
						|
		return NULL;
 | 
						|
	}
 | 
						|
 | 
						|
{{/channel}}
 | 
						|
{{#bridge}}
 | 
						|
	ret = ast_json_object_set(event,
 | 
						|
		"bridge", ast_bridge_snapshot_to_json(bridge_snapshot));
 | 
						|
	if (ret) {
 | 
						|
		return NULL;
 | 
						|
	}
 | 
						|
 | 
						|
{{/bridge}}
 | 
						|
	message = ast_json_pack("{s: o}", "{{c_id}}", ast_json_ref(event));
 | 
						|
	if (!message) {
 | 
						|
		return NULL;
 | 
						|
	}
 | 
						|
 | 
						|
	return ast_json_ref(message);
 | 
						|
}
 | 
						|
 | 
						|
{{/events}}
 | 
						|
{{/has_events}}
 | 
						|
static int load_module(void)
 | 
						|
{
 | 
						|
	return 0;
 | 
						|
}
 | 
						|
 | 
						|
static int unload_module(void)
 | 
						|
{
 | 
						|
	return 0;
 | 
						|
}
 | 
						|
 | 
						|
AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_GLOBAL_SYMBOLS | AST_MODFLAG_LOAD_ORDER,
 | 
						|
	"Stasis JSON Generators and Validators - {{{description}}}",
 | 
						|
	.load = load_module,
 | 
						|
	.unload = unload_module,
 | 
						|
	.load_pri = AST_MODPRI_DEFAULT,
 | 
						|
	);
 | 
						|
{{/api_declaration}}
 |