summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/asterisk/stasis_http.h2
-rw-r--r--res/res_stasis_http.c6
-rw-r--r--res/res_stasis_playback.c3
-rw-r--r--res/stasis_http/resource_channels.c11
4 files changed, 15 insertions, 7 deletions
diff --git a/include/asterisk/stasis_http.h b/include/asterisk/stasis_http.h
index f81a206e6..f20a90106 100644
--- a/include/asterisk/stasis_http.h
+++ b/include/asterisk/stasis_http.h
@@ -166,7 +166,7 @@ void stasis_http_response_no_content(struct stasis_http_response *response);
* \brief Fill in a <tt>Created</tt> (201) \a stasis_http_response.
*/
void stasis_http_response_created(struct stasis_http_response *response,
- const char *url);
+ const char *url, struct ast_json *message);
/*!
* \brief Fill in \a response with a 500 message for allocation failures.
diff --git a/res/res_stasis_http.c b/res/res_stasis_http.c
index 63e2601e8..a4ea30567 100644
--- a/res/res_stasis_http.c
+++ b/res/res_stasis_http.c
@@ -311,7 +311,7 @@ void stasis_http_response_error(struct stasis_http_response *response,
void stasis_http_response_ok(struct stasis_http_response *response,
struct ast_json *message)
{
- response->message = message;
+ response->message = ast_json_ref(message);
response->response_code = 200;
response->response_text = "OK";
}
@@ -331,9 +331,9 @@ void stasis_http_response_alloc_failed(struct stasis_http_response *response)
}
void stasis_http_response_created(struct stasis_http_response *response,
- const char *url)
+ const char *url, struct ast_json *message)
{
- response->message = ast_json_null();
+ response->message = ast_json_ref(message);
response->response_code = 201;
response->response_text = "Created";
ast_str_append(&response->headers, 0, "Location: %s\r\n", url);
diff --git a/res/res_stasis_playback.c b/res/res_stasis_playback.c
index 842fc0e1d..a5f7303d6 100644
--- a/res/res_stasis_playback.c
+++ b/res/res_stasis_playback.c
@@ -266,7 +266,7 @@ struct stasis_app_playback *stasis_app_control_play_uri(
stasis_app_control_get_channel_id(control), uri);
playback = ao2_alloc(sizeof(*playback), playback_dtor);
- if (!playback || ast_string_field_init(playback, 128) ){
+ if (!playback || ast_string_field_init(playback, 128)) {
return NULL;
}
@@ -330,7 +330,6 @@ struct ast_json *stasis_app_playback_to_json(
return NULL;
}
-
json = ast_json_pack("{s: s, s: s, s: s, s: s}",
"id", playback->id,
"media_uri", playback->media,
diff --git a/res/stasis_http/resource_channels.c b/res/stasis_http/resource_channels.c
index 0b9c2a61a..7dfb0c0a4 100644
--- a/res/stasis_http/resource_channels.c
+++ b/res/stasis_http/resource_channels.c
@@ -145,6 +145,7 @@ void stasis_http_play_on_channel(struct ast_variable *headers,
RAII_VAR(struct ast_channel_snapshot *, snapshot, NULL, ao2_cleanup);
RAII_VAR(struct stasis_app_playback *, playback, NULL, ao2_cleanup);
RAII_VAR(char *, playback_url, NULL, ast_free);
+ RAII_VAR(struct ast_json *, json, NULL, ast_json_unref);
const char *language;
ast_assert(response != NULL);
@@ -197,7 +198,15 @@ void stasis_http_play_on_channel(struct ast_variable *headers,
return;
}
- stasis_http_response_created(response, playback_url);
+ json = stasis_app_playback_to_json(playback);
+ if (!json) {
+ stasis_http_response_error(
+ response, 500, "Internal Server Error",
+ "Out of memory");
+ return;
+ }
+
+ stasis_http_response_created(response, playback_url, json);
}
void stasis_http_record_channel(struct ast_variable *headers, struct ast_record_channel_args *args, struct stasis_http_response *response)
{