]> git.ipfire.org Git - thirdparty/asterisk.git/commit
ARI: REST over Websocket
authorGeorge Joseph <gjoseph@sangoma.com>
Wed, 12 Mar 2025 21:58:51 +0000 (15:58 -0600)
committerAsterisk Development Team <asteriskteam@digium.com>
Thu, 1 May 2025 12:39:48 +0000 (12:39 +0000)
commit8d69af73d6dc1d59daaa4f8e6199e55945fa3221
treea07ceb34a1b108b4c607d41a91a48891f08b338f
parentd6a1b044a8adc7a75e62cca998c4533c92f21f85
ARI: REST over Websocket

This commit adds the ability to make ARI REST requests over the same
websocket used to receive events.

For full details on how to use the new capability, visit...

https://docs.asterisk.org/Configuration/Interfaces/Asterisk-REST-Interface-ARI/ARI-REST-over-WebSocket/

Changes:

* Added utilities to http.c:
  * ast_get_http_method_from_string().
  * ast_http_parse_post_form().
* Added utilities to json.c:
  * ast_json_nvp_array_to_ast_variables().
  * ast_variables_to_json_nvp_array().
* Added definitions for new events to carry REST responses.
* Created res/ari/ari_websocket_requests.c to house the new request handlers.
* Moved non-event specific code out of res/ari/resource_events.c into
  res/ari/ari_websockets.c
* Refactored res/res_ari.c to move non-http code out of ast_ari_callback()
  (which is http specific) and into ast_ari_invoke() so it can be shared
  between both the http and websocket transports.

UpgradeNote: This commit adds the ability to make ARI REST requests over the same
websocket used to receive events.
See https://docs.asterisk.org/Configuration/Interfaces/Asterisk-REST-Interface-ARI/ARI-REST-over-WebSocket/

(cherry picked from commit 4e07d3d50f67fcb5d47f87413247ccbfd8535271)
20 files changed:
include/asterisk/ari.h
include/asterisk/http.h
include/asterisk/json.h
main/http.c
main/json.c
res/Makefile
res/ari/ari_model_validators.c
res/ari/ari_model_validators.h
res/ari/ari_websocket_requests.c [new file with mode: 0644]
res/ari/ari_websockets.c
res/ari/ari_websockets.h [new file with mode: 0644]
res/ari/internal.h
res/ari/resource_events.c
res/ari/resource_events.h
res/res_ari.c
res/res_ari_events.c
rest-api-templates/ari_resource.h.mustache
rest-api-templates/res_ari_resource.c.mustache
rest-api/api-docs/events.json
tests/test_ari.c