Python: FireServiceRota / BrandweerRooster
Python 3 API wrapper for FireServiceRota and BrandweerRooster
About
This package allows you to get notified about emergency incidents from FireServiceRota.co.uk and BrandweerRooster.nl. Those are services used by firefighters.
See https://fireservicerota.co.uk and https://brandweerrooster.nl for more details.
NOTE: You need a subscription and login account to be able to use it.
Installation
pip3 install pyfireservicerota
Usage
from pyfireservicerota import FireServiceRota, FireServiceRotaIncidents, FireServiceRotaError, ExpiredTokenError, InvalidTokenError, InvalidAuthError
import logging
import sys
import json
import time
import threading
_LOGGER = logging.getLogger(__name__)
logging.basicConfig(level=logging.DEBUG)
api = FireServiceRota(
base_url="https://www.brandweerrooster.nl",
username="your@email.address",
password="yourpassword",
)
try:
token_info = api.request_tokens()
except InvalidAuthError:
token_info = None
if not token_info:
_LOGGER.error("Failed to get access token")
# Get userid to fetch availability
try:
api.get_userid()
except ExpiredTokenError:
_LOGGER.debug("Tokens are expired")
try:
token_info = api.refresh_tokens()
except InvalidAuthError:
_LOGGER.debug("Invalid refresh token")
except InvalidTokenError:
_LOGGER.debug("Tokens are invalid")
try:
token_info = api.refresh_tokens()
except InvalidAuthError:
_LOGGER.debug("Invalid refresh token")
#api.get_schedules()
#print(api.get_availability())
wsurl = f"wss://www.brandweerrooster.nl/cable?access_token={token_info['access_token']}"
class FireService():
def __init__(self):
self._data = None
self.listener = None
self.thread = threading.Thread(target=self.incidents_listener)
self.thread.daemon = True
self.thread.start()
def on_incident(self, data):
_LOGGER.debug("INCIDENT: %s", data)
self._data = data
@property
def data(self):
"""Return the current data stored in the provider."""
return self._data
def incidents_listener(self):
"""Spawn a new Listener and links it to self.on_incident."""
_LOGGER.debug("Starting incidents listener")
self.listener = FireServiceRotaIncidents(url=wsurl, on_incident=self.on_incident)
while True:
try:
self.listener.run_forever()
except:
pass
ws = FireService()
while True:
time.sleep(1)
Don't store user credentuals, just the token_info and use api.refresh_tokens to refresh it.
api = FireServiceRota(
base_url = "https://www.brandweerrooster.nl",
token_info = token_info
)
Metadata
Release files for pyfireservicerota 0.0.20
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| pyfireservicerota-0.0.20.tar.gz | 5.6 kB | Details |
Release files / pyfireservicerota-0.0.20.tar.gz
| Download URL | pyfireservicerota-0.0.20.tar.gz |
|---|---|
| Size | 5.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
fa9443355a8b60d29c616d20a655b1f83da1f068ee28c211ae0fc4a06e5d27af
|
|
BLAKE2b-256 checksum How to use checksums |
3b470b88db3c6ec0290adec626d53f9c721c93dd2ae99d0ab0971735be7fa4be
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.7.3
|