From 3085a45ac95e613101914cc79c5cc1b221fa3b72 Mon Sep 17 00:00:00 2001 From: Ian Fijolek Date: Mon, 5 Feb 2018 20:40:14 -0800 Subject: [PATCH] Add viewer prototype for packages --- docker-compose.yml | 10 ++++ indexer/indexer/main.py | 6 +-- viewers/package-tracking/Dockerfile | 8 ++++ viewers/package-tracking/Readme.md | 48 +++++++++++++++++++ viewers/package-tracking/docker-compose.yml | 10 ++++ viewers/package-tracking/requirements-dev.txt | 2 + viewers/package-tracking/requirements.txt | 3 ++ viewers/package-tracking/viewer/__init__.py | 0 viewers/package-tracking/viewer/main.py | 34 +++++++++++++ .../viewer/templates/base.html | 30 ++++++++++++ .../viewer/templates/shipping.html | 27 +++++++++++ 11 files changed, 175 insertions(+), 3 deletions(-) create mode 100644 viewers/package-tracking/Dockerfile create mode 100644 viewers/package-tracking/Readme.md create mode 100644 viewers/package-tracking/docker-compose.yml create mode 100644 viewers/package-tracking/requirements-dev.txt create mode 100644 viewers/package-tracking/requirements.txt create mode 100644 viewers/package-tracking/viewer/__init__.py create mode 100644 viewers/package-tracking/viewer/main.py create mode 100644 viewers/package-tracking/viewer/templates/base.html create mode 100644 viewers/package-tracking/viewer/templates/shipping.html diff --git a/docker-compose.yml b/docker-compose.yml index 969fab8..189042e 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -19,3 +19,13 @@ services: build: ./parsers/package-tracking ports: - "8183:3000" + viewer_package_tracking: + build: ./viewers/package-tracking + volumes: + - ./viewers/package-tracking:/usr/src/app + links: + - indexer + environment: + INDEXER_URL: http://indexer:5000 + ports: + - "8184:5000" diff --git a/indexer/indexer/main.py b/indexer/indexer/main.py index d7a2eee..54145cb 100644 --- a/indexer/indexer/main.py +++ b/indexer/indexer/main.py @@ -68,9 +68,9 @@ class EmailToken(db.Model): return jsonify(tokens=[token.as_dict() for token in results]) -@app.route("/") +@app.route('/') def check(): - return "OK" + return 'OK' @app.route('/token', methods=['POST']) @@ -125,6 +125,6 @@ def get_token(token_id): return jsonify(token.as_dict()) -if __name__ == "__main__": +if __name__ == '__main__': db.create_all() app.run(host='0.0.0.0', port=5000) diff --git a/viewers/package-tracking/Dockerfile b/viewers/package-tracking/Dockerfile new file mode 100644 index 0000000..9e2910d --- /dev/null +++ b/viewers/package-tracking/Dockerfile @@ -0,0 +1,8 @@ +FROM python:3.6-onbuild + +ENV FLASK_DEBUG=1 + +EXPOSE 5000 + +# TODO: Track debug in env and use threads +CMD python -m viewer.main diff --git a/viewers/package-tracking/Readme.md b/viewers/package-tracking/Readme.md new file mode 100644 index 0000000..5d6fd03 --- /dev/null +++ b/viewers/package-tracking/Readme.md @@ -0,0 +1,48 @@ +# Indexer +Simple service to act as data layer for Email Assitant + +# Healthcheck +Path: `/` +Returns: `OK` + +# Tokens +Path: `/token` + +## POST +Accepts JSON representation of a EmailToken + +Accepts: + +|Field|Type|Example| +|---|---|---| +|`"subject"`|String|`"Your shipping info"`| +|`"token"`|String|`"123456"`| +|`"type"`|String|`"SHIPPING"`| +|`"metadata"`|Object (optional)|`{"carrier": "UPS"}`| +|`"disabled"`|Boolean (optional)|`false`| + +Returns: + +|Field|Type|Example| +|---|---|---| +|`"success"`|Boolean|`true`| +|`"token"`|Token Object|`{"id": 1, ... }`| + +## GET +Path: `/token` +Returns all Token Objects + +Parameters: + +|Parameter|Description|Example| +|---|---|---| +|`"filter_type"`|String token type to filter by|`SHIPPING`| + +Returns: + +|Field|Type|Example| +|---|---|---| +|`"tokens"`|List of Token Objects|`[{"id": 1, ... }, ...]`| + +Path: `/token/` +Returns Token Object with that ID diff --git a/viewers/package-tracking/docker-compose.yml b/viewers/package-tracking/docker-compose.yml new file mode 100644 index 0000000..aeb038d --- /dev/null +++ b/viewers/package-tracking/docker-compose.yml @@ -0,0 +1,10 @@ +version: '2' +services: + main: + build: . + environment: + INDEXER_URL: http://localhost:8181 + volumes: + - .:/usr/src/app + ports: + - "8184:5000" diff --git a/viewers/package-tracking/requirements-dev.txt b/viewers/package-tracking/requirements-dev.txt new file mode 100644 index 0000000..988613e --- /dev/null +++ b/viewers/package-tracking/requirements-dev.txt @@ -0,0 +1,2 @@ +ipdb +ipython diff --git a/viewers/package-tracking/requirements.txt b/viewers/package-tracking/requirements.txt new file mode 100644 index 0000000..89f6ab1 --- /dev/null +++ b/viewers/package-tracking/requirements.txt @@ -0,0 +1,3 @@ +flask==0.12.2 +requests +flask_bootstrap diff --git a/viewers/package-tracking/viewer/__init__.py b/viewers/package-tracking/viewer/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/viewers/package-tracking/viewer/main.py b/viewers/package-tracking/viewer/main.py new file mode 100644 index 0000000..0d4b9e9 --- /dev/null +++ b/viewers/package-tracking/viewer/main.py @@ -0,0 +1,34 @@ +import os +import sys + +from flask_bootstrap import Bootstrap +import flask +import requests + + +app = flask.Flask(__name__) +app.config['DEBUG'] = True +Bootstrap(app) + +indexer_url = os.environ.get('INDEXER_URL', 'http://indexer') + + +@app.route('/') +def check(): + return 'OK' + + +@app.route('/shipping') +def get_tokens(): + resp = requests.get( + indexer_url+'/token', + params={'filter_type': 'SHIPPING'}, + ) + resp.raise_for_status() + print(resp.text, file=sys.stderr) + tokens = resp.json().get('tokens') + return flask.render_template('shipping.html', trackers=tokens) + + +if __name__ == '__main__': + app.run(host='0.0.0.0', port=5000) diff --git a/viewers/package-tracking/viewer/templates/base.html b/viewers/package-tracking/viewer/templates/base.html new file mode 100644 index 0000000..44eaa88 --- /dev/null +++ b/viewers/package-tracking/viewer/templates/base.html @@ -0,0 +1,30 @@ + + + + + + + + + + + {% block head %} + {% endblock %} + + {% block title %}Email Assistant{% endblock %} + + + {% block body %} +
+ {% block container %} + {% endblock %} +
+ {% endblock %} + + + + + + + + diff --git a/viewers/package-tracking/viewer/templates/shipping.html b/viewers/package-tracking/viewer/templates/shipping.html new file mode 100644 index 0000000..34dc813 --- /dev/null +++ b/viewers/package-tracking/viewer/templates/shipping.html @@ -0,0 +1,27 @@ +{% extends "base.html" %} +{% block title %}This is an example page{% endblock %} + +{% block container %} + + + + + + + + + + + + {% for row in trackers %} + + + + + + + + {% endfor %} + +
#Tracking NumberCarrierSubjectDisabled
{{ row['id'] }}{{ row['token'] }}{{ row['metadata']['carrier_name'] }}{{ row['subject'] }}{{ row['disabled'] }}
+{% endblock %}