diff --git a/README.md b/README.md index b4ee6f5..a0c679a 100644 --- a/README.md +++ b/README.md @@ -11,6 +11,7 @@ You need to configure at least the following env variables that are marked as ma * (mandatory) "FEED_TYPE" which type of a GTFS RT data is provided (for example vp for vehicle position), used in MQTT topic * (mandatory) "FEED_NAME" name for the data feed, used in MQTT topic * (mandatory) "FEED_URL" URL for the HTTP(S) GTFS RT data source +* (optional) "FEED_HEADERS" headers for requesting GTFS RT feed * (mandatory as of 4.3.2023 if using Digitransit API) "AUTHENTICATION_HEADER" Authentication header name * (mandatory as of 4.3.2023 if using Digitransit API) "AUTHENTICATION_TOKEN" Authentication header secret * (optional) "USERNAME" username for publishing to a MQTT broker diff --git a/gtfsrthttp2mqtt.py b/gtfsrthttp2mqtt.py index 163c27f..2392871 100644 --- a/gtfsrthttp2mqtt.py +++ b/gtfsrthttp2mqtt.py @@ -1,5 +1,6 @@ import time import os +import json from threading import Event, Thread import paho.mqtt.client as mqtt @@ -25,7 +26,7 @@ def loop(): class GTFSRTHTTP2MQTTTransformer: - def __init__(self, mqttConnect, mqttCredentials, baseMqttTopic, gtfsrtFeedURL, feedName): + def __init__(self, mqttConnect, mqttCredentials, baseMqttTopic, gtfsrtFeedURL, gtfsrtFeedHeaders, feedName): self.mqttConnect = mqttConnect self.mqttCredentials = mqttCredentials self.baseMqttTopic = baseMqttTopic @@ -36,6 +37,7 @@ def __init__(self, mqttConnect, mqttCredentials, baseMqttTopic, gtfsrtFeedURL, f retry = Retry(connect=60, backoff_factor=1.5) adapter = HTTPAdapter(max_retries=retry) self.session.mount(gtfsrtFeedURL, adapter) + self.session.headers.update(json.loads(gtfsrtFeedHeaders)) self.OTPData = None @@ -168,6 +170,7 @@ def doOTPPolling(self): {'username': os.environ['USERNAME'], 'password': os.environ['PASSWORD']}, '/gtfsrt/{0}'.format(os.environ['FEED_TYPE']), os.environ['FEED_URL'], + os.environ.get('FEED_HEADERS', '{}'), os.environ['FEED_NAME'] )