diff --git a/docker-compose.yml b/docker-compose.yml index 189042e..e7eeca3 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -19,13 +19,22 @@ services: build: ./parsers/package-tracking ports: - "8183:3000" - viewer_package_tracking: - build: ./viewers/package-tracking + viewer_main: + build: ./viewers/main volumes: - - ./viewers/package-tracking:/usr/src/app + - ./viewers/main:/usr/src/app links: - indexer + - viewer_package_tracking environment: INDEXER_URL: http://indexer:5000 ports: - "8184:5000" + viewer_package_tracking: + build: ./viewers/package-tracking + environment: + UPS_KEY: ${UPS_KEY} + UPS_USER_ID: ${UPS_USER_ID} + UPS_PASSWORD: ${UPS_PASSWORD} + ports: + - "8185:3000" diff --git a/parsers/package-tracking/main.rb b/parsers/package-tracking/main.rb index e827568..1d8244e 100644 --- a/parsers/package-tracking/main.rb +++ b/parsers/package-tracking/main.rb @@ -1,9 +1,21 @@ require 'sinatra' require 'tracking_number' -set :bind, "0.0.0.0" +set :bind, '0.0.0.0' set :port, 3000 + +def get_tracking_url(tracker) + tracking_urls = { + :ups => 'https://wwwapps.ups.com/WebTracking/track?track=yes&trackNums=%s', + } + tracking_url = tracking_urls[tracker.courier_code] + if tracking_url != nil + tracking_url = tracking_url % tracker.tracking_number + end + return tracking_url +end + # Simple status endpoint on root get '/' do 'OK' @@ -13,14 +25,15 @@ end # Returns [{"token": "extracted token", "type": "token type", "metadata": {}] post '/parse' do body = JSON.parse(request.body.read) - trackers = TrackingNumber.search(body["message"]) + trackers = TrackingNumber.search(body['message']) results = [] for tracker in trackers do results.push({ :token => tracker.tracking_number, - :type => "SHIPPING", + :type => 'SHIPPING', :metadata => { :carrier_name => tracker.courier_name, + :tracking_url => get_tracking_url(tracker), } }) end diff --git a/viewers/main/Dockerfile b/viewers/main/Dockerfile new file mode 100644 index 0000000..9e2910d --- /dev/null +++ b/viewers/main/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/main/Readme.md similarity index 100% rename from viewers/package-tracking/Readme.md rename to viewers/main/Readme.md diff --git a/viewers/main/docker-compose.yml b/viewers/main/docker-compose.yml new file mode 100644 index 0000000..aeb038d --- /dev/null +++ b/viewers/main/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/main/requirements-dev.txt similarity index 100% rename from viewers/package-tracking/requirements-dev.txt rename to viewers/main/requirements-dev.txt diff --git a/viewers/package-tracking/requirements.txt b/viewers/main/requirements.txt similarity index 100% rename from viewers/package-tracking/requirements.txt rename to viewers/main/requirements.txt diff --git a/viewers/package-tracking/viewer/__init__.py b/viewers/main/viewer/__init__.py similarity index 100% rename from viewers/package-tracking/viewer/__init__.py rename to viewers/main/viewer/__init__.py diff --git a/viewers/package-tracking/viewer/main.py b/viewers/main/viewer/main.py similarity index 59% rename from viewers/package-tracking/viewer/main.py rename to viewers/main/viewer/main.py index 0d4b9e9..995ed58 100644 --- a/viewers/package-tracking/viewer/main.py +++ b/viewers/main/viewer/main.py @@ -25,8 +25,19 @@ def get_tokens(): params={'filter_type': 'SHIPPING'}, ) resp.raise_for_status() - print(resp.text, file=sys.stderr) tokens = resp.json().get('tokens') + for token in tokens: + try: + resp = requests.get( + 'http://viewer_package_tracking:3000/info/'+token['token'] + ) + resp.raise_for_status() + print('Response: ', resp.text, file=sys.stderr) + info = resp.json() + token['metadata'].update(info) + except Exception as e: + print('Error', e, file=sys.stderr) + pass return flask.render_template('shipping.html', trackers=tokens) diff --git a/viewers/main/viewer/templates/base.html b/viewers/main/viewer/templates/base.html new file mode 100644 index 0000000..86029a0 --- /dev/null +++ b/viewers/main/viewer/templates/base.html @@ -0,0 +1,46 @@ + + +
+ + + + + + + + {% block head %} + {% endblock %} + +Current tracking information from your email
+# | +Tracking Number | +Carrier | +Status | +Location | +Subject | +Disabled | +
---|---|---|---|---|---|---|
{{ row['id'] }} | ++ {% if row['metadata'].get('tracking_url') %} + + {{ row['token'] }} + + {% else %} + {{ row['token'] }} + {% endif %} + | +{{ row['metadata']['carrier_name'] }} | +{{ row['metadata'].get('events', [{}])[0].get('description', '') }} | +{{ row['metadata'].get('events', [{}])[0].get('location', '') }} | +{{ row['subject'] }} | +{{ row['disabled'] }} | +
# | -Tracking Number | -Carrier | -Subject | -Disabled | -
---|---|---|---|---|
{{ row['id'] }} | -{{ row['token'] }} | -{{ row['metadata']['carrier_name'] }} | -{{ row['subject'] }} | -{{ row['disabled'] }} | -