summaryrefslogtreecommitdiffstats
path: root/deluge
diff options
context:
space:
mode:
authorCalum Lind <calumlind+deluge@gmail.com>2017-02-12 11:26:31 +0000
committerCalum Lind <calumlind+deluge@gmail.com>2017-02-22 12:45:12 +0000
commitba41110c2715b2ddd259783e6891c8504c10a991 (patch)
tree465cc680f7fb8c35f7dea9fe7b1884b82a35c4a2 /deluge
parent608ecae5fd7afef7df492698636c44abda728153 (diff)
downloaddeluge-ba41110c2715b2ddd259783e6891c8504c10a991.tar.gz
deluge-ba41110c2715b2ddd259783e6891c8504c10a991.tar.bz2
deluge-ba41110c2715b2ddd259783e6891c8504c10a991.zip
[WebUI] Markup byte strings for twisted request
Diffstat (limited to 'deluge')
-rw-r--r--deluge/tests/test_web_api.py10
-rw-r--r--deluge/tests/test_webserver.py14
-rw-r--r--deluge/ui/web/auth.py8
-rw-r--r--deluge/ui/web/json_api.py2
-rw-r--r--deluge/ui/web/server.py18
5 files changed, 27 insertions, 25 deletions
diff --git a/deluge/tests/test_web_api.py b/deluge/tests/test_web_api.py
index 071c138c1..7ab6e7f17 100644
--- a/deluge/tests/test_web_api.py
+++ b/deluge/tests/test_web_api.py
@@ -164,11 +164,11 @@ class WebAPITestCase(WebServerTestBase):
"""
agent = Agent(reactor)
- bad_body = '{ method": "auth.login" }'
+ bad_body = b'{ method": "auth.login" }'
d = yield agent.request(
- 'POST',
- 'http://127.0.0.1:%s/json' % self.webserver_listen_port,
- Headers({'User-Agent': ['Twisted Web Client Example'],
- 'Content-Type': ['application/json']}),
+ b'POST',
+ b'http://127.0.0.1:%s/json' % self.webserver_listen_port,
+ Headers({b'User-Agent': [b'Twisted Web Client Example'],
+ b'Content-Type': [b'application/json']}),
FileBodyProducer(StringIO(bad_body)))
yield d
diff --git a/deluge/tests/test_webserver.py b/deluge/tests/test_webserver.py
index 6e42e4c96..a77e12b00 100644
--- a/deluge/tests/test_webserver.py
+++ b/deluge/tests/test_webserver.py
@@ -18,6 +18,8 @@ from twisted.trial.unittest import SkipTest
from twisted.web.client import Agent, FileBodyProducer
from twisted.web.http_headers import Headers
+from deluge.common import convert_to_utf8
+
from . import common
from .common import get_test_data_file
from .common_web import WebServerMockBase, WebServerTestBase
@@ -39,13 +41,13 @@ class WebServerTestCase(WebServerTestBase, WebServerMockBase):
# encoded to allow dumping the torrent info to json. Otherwise it will fail with:
# UnicodeDecodeError: 'utf8' codec can't decode byte 0xe5 in position 0: invalid continuation byte
filename = get_test_data_file('filehash_field.torrent')
+ input_file = '{"params": ["%s"], "method": "web.get_torrent_info", "id": 22}' % filename
+ headers = {'User-Agent': ['Twisted Web Client Example'],
+ 'Content-Type': ['application/json']}
+ url = 'http://127.0.0.1:%s/json' % self.webserver_listen_port
- d = yield agent.request(
- 'POST',
- 'http://127.0.0.1:%s/json' % self.webserver_listen_port,
- Headers({'User-Agent': ['Twisted Web Client Example'],
- 'Content-Type': ['application/json']}),
- FileBodyProducer(StringIO('{"params": ["%s"], "method": "web.get_torrent_info", "id": 22}' % filename)))
+ d = yield agent.request(b'POST', url.encode('utf-8'), Headers(convert_to_utf8(headers)),
+ FileBodyProducer(StringIO(input_file.encode('utf-8'))))
try:
body = yield twisted.web.client.readBody(d)
except AttributeError:
diff --git a/deluge/ui/web/auth.py b/deluge/ui/web/auth.py
index 1386ae897..be862a11d 100644
--- a/deluge/ui/web/auth.py
+++ b/deluge/ui/web/auth.py
@@ -121,8 +121,8 @@ class Auth(JSONComponent):
expires, expires_str = make_expires(self.config['session_timeout'])
checksum = str(make_checksum(session_id))
- request.addCookie('_session_id', session_id + checksum,
- path=request.base + 'json', expires=expires_str)
+ request.addCookie(b'_session_id', session_id + checksum,
+ path=request.base + b'json', expires=expires_str)
log.debug('Creating session for %s', login)
@@ -216,8 +216,8 @@ class Auth(JSONComponent):
session['expires'] = expires
_session_id = request.getCookie('_session_id')
- request.addCookie('_session_id', _session_id,
- path=request.base + 'json', expires=expires_str)
+ request.addCookie(b'_session_id', _session_id,
+ path=request.base + b'json', expires=expires_str)
if method:
if not hasattr(method, '_json_export'):
diff --git a/deluge/ui/web/json_api.py b/deluge/ui/web/json_api.py
index 9bb5279d3..96cf80aaf 100644
--- a/deluge/ui/web/json_api.py
+++ b/deluge/ui/web/json_api.py
@@ -213,7 +213,7 @@ class JSON(resource.Resource, component.Component):
if request._disconnected:
return ''
response = json.dumps(response)
- request.setHeader('content-type', 'application/x-json')
+ request.setHeader(b'content-type', b'application/x-json')
request.write(compress(response, request))
request.finish()
return server.NOT_DONE_YET
diff --git a/deluge/ui/web/server.py b/deluge/ui/web/server.py
index faac3201d..e14c89a6d 100644
--- a/deluge/ui/web/server.py
+++ b/deluge/ui/web/server.py
@@ -78,7 +78,7 @@ def rpath(*paths):
class GetText(resource.Resource):
def render(self, request):
- request.setHeader('content-type', 'text/javascript; encoding=utf-8')
+ request.setHeader(b'content-type', b'text/javascript; encoding=utf-8')
template = Template(filename=rpath('js', 'gettext.js'))
return compress(template.render(), request)
@@ -117,7 +117,7 @@ class Upload(resource.Resource):
filenames.append(fn)
log.debug('uploaded %d file(s)', len(filenames))
- request.setHeader('content-type', 'text/html')
+ request.setHeader(b'content-type', b'text/html')
request.setResponseCode(http.OK)
return compress(json.dumps({
'success': True,
@@ -138,7 +138,7 @@ class Render(resource.Resource):
filename = os.path.join('render', request.render_file)
template = Template(filename=rpath(filename))
- request.setHeader('content-type', 'text/html')
+ request.setHeader(b'content-type', b'text/html')
request.setResponseCode(http.OK)
return compress(template.render(), request)
@@ -158,9 +158,9 @@ class Tracker(resource.Resource):
def on_got_icon(self, icon, request):
if icon:
- request.setHeader('cache-control',
- 'public, must-revalidate, max-age=86400')
- request.setHeader('content-type', icon.get_mimetype())
+ request.setHeader(b'cache-control',
+ b'public, must-revalidate, max-age=86400')
+ request.setHeader(b'content-type', icon.get_mimetype())
request.setResponseCode(http.OK)
request.write(icon.get_data())
request.finish()
@@ -235,7 +235,7 @@ class LookupResource(resource.Resource, component.Component):
path = os.path.join(directory, filename)
log.debug('Serving path: %s', path)
mime_type = mimetypes.guess_type(path)
- request.setHeader('content-type', mime_type[0])
+ request.setHeader(b'content-type', mime_type[0])
with open(path, 'rb') as _file:
data = _file.read()
return compress(data, request)
@@ -395,7 +395,7 @@ class ScriptResource(resource.Resource, component.Component):
log.debug('Serving path: %s', path)
mime_type = mimetypes.guess_type(path)
- request.setHeader('content-type', mime_type[0])
+ request.setHeader(b'content-type', mime_type[0])
with open(path, 'rb') as _file:
data = _file.read()
return compress(data, request)
@@ -533,7 +533,7 @@ class TopLevel(resource.Resource):
scripts.insert(0, 'gettext.js')
template = Template(filename=rpath('index.html'))
- request.setHeader('content-type', 'text/html; charset=utf-8')
+ request.setHeader(b'content-type', b'text/html; charset=utf-8')
web_config = component.get('Web').get_config()
web_config['base'] = request.base