From e8d08979c7c98b24db624d832d43cfe81213a0b2 Mon Sep 17 00:00:00 2001 From: Nathan Date: Mon, 4 Apr 2016 11:59:48 +0200 Subject: [PATCH] Make requests json encoding Python3 compatible --- .travis.yml | 3 ++- sixpack/sixpack.py | 15 ++++++++------- sixpack/test/test_sixpack_client.py | 5 +++-- 3 files changed, 13 insertions(+), 10 deletions(-) diff --git a/.travis.yml b/.travis.yml index 51e3971..9929f9c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,8 +1,9 @@ language: python python: - "2.7" + - "3.4" install: "pip install -r requirements.txt" -before_script: "pip install nose-cov" +before_script: "pip install nose-cov mock" script: nosetests --with-coverage --cover-package=sixpack sudo: false cache: pip diff --git a/sixpack/sixpack.py b/sixpack/sixpack.py index 6f8ddc7..92bed05 100644 --- a/sixpack/sixpack.py +++ b/sixpack/sixpack.py @@ -1,4 +1,3 @@ -import json import re import requests from uuid import uuid4 @@ -105,11 +104,13 @@ def get_response(self, endpoint=None, params=None): try: response = requests.get(url, params=params, timeout=self.timeout) - if response.status_code != 200: - ret = "{{\"status\": \"failed\", \"response\": {0}}}".format(response.content) - else: - ret = response.content except Exception: - ret = "{\"status\": \"failed\", \"response\": \"http error: sixpack is unreachable\"}" + return {"status": "failed", "response": "http error: sixpack is unreachable"} - return json.loads(ret) + if response.status_code != 200: + return {"status": "failed", "response": response.content} + + try: + return response.json() + except ValueError: + return {"status": "failed", "response": response.content} diff --git a/sixpack/test/test_sixpack_client.py b/sixpack/test/test_sixpack_client.py index f609c8c..74711f5 100644 --- a/sixpack/test/test_sixpack_client.py +++ b/sixpack/test/test_sixpack_client.py @@ -111,14 +111,15 @@ def test_failure_on_bad_alt_names(self): def new_convert(*args, **kwargs): m = Mock() m.status_code = 200 - m.content = '{"status": "ok"}' + m.json.return_value = {"status": "ok"} + return m def new_participate(*args, **kwargs): m = Mock() m.status_code = 200 - m.content = '{"status": "ok"}' + m.json.return_value = {"status": "ok"} return m