Skip to content
Snippets Groups Projects
Commit 2a94dea0 authored by Andreas Hubel's avatar Andreas Hubel
Browse files

chore(schedulejson): add request header config option

parent 1de78d3e
No related branches found
No related tags found
No related merge requests found
...@@ -16,8 +16,10 @@ class ScheduleJSONSupport(BaseScheduleSupport): ...@@ -16,8 +16,10 @@ class ScheduleJSONSupport(BaseScheduleSupport):
readonly = True readonly = True
configuration_fields = { configuration_fields = {
# 'key': (type, default value, mandatory, translation text)
'feedback': ('bool', True, False, 'Enable/Disable feedback url generation'), 'feedback': ('bool', True, False, 'Enable/Disable feedback url generation'),
'kind': ('string', 'assembly', False, 'kind of events, either "assembly" or "official" or "sos" or "lightning"'), '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): def ready(self):
...@@ -38,9 +40,12 @@ class ScheduleJSONSupport(BaseScheduleSupport): ...@@ -38,9 +40,12 @@ class ScheduleJSONSupport(BaseScheduleSupport):
all events need to have an unique but stable identifier, i.e. all events need to have an unique but stable identifier, i.e.
if the name of the event changes the identifier must not change! 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 = ScheduleJSON.from_url(self.remote_url, headers={**headers, 'Accept-Language': 'en'})
schedule_de = ScheduleJSON.from_url(self.remote_url, language='de', event_map=True) 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)) instance = urlparse(schedule.get('base_url', self.remote_url))
host = f'//{instance.netloc}' host = f'//{instance.netloc}'
...@@ -101,8 +106,8 @@ class ScheduleJSON: ...@@ -101,8 +106,8 @@ class ScheduleJSON:
self._events = {e.get('guid'): e for e in self.events()} self._events = {e.get('guid'): e for e in self.events()}
@classmethod @classmethod
def from_url(cls, url, client=None, language=None, event_map=False): def from_url(cls, url, client=None, headers=None, event_map=False):
r = (client if client else s).get(url, headers={'Accept-Language': language} if language else None) r = (client if client else s).get(url, headers=headers)
if r.ok is False: if r.ok is False:
raise Exception(f'Request failed, HTTP {r.status_code}.') raise Exception(f'Request failed, HTTP {r.status_code}.')
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment