Browse Source

request_active_invasions: return timezone-aware timestamps

Fabian Peter Hammerle 7 years ago
parent
commit
f174cb882e
3 changed files with 17 additions and 6 deletions
  1. 6 4
      pytrapi/__init__.py
  2. 2 2
      setup.py
  3. 9 0
      tests/test_.py

+ 6 - 4
pytrapi/__init__.py

@@ -15,6 +15,10 @@ INVASIONS_API_URL = 'https://www.toontownrewritten.com/api/invasions?format=json
 LOGIN_API_URL = 'https://www.toontownrewritten.com/api/login?format=json'
 
 
+def _utc_from_timestamp(timestamp):
+    dt = datetime.datetime.utcfromtimestamp(timestamp)
+    return dt.replace(tzinfo = datetime.timezone.utc)
+
 def api_request(url, params=None, validate_ssl_cert=True):
     resp = urllib.request.urlopen(
         url=url,
@@ -103,14 +107,12 @@ def request_active_invasions(validate_ssl_certs=True):
             despawned_number, total_number = inv_data['progress'].split('/')
             invs[district] = InvasionProgress(
                 district=district,
-                date=datetime.datetime.utcfromtimestamp(inv_data['asOf']),
+                date=_utc_from_timestamp(inv_data['asOf']),
                 cog_type=inv_data['type'],
                 despawned_number=int(despawned_number),
                 total_number=int(total_number),
             )
         return InvasionsResponse(
-            update_date=datetime.datetime.utcfromtimestamp(
-                resp_data['lastUpdated']
-            ),
+            update_date=_utc_from_timestamp(resp_data['lastUpdated']),
             invasions=invs,
         )

+ 2 - 2
setup.py

@@ -7,12 +7,12 @@ import glob
 setup(
     name = 'pytrapi',
     packages = ['pytrapi'],
-    version = '0.1.0',
+    version = '0.1.1',
     description = "interface for toontown rewritten's web api",
     author = 'Fabian Peter Hammerle',
     author_email = 'fabian.hammerle@gmail.com',
     url = 'https://git.hammerle.me/fphammerle/pytrapi',
-    download_url = 'https://git.hammerle.me/fphammerle/pytrapi/archive/0.1.0.zip',
+    download_url = 'https://git.hammerle.me/fphammerle/pytrapi/archive/0.1.1.zip',
     keywords = ['game', 'api', 'toontown rewritten', 'ttr'],
     classifiers = [],
     # scripts = glob.glob('scripts/*'),

+ 9 - 0
tests/test_.py

@@ -13,4 +13,13 @@ def test_api_request_invasions():
 def test_request_active_invasions():
     resp = pytrapi.request_active_invasions()
     assert isinstance(resp.update_date, datetime.datetime)
+    assert resp.update_date.tzinfo is not None
     assert isinstance(resp.invasions, dict)
+
+
+@pytest.mark.parametrize(('timestamp', 'expected'), [
+    [0, datetime.datetime(1970, 1, 1, 0, 0, tzinfo=datetime.timezone.utc)],
+    [1487945511, datetime.datetime(2017, 2, 24, 14, 11, 51, tzinfo=datetime.timezone.utc)],
+])
+def test__utc_from_timestamp(timestamp, expected):
+    assert expected == pytrapi._utc_from_timestamp(timestamp)