From 9f7bc5530b296a36b457bed4b5021c666262d918 Mon Sep 17 00:00:00 2001 From: Marty McGuire Date: Thu, 9 Mar 2017 23:33:43 -0500 Subject: [PATCH] support JSON response from auth, token endpoints For example, the micropub.rocks auth endpoint only returns JSON-encoded responses. This implementation wraps all top-level values in the JSON object in an array to match the behavior of `parse_qs` but does not check to see if the value is already an array. --- flask_micropub.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/flask_micropub.py b/flask_micropub.py index b11c47d..647c235 100644 --- a/flask_micropub.py +++ b/flask_micropub.py @@ -206,7 +206,10 @@ class MicropubClient: 'Flask-Micropub: auth response: %d - %s', response.status_code, response.text) - rdata = parse_qs(response.text) + try: + rdata = dict((k,[v]) for (k,v) in response.json().items()) + except ValueError: + rdata = parse_qs(response.text) if response.status_code < 200 or response.status_code >= 300: error_vals = rdata.get('error') error_descs = rdata.get('error_description') @@ -276,7 +279,10 @@ class MicropubClient: error='bad response from token endpoint: {}' .format(token_response)) - tdata = parse_qs(token_response.text) + try: + tdata = dict((k,[v]) for (k,v) in token_response.json().items()) + except ValueError: + tdata = parse_qs(token_response.text) if 'access_token' not in tdata: return AuthResponse( me=me,