aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLorenz Diener <[email protected]>2017-11-21 13:55:57 +0100
committerGitHub <[email protected]>2017-11-21 13:55:57 +0100
commite3b72e443136b92933f02429043e5983fc01c71a (patch)
treedaaf688ab3fb071ab4503cb168cab8dea6c6ebf8
parent61552f9f84c736d447e0fccd54040d3b956a83e9 (diff)
parentc7641d71d0b5011020ac94c867f23242927cf6fd (diff)
downloadmastodon.py-e3b72e443136b92933f02429043e5983fc01c71a.tar.gz
Merge pull request #98 from codl/v2-compat
mastodon v2.0+ compatibility
-rw-r--r--README.rst2
-rw-r--r--docs/index.rst2
-rw-r--r--mastodon/Mastodon.py27
3 files changed, 28 insertions, 3 deletions
diff --git a/README.rst b/README.rst
index 874bb80..d13f90a 100644
--- a/README.rst
+++ b/README.rst
@@ -35,7 +35,7 @@ Mastodon.py
35 mastodon.toot('Tooting from python using #mastodonpy !') 35 mastodon.toot('Tooting from python using #mastodonpy !')
36 36
37Python wrapper for the Mastodon ( https://github.com/tootsuite/mastodon/ ) API. 37Python wrapper for the Mastodon ( https://github.com/tootsuite/mastodon/ ) API.
38Feature complete for public API as of version v1.6 and easy to get started with. 38Feature complete for public API as of version v2.0 and easy to get started with.
39 39
40You can install Mastodon.py via pypi: 40You can install Mastodon.py via pypi:
41 41
diff --git a/docs/index.rst b/docs/index.rst
index fae8b2d..34b7b38 100644
--- a/docs/index.rst
+++ b/docs/index.rst
@@ -46,7 +46,7 @@ node running Mastodon by setting api_base_url when creating the
46api object (or creating an app). 46api object (or creating an app).
47 47
48Mastodon.py aims to implement the complete public Mastodon API. As 48Mastodon.py aims to implement the complete public Mastodon API. As
49of this time, it is feature complete for Mastodon version 1.6. 49of this time, it is feature complete for Mastodon version 2.0.
50 50
51A note about rate limits 51A note about rate limits
52------------------------ 52------------------------
diff --git a/mastodon/Mastodon.py b/mastodon/Mastodon.py
index b118421..cc16a10 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:
@@ -970,6 +971,7 @@ class Mastodon:
970 971
971 return (date_time_utc - epoch_utc).total_seconds() 972 return (date_time_utc - epoch_utc).total_seconds()
972 973
974
973 def __json_date_parse(self, json_object): 975 def __json_date_parse(self, json_object):
974 """ 976 """
975 Parse dates in certain known json fields, if possible. 977 Parse dates in certain known json fields, if possible.
@@ -986,6 +988,29 @@ class Mastodon:
986 raise MastodonAPIError('Encountered invalid date.') 988 raise MastodonAPIError('Encountered invalid date.')
987 return json_object 989 return json_object
988 990
991 def __json_id_to_bignum(self, json_object):
992 """
993 Converts json string IDs to native python bignums.
994 """
995 if sys.version_info.major >= 3:
996 str_type = str
997 else:
998 str_type = unicode
999
1000 if ('id' in json_object and
1001 isinstance(json_object['id'], str_type)):
1002 try:
1003 json_object['id'] = int(json_object['id'])
1004 except ValueError:
1005 pass
1006
1007 return json_object
1008
1009 def __json_hooks(self, json_object):
1010 json_object = self.__json_date_parse(json_object)
1011 json_object = self.__json_id_to_bignum(json_object)
1012 return json_object
1013
989 def __api_request(self, method, endpoint, params={}, files={}, do_ratelimiting=True): 1014 def __api_request(self, method, endpoint, params={}, files={}, do_ratelimiting=True):
990 """ 1015 """
991 Internal API request helper. 1016 Internal API request helper.
@@ -1104,7 +1129,7 @@ class Mastodon:
1104 continue 1129 continue
1105 1130
1106 try: 1131 try:
1107 response = response_object.json(object_hook=self.__json_date_parse) 1132 response = response_object.json(object_hook=self.__json_hooks)
1108 except: 1133 except:
1109 raise MastodonAPIError( 1134 raise MastodonAPIError(
1110 "Could not parse response as JSON, response code was %s, " 1135 "Could not parse response as JSON, response code was %s, "
Powered by cgit v1.2.3 (git 2.41.0)