Skip to content

Commit 07e8324

Browse files
authored
Merge pull request #3 from netz39/pictures
Add picture delivery for state.png
2 parents e939c6b + c15a95d commit 07e8324

File tree

8 files changed

+278
-4
lines changed

8 files changed

+278
-4
lines changed

Dockerfile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ COPY requirements.txt /
1616
RUN pip install -r requirements.txt
1717

1818
COPY src/*.py /
19+
COPY assets/ /assets/
1920

2021
COPY --from=install /git-version.txt /
2122

assets/closed.png

4.72 KB
Loading

assets/closed.svg

Lines changed: 119 additions & 0 deletions
Loading

assets/open.png

3.89 KB
Loading

assets/open.svg

Lines changed: 119 additions & 0 deletions
Loading

src/PictureManager.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
class PictureManager:
2+
def __init__(self, is_open_func, open_image_path, closed_image_path):
3+
self.is_open_func = is_open_func
4+
self.open_image_path = open_image_path
5+
self.closed_image_path = closed_image_path
6+
7+
def get_image(self):
8+
if self.is_open_func():
9+
with open(self.open_image_path, "rb") as image_file:
10+
return image_file.read()
11+
else:
12+
with open(self.closed_image_path, "rb") as image_file:
13+
return image_file.read()

src/SpaceApiEntry.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,3 +69,6 @@ def set_is_open(self, is_open):
6969

7070
def set_lastchange(self, lastchange):
7171
self.data["state"]["lastchange"] = lastchange
72+
73+
def is_open(self):
74+
return self.data["state"]["open"]

src/app.py

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,9 @@
1515

1616
import json
1717

18-
from src.SpaceApiEntry import SpaceApiEntry
19-
from src.SpaceStatusObserver import SpaceStatusObserver
18+
from PictureManager import PictureManager
19+
from SpaceApiEntry import SpaceApiEntry
20+
from SpaceStatusObserver import SpaceStatusObserver
2021

2122
startup_timestamp = datetime.now()
2223

@@ -84,12 +85,24 @@ def get(self):
8485
self.finish()
8586

8687

87-
def make_app(observer):
88+
class PictureHandler(tornado.web.RequestHandler, ABC):
89+
# noinspection PyAttributeOutsideInit
90+
def initialize(self, picture_manager):
91+
self.picture_manager = picture_manager
92+
93+
def get(self):
94+
self.set_header("Content-Type", "image/png")
95+
self.write(self.picture_manager.get_image())
96+
self.finish()
97+
98+
99+
def make_app(observer, picture_manager):
88100
version_path = r"/v[0-9]"
89101
return tornado.web.Application([
90102
(version_path + r"/health", HealthHandler),
91103
(version_path + r"/oas3", Oas3Handler),
92104
(r"/", SpaceAPIHandler, dict(observer=observer)),
105+
(r"/state.png", PictureHandler, dict(picture_manager=picture_manager)),
93106
])
94107

95108

@@ -121,7 +134,13 @@ def main():
121134
)
122135
observer.start()
123136

124-
app = make_app(observer)
137+
picture_manager = PictureManager(
138+
is_open_func=observer.space_api_entry.is_open,
139+
open_image_path="../assets/open.png",
140+
closed_image_path="../assets/closed.png"
141+
)
142+
143+
app = make_app(observer, picture_manager)
125144
sockets = tornado.netutil.bind_sockets(arg_port, '')
126145
server = tornado.httpserver.HTTPServer(app)
127146
server.add_sockets(sockets)

0 commit comments

Comments
 (0)