Change image/jpg Content-Type to image/jpeg.
This makes QtWebKit display images with a (nonstandard) image/jpg content-type, e.g. http://m.c.lnkd.licdn.com/mpr/mpr/p/2/005/07b/08a/018245a.jpg (instead of downloading them).
This commit is contained in:
parent
7be3976890
commit
bad9031914
@ -19,6 +19,8 @@
|
|||||||
|
|
||||||
"""Our own QNetworkAccessManager."""
|
"""Our own QNetworkAccessManager."""
|
||||||
|
|
||||||
|
from functools import partial
|
||||||
|
|
||||||
from PyQt5.QtCore import pyqtSlot, PYQT_VERSION, QCoreApplication
|
from PyQt5.QtCore import pyqtSlot, PYQT_VERSION, QCoreApplication
|
||||||
from PyQt5.QtNetwork import QNetworkAccessManager, QNetworkReply
|
from PyQt5.QtNetwork import QNetworkAccessManager, QNetworkReply
|
||||||
|
|
||||||
@ -35,6 +37,7 @@ import qutebrowser.utils.log as log
|
|||||||
from qutebrowser.network.qutescheme import QuteSchemeHandler
|
from qutebrowser.network.qutescheme import QuteSchemeHandler
|
||||||
from qutebrowser.network.schemehandler import ErrorNetworkReply
|
from qutebrowser.network.schemehandler import ErrorNetworkReply
|
||||||
from qutebrowser.utils.usertypes import PromptMode
|
from qutebrowser.utils.usertypes import PromptMode
|
||||||
|
from qutebrowser.utils.http import change_content_type
|
||||||
|
|
||||||
|
|
||||||
class NetworkManager(QNetworkAccessManager):
|
class NetworkManager(QNetworkAccessManager):
|
||||||
@ -137,7 +140,6 @@ class NetworkManager(QNetworkAccessManager):
|
|||||||
elif scheme in self._scheme_handlers:
|
elif scheme in self._scheme_handlers:
|
||||||
return self._scheme_handlers[scheme].createRequest(
|
return self._scheme_handlers[scheme].createRequest(
|
||||||
op, req, outgoing_data)
|
op, req, outgoing_data)
|
||||||
else:
|
|
||||||
if config.get('network', 'do-not-track'):
|
if config.get('network', 'do-not-track'):
|
||||||
dnt = '1'.encode('ascii')
|
dnt = '1'.encode('ascii')
|
||||||
else:
|
else:
|
||||||
@ -160,4 +162,10 @@ class NetworkManager(QNetworkAccessManager):
|
|||||||
reply = super().createRequest(op, req, outgoing_data)
|
reply = super().createRequest(op, req, outgoing_data)
|
||||||
self._requests.append(reply)
|
self._requests.append(reply)
|
||||||
reply.destroyed.connect(lambda obj: self._requests.remove(obj))
|
reply.destroyed.connect(lambda obj: self._requests.remove(obj))
|
||||||
|
# Some servers (e.g. the LinkedIn CDN) send a non-standard image/jpg
|
||||||
|
# header for jpg images. We change this to image/jpeg (defined in RFC
|
||||||
|
# 1341 section 7.5: https://tools.ietf.org/html/rfc1341) so QtWebKit
|
||||||
|
# displays this instead of downloading it.
|
||||||
|
reply.metaDataChanged.connect(partial(change_content_type, reply,
|
||||||
|
{'image/jpg': 'image/jpeg'}))
|
||||||
return reply
|
return reply
|
||||||
|
@ -103,7 +103,7 @@ def change_content_type(reply, mapping):
|
|||||||
try:
|
try:
|
||||||
content_type = mapping[content_type]
|
content_type = mapping[content_type]
|
||||||
except KeyError:
|
except KeyError:
|
||||||
pass
|
return
|
||||||
if rest is not None:
|
if rest is not None:
|
||||||
header = ';'.join((content_type, rest))
|
header = ';'.join((content_type, rest))
|
||||||
else:
|
else:
|
||||||
|
Loading…
Reference in New Issue
Block a user