{{#api_declaration}} /* * Asterisk -- An open source telephony toolkit. * * {{{copyright}}} * * {{{author}}} {{! Template Copyright * Copyright (C) 2013, Digium, Inc. * * Kinsey Moore }} * * 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 core ***/ #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}}