hadapi, util: Re-locate body parsing

We'll need it in the server for requesting POST/PUT bodies too.
This commit is contained in:
Stuart Longland 2018-01-07 16:55:32 +10:00
parent 6b5c4e8b6a
commit 6eb99f2653
Signed by: stuartl
GPG Key ID: 6AA32EFB18079BAA
2 changed files with 16 additions and 8 deletions

View File

@ -10,13 +10,13 @@ from tornado.gen import coroutine, Return, sleep
from tornado.locks import Semaphore
from enum import Enum
from ..util import decode_body
try:
from urllib import parse as urlparse
except ImportError:
import urlparse
from cgi import parse_header
class UserSortBy(Enum):
influence='influence'
@ -120,12 +120,8 @@ class HackadayAPI(object):
"""
Decode a given reponse body.
"""
# Ideally, encoding should be in the content type
(ct, ctopts) = parse_header(response.headers['Content-Type'])
encoding = ctopts.get('charset', default_encoding)
# Return the decoded payload along with the content-type.
return (ct, ctopts, response.body.decode(encoding))
return decode_body(response.headers['Content-Type'], response.body,
default_encoding)
@coroutine
def _api_call(self, uri, query=None, token=None, api_key=True, **kwargs):

12
hadsh/util.py Normal file
View File

@ -0,0 +1,12 @@
from cgi import parse_header
def decode_body(content_type, body_data, default_encoding='UTF-8'):
"""
Decode a given reponse body.
"""
# Ideally, encoding should be in the content type
(ct, ctopts) = parse_header(content_type)
encoding = ctopts.get('charset', default_encoding)
# Return the decoded payload along with the content-type.
return (ct, ctopts, body_data.decode(encoding))