summaryrefslogtreecommitdiff
path: root/res/res_ari_asterisk.c
diff options
context:
space:
mode:
authorScott Emidy <jemidy@digium.com>2015-08-06 15:18:04 -0500
committerScott Emidy <jemidy@digium.com>2015-08-06 17:41:11 -0500
commit78364132ce94d9ded24ae6e6ab44b97d256b506d (patch)
treea4277262f837478a57ae5a6cc03347dddbb35f30 /res/res_ari_asterisk.c
parentc07fa843ec49a114473fe3b5609d00f80ace1b3d (diff)
ARI: Deleting log channels
An http request can be sent to delete a log channel in Asterisk. The command "curl -v -u user:pass -X DELETE 'http://localhost:8088 /ari/asterisk/logging/mylog'" can be run in the terminal to access the newly implemented functionally for ARI. * Able to delete log channels using ARI ASTERISK-25252 Change-Id: Id6eeb54ebcc511595f0418d586ff55914bc3aae6
Diffstat (limited to 'res/res_ari_asterisk.c')
-rw-r--r--res/res_ari_asterisk.c60
1 files changed, 60 insertions, 0 deletions
diff --git a/res/res_ari_asterisk.c b/res/res_ari_asterisk.c
index d532da9e8..320800a5d 100644
--- a/res/res_ari_asterisk.c
+++ b/res/res_ari_asterisk.c
@@ -722,6 +722,65 @@ fin: __attribute__((unused))
return;
}
/*!
+ * \brief Parameter parsing callback for /asterisk/logging/{logChannelName}.
+ * \param get_params GET parameters in the HTTP request.
+ * \param path_vars Path variables extracted from the request.
+ * \param headers HTTP headers.
+ * \param[out] response Response to the HTTP request.
+ */
+static void ast_ari_asterisk_delete_log_cb(
+ struct ast_tcptls_session_instance *ser,
+ struct ast_variable *get_params, struct ast_variable *path_vars,
+ struct ast_variable *headers, struct ast_ari_response *response)
+{
+ struct ast_ari_asterisk_delete_log_args args = {};
+ struct ast_variable *i;
+ RAII_VAR(struct ast_json *, body, NULL, ast_json_unref);
+#if defined(AST_DEVMODE)
+ int is_valid;
+ int code;
+#endif /* AST_DEVMODE */
+
+ for (i = path_vars; i; i = i->next) {
+ if (strcmp(i->name, "logChannelName") == 0) {
+ args.log_channel_name = (i->value);
+ } else
+ {}
+ }
+ ast_ari_asterisk_delete_log(headers, &args, response);
+#if defined(AST_DEVMODE)
+ code = response->response_code;
+
+ switch (code) {
+ case 0: /* Implementation is still a stub, or the code wasn't set */
+ is_valid = response->message == NULL;
+ break;
+ case 500: /* Internal Server Error */
+ case 501: /* Not Implemented */
+ case 404: /* Log channel does not exist. */
+ is_valid = 1;
+ break;
+ default:
+ if (200 <= code && code <= 299) {
+ is_valid = ast_ari_validate_void(
+ response->message);
+ } else {
+ ast_log(LOG_ERROR, "Invalid error response %d for /asterisk/logging/{logChannelName}\n", code);
+ is_valid = 0;
+ }
+ }
+
+ if (!is_valid) {
+ ast_log(LOG_ERROR, "Response validation failed for /asterisk/logging/{logChannelName}\n");
+ ast_ari_response_error(response, 500,
+ "Internal Server Error", "Response validation failed");
+ }
+#endif /* AST_DEVMODE */
+
+fin: __attribute__((unused))
+ return;
+}
+/*!
* \brief Parameter parsing callback for /asterisk/logging/{logChannelName}/rotate.
* \param get_params GET parameters in the HTTP request.
* \param path_vars Path variables extracted from the request.
@@ -1061,6 +1120,7 @@ static struct stasis_rest_handlers asterisk_logging_logChannelName = {
.path_segment = "logChannelName",
.is_wildcard = 1,
.callbacks = {
+ [AST_HTTP_DELETE] = ast_ari_asterisk_delete_log_cb,
},
.num_children = 1,
.children = { &asterisk_logging_logChannelName_rotate, }