summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Bruhin <git@the-compiler.org>2018-05-03 09:09:27 +0200
committerFlorian Bruhin <git@the-compiler.org>2018-05-03 09:09:27 +0200
commit91aa9f6c0ca714de09b7fb62adf142f37c25e50f (patch)
treeff802c31942f24bf1b547ac6a99684c0729083fe
parentd6cacdb42fe83a0569e0c278256c480405f938e2 (diff)
parent19554ba4a13f7e75ad5b4b338f8dbb80f9b9e50c (diff)
downloadqutebrowser-91aa9f6c0ca714de09b7fb62adf142f37c25e50f.tar.gz
qutebrowser-91aa9f6c0ca714de09b7fb62adf142f37c25e50f.zip
Merge remote-tracking branch 'origin/pr/3884'
-rw-r--r--qutebrowser/misc/autoupdate.py2
-rw-r--r--qutebrowser/misc/httpclient.py19
-rw-r--r--tests/unit/misc/test_autoupdate.py2
3 files changed, 19 insertions, 4 deletions
diff --git a/qutebrowser/misc/autoupdate.py b/qutebrowser/misc/autoupdate.py
index d056d61b6..d223bd366 100644
--- a/qutebrowser/misc/autoupdate.py
+++ b/qutebrowser/misc/autoupdate.py
@@ -45,7 +45,7 @@ class PyPIVersionClient(QObject):
arg: The error message, as string.
"""
- API_URL = 'https://pypi.python.org/pypi/{}/json'
+ API_URL = 'https://pypi.org/pypi/{}/json'
success = pyqtSignal(str)
error = pyqtSignal(str)
diff --git a/qutebrowser/misc/httpclient.py b/qutebrowser/misc/httpclient.py
index b0b41af76..0b162befd 100644
--- a/qutebrowser/misc/httpclient.py
+++ b/qutebrowser/misc/httpclient.py
@@ -28,6 +28,21 @@ from PyQt5.QtNetwork import (QNetworkAccessManager, QNetworkRequest,
QNetworkReply)
+class HTTPRequest(QNetworkRequest):
+ """A QNetworkRquest that follows (secure) redirects by default."""
+
+ def __init__(self, *args, **kwargs):
+ super().__init__(*args, **kwargs)
+ try:
+ self.setAttribute(QNetworkRequest.RedirectPolicyAttribute,
+ QNetworkRequest.NoLessSafeRedirectPolicy)
+ except AttributeError:
+ # RedirectPolicyAttribute was introduced in 5.9 to replace
+ # FollowRedirectsAttribute.
+ self.setAttribute(QNetworkRequest.FollowRedirectsAttribute,
+ True)
+
+
class HTTPClient(QObject):
"""An HTTP client based on QNetworkAccessManager.
@@ -63,7 +78,7 @@ class HTTPClient(QObject):
if data is None:
data = {}
encoded_data = urllib.parse.urlencode(data).encode('utf-8')
- request = QNetworkRequest(url)
+ request = HTTPRequest(url)
request.setHeader(QNetworkRequest.ContentTypeHeader,
'application/x-www-form-urlencoded;charset=utf-8')
reply = self._nam.post(request, encoded_data)
@@ -77,7 +92,7 @@ class HTTPClient(QObject):
Args:
url: The URL to access, as QUrl.
"""
- request = QNetworkRequest(url)
+ request = HTTPRequest(url)
reply = self._nam.get(request)
self._handle_reply(reply)
diff --git a/tests/unit/misc/test_autoupdate.py b/tests/unit/misc/test_autoupdate.py
index 4f5a9dc0e..d4a69a115 100644
--- a/tests/unit/misc/test_autoupdate.py
+++ b/tests/unit/misc/test_autoupdate.py
@@ -67,7 +67,7 @@ def test_get_version_success(qtbot):
with qtbot.waitSignal(client.success):
client.get_version('test')
- assert http_stub.url == QUrl('https://pypi.python.org/pypi/test/json')
+ assert http_stub.url == QUrl(client.API_URL.format('test'))
def test_get_version_error(qtbot):