17
17
)
18
18
19
19
import aiohttp
20
- from aiohttp import BasicAuth , Fingerprint , WSMsgType , hdrs
20
+ from aiohttp import BasicAuth , Fingerprint , WSMsgType
21
21
from aiohttp .typedefs import LooseHeaders , StrOrURL
22
22
from graphql import DocumentNode , ExecutionResult , print_ast
23
23
from multidict import CIMultiDictProxy
@@ -110,23 +110,17 @@ def __init__(
110
110
self ,
111
111
url : StrOrURL ,
112
112
* ,
113
- method : str = hdrs .METH_GET ,
114
- protocols : Collection [str ] = (),
115
- autoclose : bool = True ,
116
- autoping : bool = True ,
113
+ subprotocols : Optional [Collection [str ]] = None ,
117
114
heartbeat : Optional [float ] = None ,
118
115
auth : Optional [BasicAuth ] = None ,
119
116
origin : Optional [str ] = None ,
120
117
params : Optional [Mapping [str , str ]] = None ,
121
118
headers : Optional [LooseHeaders ] = None ,
122
119
proxy : Optional [StrOrURL ] = None ,
123
120
proxy_auth : Optional [BasicAuth ] = None ,
121
+ proxy_headers : Optional [LooseHeaders ] = None ,
124
122
ssl : Optional [Union [SSLContext , Literal [False ], Fingerprint ]] = None ,
125
123
ssl_context : Optional [SSLContext ] = None ,
126
- verify_ssl : Optional [bool ] = True ,
127
- proxy_headers : Optional [LooseHeaders ] = None ,
128
- compress : int = 0 ,
129
- max_msg_size : int = 4 * 1024 * 1024 ,
130
124
websocket_close_timeout : float = 10.0 ,
131
125
receive_timeout : Optional [float ] = None ,
132
126
ssl_close_timeout : Optional [Union [int , float ]] = 10 ,
@@ -139,32 +133,31 @@ def __init__(
139
133
pong_timeout : Optional [Union [int , float ]] = None ,
140
134
answer_pings : bool = True ,
141
135
client_session_args : Optional [Dict [str , Any ]] = None ,
136
+ connect_args : Dict [str , Any ] = {},
142
137
) -> None :
143
138
self .url : StrOrURL = url
144
- self .headers : Optional [LooseHeaders ] = headers
145
- self .auth : Optional [BasicAuth ] = auth
146
- self .autoclose : bool = autoclose
147
- self .autoping : bool = autoping
148
- self .compress : int = compress
149
139
self .heartbeat : Optional [float ] = heartbeat
150
- self .max_msg_size : int = max_msg_size
151
- self .method : str = method
140
+ self .auth : Optional [BasicAuth ] = auth
152
141
self .origin : Optional [str ] = origin
153
142
self .params : Optional [Mapping [str , str ]] = params
154
- self .protocols : Collection [str ] = protocols
143
+ self .headers : Optional [LooseHeaders ] = headers
144
+
155
145
self .proxy : Optional [StrOrURL ] = proxy
156
146
self .proxy_auth : Optional [BasicAuth ] = proxy_auth
157
147
self .proxy_headers : Optional [LooseHeaders ] = proxy_headers
158
- self . ssl_close_timeout : Optional [ Union [ int , float ]] = ssl_close_timeout
148
+
159
149
self .ssl : Optional [Union [SSLContext , Literal [False ], Fingerprint ]] = ssl
160
150
self .ssl_context : Optional [SSLContext ] = ssl_context
151
+
161
152
self .websocket_close_timeout : float = websocket_close_timeout
162
153
self .receive_timeout : Optional [float ] = receive_timeout
154
+
155
+ self .ssl_close_timeout : Optional [Union [int , float ]] = ssl_close_timeout
163
156
self .connect_timeout : Optional [Union [int , float ]] = connect_timeout
164
157
self .close_timeout : Optional [Union [int , float ]] = close_timeout
165
158
self .ack_timeout : Optional [Union [int , float ]] = ack_timeout
166
159
self .keep_alive_timeout : Optional [Union [int , float ]] = keep_alive_timeout
167
- self . verify_ssl : Optional [ bool ] = verify_ssl
160
+
168
161
self .init_payload : Dict [str , Any ] = init_payload
169
162
170
163
# We need to set an event loop here if there is none
@@ -221,12 +214,15 @@ def __init__(
221
214
"""pong_received is an asyncio Event which will fire each time
222
215
a pong is received with the graphql-ws protocol"""
223
216
224
- self .supported_subprotocols : Collection [str ] = protocols or (
217
+ self .supported_subprotocols : Collection [str ] = subprotocols or (
225
218
self .APOLLO_SUBPROTOCOL ,
226
219
self .GRAPHQLWS_SUBPROTOCOL ,
227
220
)
221
+
228
222
self .close_exception : Optional [Exception ] = None
223
+
229
224
self .client_session_args = client_session_args
225
+ self .connect_args = connect_args
230
226
231
227
def _parse_answer_graphqlws (
232
228
self , answer : Dict [str , Any ]
@@ -782,28 +778,29 @@ async def connect(self) -> None:
782
778
if self .websocket is None and not self ._connecting :
783
779
self ._connecting = True
784
780
781
+ connect_args : Dict [str , Any ] = {}
782
+
783
+ # Adding custom parameters passed from init
784
+ if self .connect_args :
785
+ connect_args .update (self .connect_args )
786
+
785
787
try :
786
788
self .websocket = await self .session .ws_connect (
787
- method = self .method ,
788
789
url = self .url ,
789
790
headers = self .headers ,
790
791
auth = self .auth ,
791
- autoclose = self .autoclose ,
792
- autoping = self .autoping ,
793
- compress = self .compress ,
794
792
heartbeat = self .heartbeat ,
795
- max_msg_size = self .max_msg_size ,
796
793
origin = self .origin ,
797
794
params = self .params ,
798
795
protocols = self .supported_subprotocols ,
799
796
proxy = self .proxy ,
800
797
proxy_auth = self .proxy_auth ,
801
798
proxy_headers = self .proxy_headers ,
799
+ timeout = self .websocket_close_timeout ,
802
800
receive_timeout = self .receive_timeout ,
803
801
ssl = self .ssl ,
804
802
ssl_context = None ,
805
- timeout = self .websocket_close_timeout ,
806
- verify_ssl = self .verify_ssl ,
803
+ ** connect_args ,
807
804
)
808
805
finally :
809
806
self ._connecting = False
0 commit comments