diff --git a/Dockerfile b/Dockerfile index 53b1b10..5e8d1f1 100644 --- a/Dockerfile +++ b/Dockerfile @@ -4,5 +4,4 @@ WORKDIR /app COPY requirements.txt . RUN pip install -r requirements.txt COPY . . -EXPOSE 8000 CMD ["gunicorn", "-b", "0.0.0.0", "app:app"] diff --git a/app.py b/app.py index 16cdae2..e944251 100644 --- a/app.py +++ b/app.py @@ -1,5 +1,3 @@ -import os - from flask import Flask, abort import parsers @@ -9,19 +7,11 @@ app = Flask(__name__) parsers.define_parsers() -VIRTUAL_HOST=os.getenv('VIRTUAL_HOST') -@app.route('/mensa/.json') -def index(parser_name): +@app.route('/mensa//') +def mensa(parser_name, mensa_name): try: - return utils.get_parser(parser_name).get_canteen_index(f'https://{VIRTUAL_HOST}/meta') + return utils.get_parser(parser_name).parse(mensa_name) except KeyError: abort(404) - -@app.route('/mensa//feed/') -def mensa(parser_name, canteen_name): - try: - return utils.get_parser(parser_name).parse(canteen_name) - except KeyError: - abort(404) diff --git a/parsers/tuebingen.py b/parsers/tuebingen.py index 734a518..734e94d 100644 --- a/parsers/tuebingen.py +++ b/parsers/tuebingen.py @@ -4,7 +4,7 @@ from urllib.request import urlopen, Request from pyopenmensa.feed import LazyBuilder -from utils import Parser, Canteen +from utils import Parser allergens = { 'Gl-a': 'Weizen', @@ -90,4 +90,4 @@ def define_parsers(): parser = Parser(canteen_json['name'], handler=parse_url, shared_prefix=canteen_json['base_url']) for canteen in canteen_json['canteens']: - parser.define(Canteen(canteen['id'], canteen['suffix'], canteen['name'], canteen['street'], canteen['city'])) + parser.define(canteen['id'], canteen['suffix']) diff --git a/utils.py b/utils.py index 2adb9b5..7eb5f36 100644 --- a/utils.py +++ b/utils.py @@ -1,26 +1,8 @@ parser_list = {} -class Canteen: - canteen_id: str - suffix: str - name: str - street: str - city: str - - def __init__(self, canteen_id, suffix, name, street, city): - self.canteen_id = canteen_id - self.suffix = suffix - self.name = name - self.street = street - self.city = city - - def address(self): - return f'{self.street}, {self.city}' - - class Parser: - canteens: dict[str, Canteen] = {} + sources = {} def __init__(self, name, handler, shared_prefix: str): self.name = name @@ -28,18 +10,11 @@ class Parser: self.shared_prefix = shared_prefix parser_list[name] = self - def define(self, canteen: Canteen): - self.canteens[canteen.canteen_id] = canteen + def define(self, name: str, suffix: str): + self.sources[name] = suffix - def parse(self, canteen: str): - return self.handler(self.shared_prefix + self.canteens[canteen].suffix) - - def get_canteen_index(self, prefix: str): - index: dict[str, str] = {} - canteen: Canteen - for canteen in self.canteens.values(): - index[canteen.canteen_id] = f'{prefix}/{canteen.canteen_id}.xml' - return index + def parse(self, source: str): + return self.handler(self.shared_prefix + self.sources[source]) def get_parser(parser_name: str) -> Parser: