summaryrefslogtreecommitdiff
path: root/res/ari
diff options
context:
space:
mode:
authorBenjamin Ford <bford@digium.com>2015-07-13 16:00:19 -0500
committerBenjamin Keith Ford <bford@digium.com>2015-07-13 16:04:33 -0500
commitaa5707b8891119741baae98cf7b51a00c0f99438 (patch)
tree37b4670d18ec63b491b112a0304ff8ff72e047fc /res/ari
parent3412b0f1ad58e3b3f0afa42d1067531e42eddb71 (diff)
ARI: Added new functionality to load a single module.
An http request can be sent to load an Asterisk module. If the module can not be loaded or is loaded already, an error response will be returned. The command curl -v -u user:pass -X POST 'http://localhost:8088/ari /asterisk/modules/{moduleName}'" (or something similar, depending on configuration) can be run in the terminal to access this new functionality. For more information, see: https://wiki.asterisk.org/wiki.display/~bford/Asterisk+ARI+Resource * Added new ARI functionality * Asterisk modules can be loaded through http requests ASTERISK-25173 Change-Id: I9e05d5b8c5c666ecfef341504f9edc1aa84fda33
Diffstat (limited to 'res/ari')
-rw-r--r--res/ari/resource_asterisk.c37
-rw-r--r--res/ari/resource_asterisk.h13
2 files changed, 50 insertions, 0 deletions
diff --git a/res/ari/resource_asterisk.c b/res/ari/resource_asterisk.c
index ea1a073b0..768f7711d 100644
--- a/res/ari/resource_asterisk.c
+++ b/res/ari/resource_asterisk.c
@@ -258,6 +258,43 @@ void ast_ari_asterisk_get_module(struct ast_variable *headers,
ast_ari_response_ok(response, json);
}
+void ast_ari_asterisk_load_module(struct ast_variable *headers,
+ struct ast_ari_asterisk_load_module_args *args,
+ struct ast_ari_response *response)
+{
+ enum ast_module_load_result load_result;
+
+ ast_assert(response != NULL);
+
+ if (ast_module_check(args->module_name)) {
+ ast_ari_response_error(
+ response, 409, "Conflict",
+ "Module is already loaded");
+ return;
+ }
+
+ load_result = ast_load_resource(args->module_name);
+
+ if (load_result == AST_MODULE_LOAD_DECLINE) {
+ ast_ari_response_error(
+ response, 409, "Conflict",
+ "Module load declined");
+ return;
+ } else if (load_result == AST_MODULE_LOAD_SKIP) {
+ ast_ari_response_error(
+ response, 409, "Conflict",
+ "Module was skipped");
+ return;
+ } else if (load_result == AST_MODULE_LOAD_FAILURE) {
+ ast_ari_response_error(
+ response, 409, "Conflict",
+ "Module could not be loaded properly");
+ return;
+ }
+
+ ast_ari_response_no_content(response);
+}
+
void ast_ari_asterisk_get_global_var(struct ast_variable *headers,
struct ast_ari_asterisk_get_global_var_args *args,
struct ast_ari_response *response)
diff --git a/res/ari/resource_asterisk.h b/res/ari/resource_asterisk.h
index 8689f3ec1..5846a7120 100644
--- a/res/ari/resource_asterisk.h
+++ b/res/ari/resource_asterisk.h
@@ -91,6 +91,19 @@ struct ast_ari_asterisk_get_module_args {
* \param[out] response HTTP response
*/
void ast_ari_asterisk_get_module(struct ast_variable *headers, struct ast_ari_asterisk_get_module_args *args, struct ast_ari_response *response);
+/*! Argument struct for ast_ari_asterisk_load_module() */
+struct ast_ari_asterisk_load_module_args {
+ /*! Module's name */
+ const char *module_name;
+};
+/*!
+ * \brief Load an Asterisk module.
+ *
+ * \param headers HTTP headers
+ * \param args Swagger parameters
+ * \param[out] response HTTP response
+ */
+void ast_ari_asterisk_load_module(struct ast_variable *headers, struct ast_ari_asterisk_load_module_args *args, struct ast_ari_response *response);
/*! Argument struct for ast_ari_asterisk_get_global_var() */
struct ast_ari_asterisk_get_global_var_args {
/*! The variable to get */