asterisk/rest-api-templates/ari_model_validators.c.mustache
Matt Jordan 5206aa9d30 ARI: Add events for Contact and Peer Status changes
This patch adds support for receiving events regarding Peer status changes
and Contact status changes. This is particularly useful in scenarios where
we are subscribed to all endpoints and channels, where we often want to know
more about the state of channel technology specific items than a single
endpoint's state.

ASTERISK-24870

Change-Id: I6137459cdc25ce27efc134ad58abf065653da4e9
2015-09-21 08:21:58 -05:00

123 lines
2.8 KiB
Text

/*
* Asterisk -- An open source telephony toolkit.
*
* Copyright (C) 2013, Digium, Inc.
*
* 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.
*/
/*! \file
*
* \brief Generated file - Build validators for ARI model objects.
*/
/*
{{> do-not-edit}}
* This file is generated by a mustache template. Please see the original
* template in rest-api-templates/ari_model_validators.c.mustache
*/
#include "asterisk.h"
ASTERISK_REGISTER_FILE()
#include "asterisk/logger.h"
#include "asterisk/module.h"
#include "ari_model_validators.h"
{{#apis}}
{{#api_declaration}}
{{#models}}
int ast_ari_validate_{{c_id}}(struct ast_json *json)
{
int res = 1;
struct ast_json_iter *iter;
{{#properties}}
{{#required}}
int has_{{name}} = 0;
{{/required}}
{{/properties}}
{{#has_subtypes}}
const char *discriminator;
discriminator = ast_json_string_get(ast_json_object_get(json, "{{discriminator.name}}"));
if (!discriminator) {
ast_log(LOG_ERROR, "ARI {{id}} missing required field {{discriminator.name}}\n");
return 0;
}
if (strcmp("{{id}}", discriminator) == 0) {
/* Self type; fall through */
} else
{{#all_subtypes}}
if (strcmp("{{id}}", discriminator) == 0) {
return ast_ari_validate_{{c_id}}(json);
} else
{{/all_subtypes}}
{
ast_log(LOG_ERROR, "ARI {{id}} has undocumented subtype %s\n",
discriminator);
res = 0;
}
{{/has_subtypes}}
for (iter = ast_json_object_iter(json); iter; iter = ast_json_object_iter_next(json, iter)) {
{{#properties}}
if (strcmp("{{name}}", ast_json_object_iter_key(iter)) == 0) {
int prop_is_valid;
{{#required}}
has_{{name}} = 1;
{{/required}}
{{#type}}
{{#is_list}}
prop_is_valid = ast_ari_validate_list(
ast_json_object_iter_value(iter),
ast_ari_validate_{{c_singular_name}});
{{/is_list}}
{{^is_list}}
prop_is_valid = ast_ari_validate_{{c_name}}(
ast_json_object_iter_value(iter));
{{/is_list}}
{{/type}}
if (!prop_is_valid) {
ast_log(LOG_ERROR, "ARI {{id}} field {{name}} failed validation\n");
res = 0;
}
} else
{{/properties}}
{
ast_log(LOG_ERROR,
"ARI {{id}} has undocumented field %s\n",
ast_json_object_iter_key(iter));
res = 0;
}
}
{{#properties}}
{{#required}}
if (!has_{{name}}) {
ast_log(LOG_ERROR, "ARI {{id}} missing required field {{name}}\n");
res = 0;
}
{{/required}}
{{/properties}}
return res;
}
ari_validator ast_ari_validate_{{c_id}}_fn(void)
{
return ast_ari_validate_{{c_id}};
}
{{/models}}
{{/api_declaration}}
{{/apis}}