add support for mastodon v2.0's string IDs
This commit is contained in:
pare
61552f9f84
commit
6b5deb4898
S'han modificat 1 arxius amb 26 adicions i 1 eliminacions
|
@ -16,6 +16,7 @@ import dateutil.parser
|
|||
import re
|
||||
import copy
|
||||
import threading
|
||||
import sys
|
||||
try:
|
||||
from urllib.parse import urlparse
|
||||
except ImportError:
|
||||
|
@ -970,6 +971,7 @@ class Mastodon:
|
|||
|
||||
return (date_time_utc - epoch_utc).total_seconds()
|
||||
|
||||
|
||||
def __json_date_parse(self, json_object):
|
||||
"""
|
||||
Parse dates in certain known json fields, if possible.
|
||||
|
@ -986,6 +988,29 @@ class Mastodon:
|
|||
raise MastodonAPIError('Encountered invalid date.')
|
||||
return json_object
|
||||
|
||||
def __json_id_to_bignum(self, json_object):
|
||||
"""
|
||||
Converts json string IDs to native python bignums.
|
||||
"""
|
||||
if sys.version_info.major >= 3:
|
||||
str_type = str
|
||||
else:
|
||||
str_type = unicode
|
||||
|
||||
if ('id' in json_object and
|
||||
isinstance(json_object['id'], str_type)):
|
||||
try:
|
||||
json_object['id'] = int(json_object['id'])
|
||||
except ValueError:
|
||||
pass
|
||||
|
||||
return json_object
|
||||
|
||||
def __json_hooks(self, json_object):
|
||||
json_object = self.__json_date_parse(json_object)
|
||||
json_object = self.__json_id_to_bignum(json_object)
|
||||
return json_object
|
||||
|
||||
def __api_request(self, method, endpoint, params={}, files={}, do_ratelimiting=True):
|
||||
"""
|
||||
Internal API request helper.
|
||||
|
@ -1104,7 +1129,7 @@ class Mastodon:
|
|||
continue
|
||||
|
||||
try:
|
||||
response = response_object.json(object_hook=self.__json_date_parse)
|
||||
response = response_object.json(object_hook=self.__json_hooks)
|
||||
except:
|
||||
raise MastodonAPIError(
|
||||
"Could not parse response as JSON, response code was %s, "
|
||||
|
|
Loading…
Referencia en una nova incidència