mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-02 11:06:31 +00:00
ARI: Add the ability to download the media associated with a stored recording
This patch adds a new feature to ARI that allows a client to download the media associated with a stored recording. The new route is /recordings/stored/{name}/file, and transmits the underlying binary file using Asterisk's HTTP server's underlying file transfer facilities. Because this REST route returns non-JSON, a few small enhancements had to be made to the Python Swagger generation code, as well as the mustache templates that generate the ARI bindings. ASTERISK-26042 #close Change-Id: I49ec5c4afdec30bb665d9c977ab423b5387e0181
This commit is contained in:
@@ -82,11 +82,19 @@ int ast_ari_{{c_name}}_{{c_nickname}}_parse_body(
|
||||
* {{{notes}}}
|
||||
{{/notes}}
|
||||
*
|
||||
{{#is_binary_response}}
|
||||
* \param ser TCP/TLS session instance
|
||||
{{/is_binary_response}}
|
||||
* \param headers HTTP headers
|
||||
* \param args Swagger parameters
|
||||
* \param[out] response HTTP response
|
||||
*/
|
||||
{{^is_binary_response}}
|
||||
void ast_ari_{{c_name}}_{{c_nickname}}(struct ast_variable *headers, struct ast_ari_{{c_name}}_{{c_nickname}}_args *args, struct ast_ari_response *response);
|
||||
{{/is_binary_response}}
|
||||
{{#is_binary_response}}
|
||||
void ast_ari_{{c_name}}_{{c_nickname}}(struct ast_tcptls_session_instance *ser, struct ast_variable *headers, struct ast_ari_{{c_name}}_{{c_nickname}}_args *args, struct ast_ari_response *response);
|
||||
{{/is_binary_response}}
|
||||
{{/is_req}}
|
||||
{{#is_websocket}}
|
||||
|
||||
|
@@ -91,7 +91,12 @@ static void ast_ari_{{c_name}}_{{c_nickname}}_cb(
|
||||
#endif /* AST_DEVMODE */
|
||||
|
||||
{{> param_parsing}}
|
||||
{{^is_binary_response}}
|
||||
ast_ari_{{c_name}}_{{c_nickname}}(headers, &args, response);
|
||||
{{/is_binary_response}}
|
||||
{{#is_binary_response}}
|
||||
ast_ari_{{c_name}}_{{c_nickname}}(ser, headers, &args, response);
|
||||
{{/is_binary_response}}
|
||||
#if defined(AST_DEVMODE)
|
||||
code = response->response_code;
|
||||
|
||||
@@ -114,8 +119,14 @@ static void ast_ari_{{c_name}}_{{c_nickname}}_cb(
|
||||
ast_ari_validate_{{c_singular_name}}_fn());
|
||||
{{/is_list}}
|
||||
{{^is_list}}
|
||||
{{^is_binary_response}}
|
||||
is_valid = ast_ari_validate_{{c_name}}(
|
||||
response->message);
|
||||
{{/is_binary_response}}
|
||||
{{#is_binary_response}}
|
||||
/* No validation on a raw binary response */
|
||||
is_valid = 1;
|
||||
{{/is_binary_response}}
|
||||
{{/is_list}}
|
||||
{{/response_class}}
|
||||
} else {
|
||||
|
@@ -332,6 +332,7 @@ class SwaggerType(Stringify):
|
||||
self.is_list = None
|
||||
self.singular_name = None
|
||||
self.is_primitive = None
|
||||
self.is_binary = None
|
||||
|
||||
def load(self, type_name, processor, context):
|
||||
# Some common errors
|
||||
@@ -346,6 +347,7 @@ class SwaggerType(Stringify):
|
||||
else:
|
||||
self.singular_name = self.name
|
||||
self.is_primitive = self.singular_name in SWAGGER_PRIMITIVES
|
||||
self.is_binary = (self.singular_name == 'binary')
|
||||
processor.process_type(self, context)
|
||||
return self
|
||||
|
||||
@@ -401,6 +403,7 @@ class Operation(Stringify):
|
||||
self.has_header_parameters = self.header_parameters and True
|
||||
self.has_parameters = self.has_query_parameters or \
|
||||
self.has_path_parameters or self.has_header_parameters
|
||||
self.is_binary_response = self.response_class.is_binary
|
||||
|
||||
# Body param is different, since there's at most one
|
||||
self.body_parameter = [
|
||||
|
Reference in New Issue
Block a user