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
This commit is contained in:
Benjamin Ford
2015-07-13 16:00:19 -05:00
committed by Benjamin Keith Ford
parent 3412b0f1ad
commit aa5707b889
5 changed files with 133 additions and 1 deletions

View File

@@ -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)