Skip to content

Commit 7b21f0f

Browse files
committed
Move execute back to base
1 parent e4b3d9f commit 7b21f0f

3 files changed

Lines changed: 9 additions & 8 deletions

File tree

graphql_ws/base.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import json
22
from collections import OrderedDict
33

4-
from graphql import format_error
4+
from graphql import format_error, graphql
55

66
from .constants import (
77
GQL_CONNECTION_ERROR,
@@ -57,6 +57,9 @@ def __init__(self, schema, keep_alive=True):
5757
self.schema = schema
5858
self.keep_alive = keep_alive
5959

60+
def execute(self, params):
61+
return graphql(self.schema, **dict(params, allow_subscriptions=True))
62+
6063
def process_message(self, connection_context, parsed_message):
6164
op_id = parsed_message.get("id")
6265
op_type = parsed_message.get("type")
@@ -96,11 +99,13 @@ def on_connection_terminate(self, connection_context, op_id):
9699
return connection_context.close(1011)
97100

98101
def get_graphql_params(self, connection_context, payload):
102+
context = payload.get('context') or {}
103+
context.setdefault('request_context', connection_context.request_context)
99104
return {
100105
"request_string": payload.get("query"),
101106
"variable_values": payload.get("variables"),
102107
"operation_name": payload.get("operationName"),
103-
"context_value": payload.get("context"),
108+
"context_value": context,
104109
"executor": self.graphql_executor(),
105110
}
106111

graphql_ws/base_async.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ async def on_connection_init(self, connection_context, op_id, payload):
7979
await connection_context.close(1011)
8080

8181
async def on_start(self, connection_context, op_id, params):
82-
execution_result = self.execute(connection_context.request_context, params)
82+
execution_result = self.execute(params)
8383

8484
if isawaitable(execution_result):
8585
execution_result = await execution_result

graphql_ws/base_sync.py

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
from graphql import graphql
21
from graphql.execution.executors.sync import SyncExecutor
32
from rx import Observable, Observer
43

@@ -20,9 +19,6 @@ def unsubscribe(self, connection_context, op_id):
2019
def on_operation_complete(self, connection_context, op_id):
2120
pass
2221

23-
def execute(self, request_context, params):
24-
return graphql(self.schema, **dict(params, allow_subscriptions=True))
25-
2622
def handle(self, ws, request_context=None):
2723
raise NotImplementedError("handle method not implemented")
2824

@@ -51,7 +47,7 @@ def on_stop(self, connection_context, op_id):
5147

5248
def on_start(self, connection_context, op_id, params):
5349
try:
54-
execution_result = self.execute(connection_context.request_context, params)
50+
execution_result = self.execute(params)
5551
assert isinstance(
5652
execution_result, Observable
5753
), "A subscription must return an observable"

0 commit comments

Comments
 (0)