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.
This commit is contained in:
Marty McGuire 2017-03-09 23:33:43 -05:00 committed by GitHub
parent 0471a3aeb8
commit 9f7bc5530b
1 changed files with 8 additions and 2 deletions

View File

@ -206,6 +206,9 @@ class MicropubClient:
'Flask-Micropub: auth response: %d - %s', response.status_code, 'Flask-Micropub: auth response: %d - %s', response.status_code,
response.text) response.text)
try:
rdata = dict((k,[v]) for (k,v) in response.json().items())
except ValueError:
rdata = parse_qs(response.text) rdata = parse_qs(response.text)
if response.status_code < 200 or response.status_code >= 300: if response.status_code < 200 or response.status_code >= 300:
error_vals = rdata.get('error') error_vals = rdata.get('error')
@ -276,6 +279,9 @@ class MicropubClient:
error='bad response from token endpoint: {}' error='bad response from token endpoint: {}'
.format(token_response)) .format(token_response))
try:
tdata = dict((k,[v]) for (k,v) in token_response.json().items())
except ValueError:
tdata = parse_qs(token_response.text) tdata = parse_qs(token_response.text)
if 'access_token' not in tdata: if 'access_token' not in tdata:
return AuthResponse( return AuthResponse(