Skip to content

Commit 62c4f1d

Browse files
authored
Fixed json serializer for serializers that already serialize to bytes (like orjson) (#224)
1 parent 6b0ade6 commit 62c4f1d

File tree

1 file changed

+42
-16
lines changed

1 file changed

+42
-16
lines changed

src/socketify/socketify.py

Lines changed: 42 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1349,7 +1349,9 @@ def send_fragment(self, message, compress=False):
13491349
lib.uws_ws_send_fragment(self.app.SSL, self.ws, b"", 0, compress)
13501350
return self
13511351
else:
1352-
data = self.app._json_serializer.dumps(message).encode("utf-8")
1352+
data = self.app._json_serializer.dumps(message)
1353+
if isinstance(data, str):
1354+
data = data.encode("utf-8")
13531355

13541356
return SendStatus(
13551357
lib.uws_ws_send_fragment(
@@ -1370,7 +1372,9 @@ def send_last_fragment(self, message, compress=False):
13701372
lib.uws_ws_send_last_fragment(self.app.SSL, self.ws, b"", 0, compress)
13711373
return self
13721374
else:
1373-
data = self.app._json_serializer.dumps(message).encode("utf-8")
1375+
data = self.app._json_serializer.dumps(message)
1376+
if isinstance(data, str):
1377+
data = data.encode("utf-8")
13741378

13751379
return SendStatus(
13761380
lib.uws_ws_send_last_fragment(
@@ -1393,7 +1397,9 @@ def send_first_fragment(self, message, opcode=OpCode.BINARY, compress=False):
13931397
)
13941398
return self
13951399
else:
1396-
data = self.app._json_serializer.dumps(message).encode("utf-8")
1400+
data = self.app._json_serializer.dumps(message)
1401+
if isinstance(data, str):
1402+
data = data.encode("utf-8")
13971403

13981404
return SendStatus(
13991405
lib.uws_ws_send_first_fragment_with_opcode(
@@ -1420,7 +1426,9 @@ def send(self, message, opcode=OpCode.BINARY, compress=False, fin=True):
14201426
)
14211427
return self
14221428
else:
1423-
data = self.app._json_serializer.dumps(message).encode("utf-8")
1429+
data = self.app._json_serializer.dumps(message)
1430+
if isinstance(data, str):
1431+
data = data.encode("utf-8")
14241432

14251433
return SendStatus(
14261434
lib.uws_ws_send_with_options(
@@ -1447,7 +1455,9 @@ def end(self, code=0, message=None):
14471455
lib.uws_ws_end(self.app.SSL, self.ws, b"", 0)
14481456
return self
14491457
else:
1450-
data = self.app._json_serializer.dumps(message).encode("utf-8")
1458+
data = self.app._json_serializer.dumps(message)
1459+
if isinstance(data, str):
1460+
data = data.encode("utf-8")
14511461

14521462
lib.uws_ws_end(self.app.SSL, self.ws, code, data, len(data))
14531463
finally:
@@ -1851,7 +1861,9 @@ def send(
18511861
)
18521862
return self
18531863
else:
1854-
data = self.app._json_serializer.dumps(message).encode("utf-8")
1864+
data = self.app._json_serializer.dumps(message)
1865+
if isinstance(data, str):
1866+
data = data.encode("utf-8")
18551867
content_type = b"application/json"
18561868

18571869
if isinstance(status, int):
@@ -1912,7 +1924,9 @@ def end(self, message, end_connection=False):
19121924
return self
19131925
else:
19141926
self.write_header(b"Content-Type", b"application/json")
1915-
data = self.app._json_serializer.dumps(message).encode("utf-8")
1927+
data = self.app._json_serializer.dumps(message)
1928+
if isinstance(data, str):
1929+
data = data.encode("utf-8")
19161930
lib.uws_res_end(
19171931
self.app.SSL, self.res, data, len(data), 1 if end_connection else 0
19181932
)
@@ -1955,9 +1969,9 @@ def write_status(self, status_or_status_text):
19551969
elif isinstance(status_or_status_text, bytes):
19561970
data = status_or_status_text
19571971
else:
1958-
data = self.app._json_serializer.dumps(status_or_status_text).encode(
1959-
"utf-8"
1960-
)
1972+
data = self.app._json_serializer.dumps(status_or_status_text)
1973+
if isinstance(data, str):
1974+
data = data.encode("utf-8")
19611975

19621976
lib.uws_res_write_status(self.app.SSL, self.res, data, len(data))
19631977
return self
@@ -1970,7 +1984,9 @@ def write_header(self, key, value):
19701984
elif isinstance(key, bytes):
19711985
key_data = key
19721986
else:
1973-
key_data = self.app._json_serializer.dumps(key).encode("utf-8")
1987+
key_data = self.app._json_serializer.dumps(key)
1988+
if isinstance(key_data, str):
1989+
key_data = key_data.encode("utf-8")
19741990

19751991
if isinstance(value, int):
19761992
lib.uws_res_write_header_int(
@@ -1985,7 +2001,9 @@ def write_header(self, key, value):
19852001
elif isinstance(value, bytes):
19862002
value_data = value
19872003
else:
1988-
value_data = self.app._json_serializer.dumps(value).encode("utf-8")
2004+
value_data = self.app._json_serializer.dumps(value)
2005+
if isinstance(value_data, str):
2006+
value_data = value_data.encode("utf-8")
19892007
lib.uws_res_write_header(
19902008
self.app.SSL,
19912009
self.res,
@@ -2014,7 +2032,9 @@ def write(self, message):
20142032
elif isinstance(message, bytes):
20152033
data = message
20162034
else:
2017-
data = self.app._json_serializer.dumps(message).encode("utf-8")
2035+
data = self.app._json_serializer.dumps(message)
2036+
if isinstance(data, str):
2037+
data = data.encode("utf-8")
20182038
lib.uws_res_write(self.app.SSL, self.res, data, len(data))
20192039
return self
20202040

@@ -2461,7 +2481,9 @@ def get_header(self, lower_case_header):
24612481
elif isinstance(lower_case_header, bytes):
24622482
data = lower_case_header
24632483
else:
2464-
data = self.app._json_serializer.dumps(lower_case_header).encode("utf-8")
2484+
data = self.app._json_serializer.dumps(lower_case_header)
2485+
if isinstance(data, str):
2486+
data = data.encode("utf-8")
24652487

24662488
buffer = ffi.new("char**")
24672489
length = lib.uws_req_get_header(self.req, data, len(data), buffer)
@@ -2498,7 +2520,9 @@ def get_query(self, key):
24982520
elif isinstance(key, bytes):
24992521
key_data = key
25002522
else:
2501-
key_data = self.app._json_serializer.dumps(key).encode("utf-8")
2523+
key_data = self.app._json_serializer.dumps(key)
2524+
if isinstance(key_data, str):
2525+
key_data = key_data.encode("utf-8")
25022526

25032527
length = lib.uws_req_get_query(self.req, key_data, len(key_data), buffer)
25042528
buffer_address = ffi.addressof(buffer, 0)[0]
@@ -3012,7 +3036,9 @@ def publish(self, topic, message, opcode=OpCode.BINARY, compress=False):
30123036
elif message is None:
30133037
message_data = b""
30143038
else:
3015-
message_data = self._json_serializer.dumps(message).encode("utf-8")
3039+
message_data = self._json_serializer.dumps(message)
3040+
if isinstance(message_data, str):
3041+
message_data = message_data.encode("utf-8")
30163042

30173043
return bool(
30183044
lib.uws_publish(

0 commit comments

Comments
 (0)