Skip to content

Commit c19d432

Browse files
committed
Fixed subscriptions if document and not query is provided
1 parent 759b1c8 commit c19d432

File tree

1 file changed

+16
-13
lines changed
  • src/graphql_server/subscriptions/protocols/graphql_transport_ws

1 file changed

+16
-13
lines changed

src/graphql_server/subscriptions/protocols/graphql_transport_ws/handlers.py

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -216,13 +216,20 @@ async def handle_subscribe(self, message: SubscribeMessage) -> None:
216216
await self.websocket.close(code=4401, reason="Unauthorized")
217217
return
218218

219-
try:
220-
graphql_document = parse(message["payload"]["query"])
221-
except GraphQLSyntaxError as exc:
222-
await self.websocket.close(code=4400, reason=exc.message)
223-
return
219+
request_data = await self.view.get_graphql_request_data(
220+
self.websocket, self.context, message["payload"], "subscription"
221+
)
224222

225-
operation_name = message["payload"].get("operationName")
223+
if request_data.document is not None:
224+
graphql_document = request_data.document
225+
else:
226+
try:
227+
graphql_document = parse(request_data.query)
228+
except GraphQLSyntaxError as exc:
229+
await self.websocket.close(code=4400, reason=exc.message)
230+
return
231+
232+
operation_name = request_data.operation_name
226233

227234
try:
228235
operation_type = get_operation_type(graphql_document, operation_name)
@@ -248,15 +255,11 @@ async def handle_subscribe(self, message: SubscribeMessage) -> None:
248255

249256
if self.debug: # pragma: no cover
250257
pretty_print_graphql_operation(
251-
message["payload"].get("operationName"),
252-
message["payload"]["query"],
253-
message["payload"].get("variables"),
258+
request_data.operation_name,
259+
request_data.query,
260+
request_data.variables,
254261
)
255262

256-
request_data = await self.view.get_graphql_request_data(
257-
self.websocket, self.context, message["payload"], "subscription"
258-
)
259-
260263
operation = Operation(
261264
self,
262265
message["id"],

0 commit comments

Comments
 (0)