mirror of
https://github.com/asterisk/asterisk.git
synced 2025-10-12 15:45:18 +00:00
Shuffle RESTful URL's around.
This patch moves the RESTful URL's around to more appropriate locations for release. The /stasis URL's are moved to /ari, since Asterisk REST Interface was a more appropriate name than Stasis-HTTP. (Most of the code still has stasis_http references, but they will be cleaned up after there are no more outstanding branches that would have merge conflicts with such a change). A larger change was moving the ARI events WebSocket off of the shared /ws URL to its permanent home on /ari/events. The Swagger code generator was extended to handle "upgrade: websocket" and "websocketProtocol:" attributes on an operation. The WebSocket module was modified to better handle WebSocket servers that have a single registered protocol handler. If a client connections does not specify the Sec-WebSocket-Protocol header, and the server has a single protocol handler registered, the WebSocket server will go ahead and accept the client for that subprotocol. (closes issue ASTERISK-21857) Review: https://reviewboard.asterisk.org/r/2621/ git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@393528 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
@@ -218,6 +218,16 @@ class Operation(Stringify):
|
||||
self.http_method = op_json.get('httpMethod')
|
||||
self.nickname = op_json.get('nickname')
|
||||
self.response_class = op_json.get('responseClass')
|
||||
# Specifying WebSocket URL's is our own extension
|
||||
self.is_websocket = op_json.get('upgrade') == 'websocket'
|
||||
self.is_req = not self.is_websocket
|
||||
|
||||
if self.is_websocket:
|
||||
self.websocket_protocol = op_json.get('websocketProtocol')
|
||||
if self.http_method != 'GET':
|
||||
raise ValueError(
|
||||
"upgrade: websocket is only valid on GET operations")
|
||||
|
||||
params_json = op_json.get('parameters') or []
|
||||
self.parameters = [
|
||||
Parameter().load(j, processor, context) for j in params_json]
|
||||
@@ -262,6 +272,8 @@ class Api(Stringify):
|
||||
op_json = api_json.get('operations')
|
||||
self.operations = [
|
||||
Operation().load(j, processor, context) for j in op_json]
|
||||
self.has_websocket = \
|
||||
filter(lambda op: op.is_websocket, self.operations) != []
|
||||
return self
|
||||
|
||||
|
||||
@@ -353,7 +365,8 @@ class ApiDeclaration(Stringify):
|
||||
.replace(".json", ".{format}")
|
||||
|
||||
if self.resource_path != expected_resource_path:
|
||||
print "%s != %s" % (self.resource_path, expected_resource_path)
|
||||
print >> sys.stderr, \
|
||||
"%s != %s" % (self.resource_path, expected_resource_path)
|
||||
raise SwaggerError("resourcePath has incorrect value", context)
|
||||
|
||||
return self
|
||||
|
Reference in New Issue
Block a user