ARI: Add subscription support

This patch adds an /applications API to ARI, allowing explicit management of
Stasis applications.

 * GET /applications - list current applications
 * GET /applications/{applicationName} - get details of a specific application
 * POST /applications/{applicationName}/subscription - explicitly subscribe to
   a channel, bridge or endpoint
 * DELETE /applications/{applicationName}/subscription - explicitly unsubscribe
   from a channel, bridge or endpoint

Subscriptions work by a reference counting mechanism: if you subscript to an
event source X number of times, you must unsubscribe X number of times to stop
receiveing events for that event source.

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

(issue ASTERISK-22451)
Reported by: Matt Jordan
........

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


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@400523 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
Matthew Jordan
2013-10-04 16:01:48 +00:00
parent b52c972b17
commit 8d7873b836
21 changed files with 1722 additions and 15 deletions

View File

@@ -686,9 +686,15 @@ struct ast_json *ast_json_pack(char const *format, ...)
}
struct ast_json *ast_json_vpack(char const *format, va_list ap)
{
json_error_t error;
struct ast_json *r = NULL;
if (format) {
r = (struct ast_json *)json_vpack_ex(NULL, 0, format, ap);
r = (struct ast_json *)json_vpack_ex(&error, 0, format, ap);
if (!r) {
ast_log(LOG_ERROR,
"Error building JSON from '%s': %s.\n",
format, error.text);
}
}
return r;
}