diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..94e2e9f --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +.DS_Store +service/secrets.env diff --git a/service/.dockerignore b/service/.dockerignore new file mode 100644 index 0000000..f9606a3 --- /dev/null +++ b/service/.dockerignore @@ -0,0 +1 @@ +/venv diff --git a/service/Dockerfile b/service/Dockerfile index 6bb1251..ca13d42 100644 --- a/service/Dockerfile +++ b/service/Dockerfile @@ -1,4 +1,8 @@ -FROM python:3.6-alpine3.6 +FROM python:3.6-alpine3.8 + +RUN apk update && apk add ca-certificates && rm -rf /var/cache/apk/* + +ENV PYTHONUNBUFFERED yes WORKDIR /app diff --git a/service/Makefile b/service/Makefile index 2acb447..5b3ea70 100644 --- a/service/Makefile +++ b/service/Makefile @@ -1,4 +1,10 @@ +build: + docker build -t quay.io/netzbegruneung/schaufenster-service . + +run: + docker run -p 5000:5000 --rm quay.io/netzbegruneung/schaufenster-service + serve: gunicorn --reload -b 0.0.0.0:5000 api.main:app diff --git a/service/api/events.py b/service/api/events.py index 2e208c1..5c1c15b 100644 --- a/service/api/events.py +++ b/service/api/events.py @@ -4,6 +4,7 @@ import requests import icalendar from datetime import datetime from datetime import date +from datetime import timedelta class Client(object): @@ -12,7 +13,7 @@ class Client(object): self.url = url self.charset = charset self.events = [] - self.timeout = 20 + self.timeout = 60 self.__load() def __load(self): @@ -50,7 +51,7 @@ class Client(object): """ Returns the next num events from the calendar """ - now = datetime.utcnow() + now = datetime.utcnow() + timedelta(hours=5) out = [] for event in self.events: end = event["end"] diff --git a/service/api/main.py b/service/api/main.py index bce3980..866b520 100644 --- a/service/api/main.py +++ b/service/api/main.py @@ -11,6 +11,21 @@ import logging import requests +class IndexResource(object): + def __init__(self): + self.logger = logging.getLogger('api.' + __name__) + + def on_get(self, req, resp): + resp.media = { + "message": "Hallo! Hier läuft der Schaufenster-Service", + "url": "https://github.com/netzbegruenung/schaufenster", + "endpoints": [ + "/events/", + "/feed/", + "/luftdaten.info/v1/sensor/{sensor_id}/", + ], + } + class EventsResource(object): def __init__(self): @@ -75,3 +90,4 @@ app.resp_options.media_handlers = handlers app.add_route('/events/', EventsResource()) app.add_route('/feed/', FeedResource()) app.add_route('/luftdaten.info/v1/sensor/{sensor_id}/', ParticleSensorResource()) +app.add_route('/', IndexResource()) diff --git a/service/requirements.txt b/service/requirements.txt index 389fe02..037dcf7 100644 --- a/service/requirements.txt +++ b/service/requirements.txt @@ -14,6 +14,6 @@ pytest==3.4.0 python-dateutil==2.6.1 python-mimeparse==1.6.0 pytz==2017.3 -requests==2.18.4 +requests==2.20.1 six==1.11.0 urllib3==1.22