mirror of https://github.com/asterisk/asterisk
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
153 lines
3.2 KiB
153 lines
3.2 KiB
{{#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}}
|