Use POST / DELETE to toggle hold / moh for ARI channels

This change updates how we handle toggle events, rather then create two
different function names, we'll just use POST / DELETE from HTTP to handle it.

Review: https://reviewboard.asterisk.org/r/2906/
........

Merged revisions 400999 from http://svn.asterisk.org/svn/asterisk/branches/12


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@401007 65c4cc65-6c06-0410-ace0-fbb531ad65f3
changes/97/197/1
Paul Belanger 12 years ago
parent 2c927b871f
commit 6072e043cf

@ -680,7 +680,7 @@ fin: __attribute__((unused))
return; return;
} }
/*! /*!
* \brief Parameter parsing callback for /channels/{channelId}/unhold. * \brief Parameter parsing callback for /channels/{channelId}/hold.
* \param get_params GET parameters in the HTTP request. * \param get_params GET parameters in the HTTP request.
* \param path_vars Path variables extracted from the request. * \param path_vars Path variables extracted from the request.
* \param headers HTTP headers. * \param headers HTTP headers.
@ -722,13 +722,13 @@ static void ast_ari_unhold_channel_cb(
is_valid = ast_ari_validate_void( is_valid = ast_ari_validate_void(
response->message); response->message);
} else { } else {
ast_log(LOG_ERROR, "Invalid error response %d for /channels/{channelId}/unhold\n", code); ast_log(LOG_ERROR, "Invalid error response %d for /channels/{channelId}/hold\n", code);
is_valid = 0; is_valid = 0;
} }
} }
if (!is_valid) { if (!is_valid) {
ast_log(LOG_ERROR, "Response validation failed for /channels/{channelId}/unhold\n"); ast_log(LOG_ERROR, "Response validation failed for /channels/{channelId}/hold\n");
ast_ari_response_error(response, 500, ast_ari_response_error(response, 500,
"Internal Server Error", "Response validation failed"); "Internal Server Error", "Response validation failed");
} }
@ -738,7 +738,7 @@ fin: __attribute__((unused))
return; return;
} }
/*! /*!
* \brief Parameter parsing callback for /channels/{channelId}/mohstart. * \brief Parameter parsing callback for /channels/{channelId}/moh.
* \param get_params GET parameters in the HTTP request. * \param get_params GET parameters in the HTTP request.
* \param path_vars Path variables extracted from the request. * \param path_vars Path variables extracted from the request.
* \param headers HTTP headers. * \param headers HTTP headers.
@ -786,13 +786,13 @@ static void ast_ari_moh_start_channel_cb(
is_valid = ast_ari_validate_void( is_valid = ast_ari_validate_void(
response->message); response->message);
} else { } else {
ast_log(LOG_ERROR, "Invalid error response %d for /channels/{channelId}/mohstart\n", code); ast_log(LOG_ERROR, "Invalid error response %d for /channels/{channelId}/moh\n", code);
is_valid = 0; is_valid = 0;
} }
} }
if (!is_valid) { if (!is_valid) {
ast_log(LOG_ERROR, "Response validation failed for /channels/{channelId}/mohstart\n"); ast_log(LOG_ERROR, "Response validation failed for /channels/{channelId}/moh\n");
ast_ari_response_error(response, 500, ast_ari_response_error(response, 500,
"Internal Server Error", "Response validation failed"); "Internal Server Error", "Response validation failed");
} }
@ -802,7 +802,7 @@ fin: __attribute__((unused))
return; return;
} }
/*! /*!
* \brief Parameter parsing callback for /channels/{channelId}/mohstop. * \brief Parameter parsing callback for /channels/{channelId}/moh.
* \param get_params GET parameters in the HTTP request. * \param get_params GET parameters in the HTTP request.
* \param path_vars Path variables extracted from the request. * \param path_vars Path variables extracted from the request.
* \param headers HTTP headers. * \param headers HTTP headers.
@ -844,13 +844,13 @@ static void ast_ari_moh_stop_channel_cb(
is_valid = ast_ari_validate_void( is_valid = ast_ari_validate_void(
response->message); response->message);
} else { } else {
ast_log(LOG_ERROR, "Invalid error response %d for /channels/{channelId}/mohstop\n", code); ast_log(LOG_ERROR, "Invalid error response %d for /channels/{channelId}/moh\n", code);
is_valid = 0; is_valid = 0;
} }
} }
if (!is_valid) { if (!is_valid) {
ast_log(LOG_ERROR, "Response validation failed for /channels/{channelId}/mohstop\n"); ast_log(LOG_ERROR, "Response validation failed for /channels/{channelId}/moh\n");
ast_ari_response_error(response, 500, ast_ari_response_error(response, 500,
"Internal Server Error", "Response validation failed"); "Internal Server Error", "Response validation failed");
} }
@ -1199,33 +1199,17 @@ static struct stasis_rest_handlers channels_channelId_hold = {
.path_segment = "hold", .path_segment = "hold",
.callbacks = { .callbacks = {
[AST_HTTP_POST] = ast_ari_hold_channel_cb, [AST_HTTP_POST] = ast_ari_hold_channel_cb,
[AST_HTTP_DELETE] = ast_ari_unhold_channel_cb,
}, },
.num_children = 0, .num_children = 0,
.children = { } .children = { }
}; };
/*! \brief REST handler for /api-docs/channels.{format} */ /*! \brief REST handler for /api-docs/channels.{format} */
static struct stasis_rest_handlers channels_channelId_unhold = { static struct stasis_rest_handlers channels_channelId_moh = {
.path_segment = "unhold", .path_segment = "moh",
.callbacks = {
[AST_HTTP_POST] = ast_ari_unhold_channel_cb,
},
.num_children = 0,
.children = { }
};
/*! \brief REST handler for /api-docs/channels.{format} */
static struct stasis_rest_handlers channels_channelId_mohstart = {
.path_segment = "mohstart",
.callbacks = { .callbacks = {
[AST_HTTP_POST] = ast_ari_moh_start_channel_cb, [AST_HTTP_POST] = ast_ari_moh_start_channel_cb,
}, [AST_HTTP_DELETE] = ast_ari_moh_stop_channel_cb,
.num_children = 0,
.children = { }
};
/*! \brief REST handler for /api-docs/channels.{format} */
static struct stasis_rest_handlers channels_channelId_mohstop = {
.path_segment = "mohstop",
.callbacks = {
[AST_HTTP_POST] = ast_ari_moh_stop_channel_cb,
}, },
.num_children = 0, .num_children = 0,
.children = { } .children = { }
@ -1266,8 +1250,8 @@ static struct stasis_rest_handlers channels_channelId = {
[AST_HTTP_GET] = ast_ari_get_channel_cb, [AST_HTTP_GET] = ast_ari_get_channel_cb,
[AST_HTTP_DELETE] = ast_ari_delete_channel_cb, [AST_HTTP_DELETE] = ast_ari_delete_channel_cb,
}, },
.num_children = 12, .num_children = 10,
.children = { &channels_channelId_dial,&channels_channelId_continue,&channels_channelId_answer,&channels_channelId_mute,&channels_channelId_unmute,&channels_channelId_hold,&channels_channelId_unhold,&channels_channelId_mohstart,&channels_channelId_mohstop,&channels_channelId_play,&channels_channelId_record,&channels_channelId_variable, } .children = { &channels_channelId_dial,&channels_channelId_continue,&channels_channelId_answer,&channels_channelId_mute,&channels_channelId_unmute,&channels_channelId_hold,&channels_channelId_moh,&channels_channelId_play,&channels_channelId_record,&channels_channelId_variable, }
}; };
/*! \brief REST handler for /api-docs/channels.{format} */ /*! \brief REST handler for /api-docs/channels.{format} */
static struct stasis_rest_handlers channels = { static struct stasis_rest_handlers channels = {

@ -433,11 +433,11 @@
] ]
}, },
{ {
"path": "/channels/{channelId}/unhold", "path": "/channels/{channelId}/hold",
"description": "Remove a channel from hold", "description": "Remove a channel from hold",
"operations": [ "operations": [
{ {
"httpMethod": "POST", "httpMethod": "DELETE",
"summary": "Remove a channel from hold.", "summary": "Remove a channel from hold.",
"nickname": "unholdChannel", "nickname": "unholdChannel",
"responseClass": "void", "responseClass": "void",
@ -465,7 +465,7 @@
] ]
}, },
{ {
"path": "/channels/{channelId}/mohstart", "path": "/channels/{channelId}/moh",
"description": "Play music on hold to a channel", "description": "Play music on hold to a channel",
"operations": [ "operations": [
{ {
@ -506,11 +506,11 @@
] ]
}, },
{ {
"path": "/channels/{channelId}/mohstop", "path": "/channels/{channelId}/moh",
"description": "Stop playing music on hold to a channel", "description": "Stop playing music on hold to a channel",
"operations": [ "operations": [
{ {
"httpMethod": "POST", "httpMethod": "DELETE",
"summary": "Stop playing music on hold to a channel.", "summary": "Stop playing music on hold to a channel.",
"nickname": "mohStopChannel", "nickname": "mohStopChannel",
"responseClass": "void", "responseClass": "void",

Loading…
Cancel
Save