[asterisk-commits] dlee: trunk r389639 - in /trunk: include/asterisk/ res/ res/stasis_http/

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Thu May 23 16:46:41 CDT 2013


Author: dlee
Date: Thu May 23 16:46:38 2013
New Revision: 389639

URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=389639
Log:
stasis-http: Provide a response body for 201 created responses

Modified:
    trunk/include/asterisk/stasis_http.h
    trunk/res/res_stasis_http.c
    trunk/res/res_stasis_playback.c
    trunk/res/stasis_http/resource_channels.c

Modified: trunk/include/asterisk/stasis_http.h
URL: http://svnview.digium.com/svn/asterisk/trunk/include/asterisk/stasis_http.h?view=diff&rev=389639&r1=389638&r2=389639
==============================================================================
--- trunk/include/asterisk/stasis_http.h (original)
+++ trunk/include/asterisk/stasis_http.h Thu May 23 16:46:38 2013
@@ -166,7 +166,7 @@
  * \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.

Modified: trunk/res/res_stasis_http.c
URL: http://svnview.digium.com/svn/asterisk/trunk/res/res_stasis_http.c?view=diff&rev=389639&r1=389638&r2=389639
==============================================================================
--- trunk/res/res_stasis_http.c (original)
+++ trunk/res/res_stasis_http.c Thu May 23 16:46:38 2013
@@ -311,7 +311,7 @@
 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_created(struct stasis_http_response *response,
-	const char *url)
-{
-	response->message = ast_json_null();
+	const char *url, struct ast_json *message)
+{
+	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);

Modified: trunk/res/res_stasis_playback.c
URL: http://svnview.digium.com/svn/asterisk/trunk/res/res_stasis_playback.c?view=diff&rev=389639&r1=389638&r2=389639
==============================================================================
--- trunk/res/res_stasis_playback.c (original)
+++ trunk/res/res_stasis_playback.c Thu May 23 16:46:38 2013
@@ -266,7 +266,7 @@
 		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;
 	}
 
@@ -329,7 +329,6 @@
 	if (playback == NULL) {
 		return NULL;
 	}
-
 
 	json = ast_json_pack("{s: s, s: s, s: s, s: s}",
 		"id", playback->id,

Modified: trunk/res/stasis_http/resource_channels.c
URL: http://svnview.digium.com/svn/asterisk/trunk/res/stasis_http/resource_channels.c?view=diff&rev=389639&r1=389638&r2=389639
==============================================================================
--- trunk/res/stasis_http/resource_channels.c (original)
+++ trunk/res/stasis_http/resource_channels.c Thu May 23 16:46:38 2013
@@ -145,6 +145,7 @@
 	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 @@
 		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)
 {




More information about the asterisk-commits mailing list