Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:Leap:42.3:Update
python3-musicbrainzngs
0004-Conver-the-CAA-response-data-to-unicode-be...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 0004-Conver-the-CAA-response-data-to-unicode-before-loading-via-json.patch of Package python3-musicbrainzngs
From d90967eac38ffe66e455137077e09ee16aa04c79 Mon Sep 17 00:00:00 2001 From: Wieland Hoffmann <themineo@gmail.com> Date: Thu, 15 Sep 2016 20:40:48 +0200 Subject: [PATCH] Convert the CAA response data to unicode before loading it via json HTTPResponse.read() always returns bytes, but json.loads expects a str (or unicode) object. On Python 2, this conversion happened automatically, on Python 3, it didn't, so do it explicitly. Fixes #208. Signed-off-by: Wieland Hoffmann <themineo@gmail.com> --- musicbrainzngs/caa.py | 4 +++- test/_common.py | 10 +++++++++- test/test_browse.py | 2 +- test/test_caa.py | 16 ++++++++-------- 4 files changed, 21 insertions(+), 11 deletions(-) diff --git a/musicbrainzngs/caa.py b/musicbrainzngs/caa.py index 12fa8d3..235c560 100644 --- a/musicbrainzngs/caa.py +++ b/musicbrainzngs/caa.py @@ -13,6 +13,7 @@ from musicbrainzngs import compat from musicbrainzngs import musicbrainz +from musicbrainzngs.util import _unicode hostname = "coverartarchive.org" @@ -78,7 +79,8 @@ def _caa_request(mbid, imageid=None, size=None, entitytype="release"): return resp else: # Otherwise it's json - return json.loads(resp) + data = _unicode(resp) + return json.loads(data) def get_image_list(releaseid): diff --git a/test/_common.py b/test/_common.py index e8b7713..2d33839 100644 --- a/test/_common.py +++ b/test/_common.py @@ -2,12 +2,16 @@ import time import musicbrainzngs +from musicbrainzngs import compat from os.path import join try: from urllib2 import OpenerDirector except ImportError: from urllib.request import OpenerDirector + +from io import BytesIO + try: import StringIO except ImportError: @@ -26,10 +30,14 @@ def open(self, request, body=None): self.myurl = request.get_full_url() self.headers = request.header_items() self.request = request + if self.exception: raise self.exception - else: + + if isinstance(self.response, compat.unicode): return StringIO.StringIO(self.response) + else: + return BytesIO(self.response) def get_url(self): return self.myurl diff --git a/test/test_browse.py b/test/test_browse.py index 18ed2d6..a6bf3a1 100644 --- a/test/test_browse.py +++ b/test/test_browse.py @@ -10,7 +10,7 @@ class BrowseTest(unittest.TestCase): def setUp(self): - self.opener = _common.FakeOpener("<response/>") + self.opener = _common.FakeOpener() musicbrainzngs.compat.build_opener = lambda *args: self.opener musicbrainzngs.set_useragent("a", "1") diff --git a/test/test_caa.py b/test/test_caa.py index 72f6c1d..99e2b04 100644 --- a/test/test_caa.py +++ b/test/test_caa.py @@ -13,7 +13,7 @@ class CaaTest(unittest.TestCase): def test_get_list(self): # check the url and response for a listing - resp = '{"images":[]}' + resp = b'{"images":[]}' self.opener = _common.FakeOpener(resp) musicbrainzngs.compat.build_opener = lambda *args: self.opener res = caa.get_image_list("8ec178f4-a8e8-4f22-bcba-1964466ef214") @@ -23,7 +23,7 @@ def test_get_list(self): def test_get_release_group_list(self): # check the url and response for a listing - resp = '{"images":[], "release": "foo"}' + resp = b'{"images":[], "release": "foo"}' self.opener = _common.FakeOpener(resp) musicbrainzngs.compat.build_opener = lambda *args: self.opener res = caa.get_release_group_image_list("8ec178f4-a8e8-4f22-bcba-1964466ef214") @@ -58,7 +58,7 @@ def test_set_useragent(self): """ When a useragent is set it is sent with the request """ musicbrainzngs.set_useragent("caa-test", "0.1") - resp = '{"images":[]}' + resp = b'{"images":[]}' self.opener = _common.FakeOpener(resp) musicbrainzngs.compat.build_opener = lambda *args: self.opener res = caa.get_image_list("8ec178f4-a8e8-4f22-bcba-1964466ef214") @@ -68,7 +68,7 @@ def test_set_useragent(self): self.assertEqual("caa-test/0.1 python-musicbrainzngs/%s" % _version, headers["User-agent"]) def test_coverid(self): - resp = 'some_image' + resp = b'some_image' self.opener = _common.FakeOpener(resp) musicbrainzngs.compat.build_opener = lambda *args: self.opener res = caa.get_image("8ec178f4-a8e8-4f22-bcba-1964466ef214", "1234") @@ -77,7 +77,7 @@ def test_coverid(self): self.assertEqual(resp, res) def test_get_size(self): - resp = 'some_image' + resp = b'some_image' self.opener = _common.FakeOpener(resp) musicbrainzngs.compat.build_opener = lambda *args: self.opener res = caa.get_image("8ec178f4-a8e8-4f22-bcba-1964466ef214", "1234", 250) @@ -86,7 +86,7 @@ def test_get_size(self): self.assertEqual(resp, res) def test_front(self): - resp = 'front_image' + resp = b'front_image' self.opener = _common.FakeOpener(resp) musicbrainzngs.compat.build_opener = lambda *args: self.opener res = caa.get_image_front("8ec178f4-a8e8-4f22-bcba-1964466ef214") @@ -95,7 +95,7 @@ def test_front(self): self.assertEqual(resp, res) def test_release_group_front(self): - resp = 'front_image' + resp = b'front_image' self.opener = _common.FakeOpener(resp) musicbrainzngs.compat.build_opener = lambda *args: self.opener res = caa.get_release_group_image_front("8ec178f4-a8e8-4f22-bcba-1964466ef214") @@ -104,7 +104,7 @@ def test_release_group_front(self): self.assertEqual(resp, res) def test_back(self): - resp = 'back_image' + resp = b'back_image' self.opener = _common.FakeOpener(resp) musicbrainzngs.compat.build_opener = lambda *args: self.opener res = caa.get_image_back("8ec178f4-a8e8-4f22-bcba-1964466ef214")
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor