Mercurial > personal > weatherlog
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 |