comparison weatherlog/http_writer.py @ 11:6dbd9825b3f5

http_writer: switch to "preamble" based location/password.
author Paul Fisher <paul@pfish.zone>
date Sun, 29 Sep 2019 11:52:23 -0400
parents b1657de734d5
children c01f9929ae38
comparison
equal deleted inserted replaced
10:b1657de734d5 11:6dbd9825b3f5
9 from . import types 9 from . import types
10 10
11 11
12 class HTTPWriter(logger.RemoteWriter): 12 class HTTPWriter(logger.RemoteWriter):
13 13
14 def __init__(self, url: str): 14 def __init__(self, url: str, preamble: t.Dict[str, t.Any]):
15 self._url = url 15 self._url = url
16 self._session = requests.Session() 16 self._session = requests.Session()
17 self._session.headers['User-Agent'] = 'weatherlogger/0.0.1' 17 self._session.headers['User-Agent'] = 'weatherlogger/0.0.1'
18 self._preamble = bson.BSON.encode(preamble)
18 19
19 def write(self, readings: t.Sequence[types.Reading]) -> None: 20 def write(self, readings: t.Sequence[types.Reading]) -> None:
20 try: 21 try:
21 data = b''.join(bson.BSON.encode(r.as_dict()) for r in readings) 22 data = b''.join(bson.BSON.encode(r.as_dict()) for r in readings)
22 response = self._session.post(self._url, data=data) 23 response = self._session.post(self._url, data=self._preamble + data)
23 response.raise_for_status() 24 response.raise_for_status()
24 except requests.exceptions.RequestException as rex: 25 except requests.exceptions.RequestException as rex:
25 raise logger.RemoteWriteError("Coulndn't write values") from rex 26 raise logger.RemoteWriteError("Coulndn't write values") from rex