aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'mastodon')
-rw-r--r--mastodon/Mastodon.py27
1 files changed, 26 insertions, 1 deletions
diff --git a/mastodon/Mastodon.py b/mastodon/Mastodon.py
index 8c2bf8c..d57fb91 100644
--- a/mastodon/Mastodon.py
+++ b/mastodon/Mastodon.py
@@ -16,6 +16,7 @@ import dateutil.parser
16import re 16import re
17import copy 17import copy
18import threading 18import threading
19import sys
19try: 20try:
20 from urllib.parse import urlparse 21 from urllib.parse import urlparse
21except ImportError: 22except ImportError:
@@ -971,6 +972,7 @@ class Mastodon:
971 972
972 return (date_time_utc - epoch_utc).total_seconds() 973 return (date_time_utc - epoch_utc).total_seconds()
973 974
975
974 def __json_date_parse(self, json_object): 976 def __json_date_parse(self, json_object):
975 """ 977 """
976 Parse dates in certain known json fields, if possible. 978 Parse dates in certain known json fields, if possible.
@@ -987,6 +989,29 @@ class Mastodon:
987 raise MastodonAPIError('Encountered invalid date.') 989 raise MastodonAPIError('Encountered invalid date.')
988 return json_object 990 return json_object
989 991
992 def __json_id_to_bignum(self, json_object):
993 """
994 Converts json string IDs to native python bignums.
995 """
996 if sys.version_info.major >= 3:
997 str_type = str
998 else:
999 str_type = unicode
1000
1001 if ('id' in json_object and
1002 isinstance(json_object['id'], str_type)):
1003 try:
1004 json_object['id'] = int(json_object['id'])
1005 except ValueError:
1006 pass
1007
1008 return json_object
1009
1010 def __json_hooks(self, json_object):
1011 json_object = self.__json_date_parse(json_object)
1012 json_object = self.__json_id_to_bignum(json_object)
1013 return json_object
1014
990 def __api_request(self, method, endpoint, params={}, files={}, do_ratelimiting=True): 1015 def __api_request(self, method, endpoint, params={}, files={}, do_ratelimiting=True):
991 """ 1016 """
992 Internal API request helper. 1017 Internal API request helper.
@@ -1105,7 +1130,7 @@ class Mastodon:
1105 continue 1130 continue
1106 1131
1107 try: 1132 try:
1108 response = response_object.json(object_hook=self.__json_date_parse) 1133 response = response_object.json(object_hook=self.__json_hooks)
1109 except: 1134 except:
1110 raise MastodonAPIError( 1135 raise MastodonAPIError(
1111 "Could not parse response as JSON, response code was %s, " 1136 "Could not parse response as JSON, response code was %s, "
Powered by cgit v1.2.3 (git 2.41.0)