Mercurial > personal > weather-server
comparison weather_server/common.py @ 11:52ef21607b31
server: Create endpoint to get some recent readings.
author | Paul Fisher <paul@pfish.zone> |
---|---|
date | Sun, 06 Oct 2019 13:11:11 -0400 |
parents | efe7a1eff167 |
children | b77c8e7d2742 |
comparison
equal
deleted
inserted
replaced
10:6d59f038a58b | 11:52ef21607b31 |
---|---|
1 import datetime | |
2 import json | |
1 import typing as t | 3 import typing as t |
2 | 4 |
3 import bson | 5 import bson |
4 import pytz | 6 import pytz |
5 | 7 |
7 tz_aware=True, tzinfo=pytz.UTC) | 9 tz_aware=True, tzinfo=pytz.UTC) |
8 | 10 |
9 | 11 |
10 def bson_encode(data: t.Dict[str, t.Any]) -> bytes: | 12 def bson_encode(data: t.Dict[str, t.Any]) -> bytes: |
11 return bson.BSON.encode(data, codec_options=BSON_OPTIONS) | 13 return bson.BSON.encode(data, codec_options=BSON_OPTIONS) |
14 | |
15 | |
16 class DateEncoder(json.JSONEncoder): | |
17 | |
18 def default(self, o: t.Any) -> t.Any: | |
19 if not isinstance(o, datetime.datetime): | |
20 return super().default(o) | |
21 return o.timestamp() | |
22 | |
23 | |
24 JSON_ENCODER = DateEncoder(sort_keys=True) | |
25 | |
26 | |
27 def json_dumps(data: t.Any) -> str: | |
28 return JSON_ENCODER.encode(data) | |
29 | |
30 | |
31 def utc_now(): | |
32 return datetime.datetime.utcnow().replace(tzinfo=pytz.UTC) |