summaryrefslogtreecommitdiff
path: root/rest-api-templates/ari_model_validators.c.mustache
diff options
context:
space:
mode:
Diffstat (limited to 'rest-api-templates/ari_model_validators.c.mustache')
-rw-r--r--rest-api-templates/ari_model_validators.c.mustache117
1 files changed, 117 insertions, 0 deletions
diff --git a/rest-api-templates/ari_model_validators.c.mustache b/rest-api-templates/ari_model_validators.c.mustache
new file mode 100644
index 000000000..0e87f8e24
--- /dev/null
+++ b/rest-api-templates/ari_model_validators.c.mustache
@@ -0,0 +1,117 @@
+/*
+ * 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.h.mustache
+ */
+
+#include "asterisk.h"
+
+ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
+
+#include "asterisk/logger.h"
+#include "asterisk/module.h"
+#include "ari_model_validators.h"
+{{#apis}}
+{{#api_declaration}}
+{{#models}}
+
+int 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}}");
+ return 0;
+ }
+
+ if (strcmp("{{id}}", discriminator) == 0) {
+ /* Self type; fall through */
+ } else
+{{#subtypes}}
+ if (strcmp("{{id}}", discriminator) == 0) {
+ return ari_validate_{{c_id}}(json);
+ } else
+{{/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 = ari_validate_list(
+ ast_json_object_iter_value(iter),
+ ari_validate_{{c_singular_name}});
+{{/is_list}}
+{{^is_list}}
+ prop_is_valid = 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;
+}
+{{/models}}
+{{/api_declaration}}
+{{/apis}}