Skip to content

Commit 97fdf38

Browse files
author
Sebastian Molenda
committed
Native sync working
1 parent ba33368 commit 97fdf38

File tree

4 files changed

+20
-16
lines changed

4 files changed

+20
-16
lines changed

pubnub/request_handlers/requests_handler.py

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import logging
22
import threading
33
import requests
4+
import httpx
45
import json # noqa # pylint: disable=W0611
56
import urllib
67

@@ -30,12 +31,13 @@ class RequestsRequestHandler(BaseRequestHandler):
3031
ENDPOINT_THREAD_COUNTER: int = 0
3132

3233
def __init__(self, pubnub):
33-
self.session = Session()
34+
self.session = httpx.Client()
35+
# self.session = Session()
3436

35-
self.session.mount('http://%s' % pubnub.config.origin, HTTPAdapter(max_retries=1, pool_maxsize=500))
36-
self.session.mount('https://%s' % pubnub.config.origin, HTTPAdapter(max_retries=1, pool_maxsize=500))
37-
self.session.mount('http://%s/v2/subscribe' % pubnub.config.origin, HTTPAdapter(pool_maxsize=500))
38-
self.session.mount('https://%s/v2/subscribe' % pubnub.config.origin, HTTPAdapter(pool_maxsize=500))
37+
# self.session.mount('http://%s' % pubnub.config.origin, HTTPAdapter(max_retries=1, pool_maxsize=500))
38+
# self.session.mount('https://%s' % pubnub.config.origin, HTTPAdapter(max_retries=1, pool_maxsize=500))
39+
# self.session.mount('http://%s/v2/subscribe' % pubnub.config.origin, HTTPAdapter(pool_maxsize=500))
40+
# self.session.mount('https://%s/v2/subscribe' % pubnub.config.origin, HTTPAdapter(pool_maxsize=500))
3941

4042
self.pubnub = pubnub
4143

@@ -154,8 +156,7 @@ def _build_envelope(self, p_options, e_options):
154156
exception=e))
155157

156158
if res is not None:
157-
url = urllib.parse.urlparse(res.url)
158-
query = urllib.parse.parse_qs(url.query)
159+
query = urllib.parse.parse_qs(res.url.query)
159160
uuid = None
160161
auth_key = None
161162

@@ -167,14 +168,14 @@ def _build_envelope(self, p_options, e_options):
167168

168169
response_info = ResponseInfo(
169170
status_code=res.status_code,
170-
tls_enabled='https' == url.scheme,
171-
origin=url.hostname,
171+
tls_enabled='https' == res.url.scheme,
172+
origin=res.url.host,
172173
uuid=uuid,
173174
auth_key=auth_key,
174175
client_request=res.request
175176
)
176177

177-
if not res.ok:
178+
if res.status_code not in [200, 204, 307]:
178179
if res.status_code == 403:
179180
status_category = PNStatusCategory.PNAccessDeniedCategory
180181

@@ -241,7 +242,7 @@ def _invoke_request(self, p_options, e_options, base_origin):
241242
"url": url,
242243
"params": e_options.query_string,
243244
"timeout": (e_options.connect_timeout, e_options.request_timeout),
244-
"allow_redirects": e_options.allow_redirects
245+
"follow_redirects": e_options.allow_redirects
245246
}
246247

247248
if e_options.is_post() or e_options.is_patch():

setup.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
install_requires=[
3232
'pycryptodomex>=3.3',
3333
'requests>=2.4',
34+
'httpx>=0.18',
3435
'cbor2',
3536
'aiohttp'
3637
],

tests/integrational/native_sync/test_file_upload.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
from urllib.parse import parse_qs, urlparse
22
import pytest
3+
import urllib
34

45
from Cryptodome.Cipher import AES
56
from unittest.mock import patch
@@ -153,7 +154,7 @@ def test_get_file_url_has_auth_key_in_url_and_signature(file_upload_test_data):
153154
.file_id("random_file_id") \
154155
.file_name("random_file_name").sync()
155156

156-
assert "auth=test_auth_key" in file_url_envelope.status.client_request.url
157+
assert "auth=test_auth_key" in str(file_url_envelope.status.client_request.url)
157158

158159

159160
@pn_vcr.use_cassette(
@@ -220,7 +221,8 @@ def test_publish_file_message_with_overriding_time_token():
220221
.ttl(222).sync()
221222

222223
assert isinstance(envelope.result, PNPublishFileMessageResult)
223-
assert "ptto" in envelope.status.client_request.url
224+
225+
assert "ptto" in urllib.parse.parse_qs(envelope.status.client_request.url.query.decode())
224226

225227

226228
@pn_vcr.use_cassette(

tests/integrational/native_sync/test_publish.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import logging
22
import unittest
3-
from urllib.parse import parse_qs, urlparse
3+
import urllib
44

55
import pubnub
66
from pubnub.exceptions import PubNubException
@@ -328,8 +328,8 @@ def test_publish_with_ptto_and_replicate(self):
328328
.sync()
329329

330330
assert isinstance(env.result, PNPublishResult)
331-
assert "ptto" in env.status.client_request.url
332-
assert "norep" in env.status.client_request.url
331+
assert "ptto" in urllib.parse.parse_qs(env.status.client_request.url.query.decode())
332+
assert "norep" in urllib.parse.parse_qs(env.status.client_request.url.query.decode())
333333

334334
@pn_vcr.use_cassette(
335335
'tests/integrational/fixtures/native_sync/publish/publish_with_single_quote_message.yaml',

0 commit comments

Comments
 (0)