From 2a94dea004ec833af231d4b62f8ba62814829a56 Mon Sep 17 00:00:00 2001 From: Andreas Hubel <andi@saerdnaer.de> Date: Wed, 11 Dec 2024 22:21:08 +0100 Subject: [PATCH] chore(schedulejson): add request header config option --- src/core/schedules/schedulejson.py | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/src/core/schedules/schedulejson.py b/src/core/schedules/schedulejson.py index 389339c34..8af6a9b09 100644 --- a/src/core/schedules/schedulejson.py +++ b/src/core/schedules/schedulejson.py @@ -16,8 +16,10 @@ class ScheduleJSONSupport(BaseScheduleSupport): readonly = True configuration_fields = { - 'feedback': ('bool', True, False, 'Enable/Disable feedback url generation'), - 'kind': ('string', 'assembly', False, 'kind of events, either "assembly" or "official" or "sos" or "lightning"'), + # 'key': (type, default value, mandatory, translation text) + 'feedback': ('bool', True, False, 'Enable/Disable feedback url generation'), + 'kind': ('string', 'assembly', False, 'kind of events, either "assembly" or "official" or "sos" or "lightning"'), + 'headers': ('dict', {}, False, 'HTTP headers to send with the request e.g. Authorization'), } def ready(self): @@ -38,9 +40,12 @@ class ScheduleJSONSupport(BaseScheduleSupport): all events need to have an unique but stable identifier, i.e. if the name of the event changes the identifier must not change! """ + headers = {} + if self.conf_value('headers'): + headers = self.conf_value('headers') - schedule = ScheduleJSON.from_url(self.remote_url, language='en') - schedule_de = ScheduleJSON.from_url(self.remote_url, language='de', event_map=True) + schedule = ScheduleJSON.from_url(self.remote_url, headers={**headers, 'Accept-Language': 'en'}) + schedule_de = ScheduleJSON.from_url(self.remote_url, headers={**headers, 'Accept-Language': 'de'}, event_map=True) instance = urlparse(schedule.get('base_url', self.remote_url)) host = f'//{instance.netloc}' @@ -101,8 +106,8 @@ class ScheduleJSON: self._events = {e.get('guid'): e for e in self.events()} @classmethod - def from_url(cls, url, client=None, language=None, event_map=False): - r = (client if client else s).get(url, headers={'Accept-Language': language} if language else None) + def from_url(cls, url, client=None, headers=None, event_map=False): + r = (client if client else s).get(url, headers=headers) if r.ok is False: raise Exception(f'Request failed, HTTP {r.status_code}.') -- GitLab