added reload support

This commit is contained in:
Lane Jennison
2020-07-25 22:22:11 -04:00
parent 6355a28f44
commit 8187a5c08d
3 changed files with 40 additions and 2 deletions

View File

@@ -1,2 +1,24 @@
# dl-router
router of download URLs
currently designed for app folder to be mapped into a usgi container.
see sample launch script
`launch_redirect.sh`
expects `userdata.csv` in app folder.. map as needed.
run local
```
cd app
export FLASK_APP=main
python -m flask run --host 0.0.0.0 --port 5000
```
## API
`/status`
meant for simplee healtcheck. returns 200 OK
`/reload`
Flushes cache and reloads userdata file. Return JSON of what new userdata is

View File

@@ -1,16 +1,20 @@
#!/usr/bin/env python
import csv
class Parser():
def __init__(self, csv_file=None):
self._parsed_data = None
self.csv_file = csv_file
# other useful things here
@property
def parsed_data(self):
if self._parsed_data is not None:
return self._parsed_data
self._parsed_data = self.get_data()
return self._parsed_data
def transform_csv_data(self, data):
transformed = {}
key = ""
@@ -22,14 +26,18 @@ class Parser():
print("Missing fields in data '{0}'. Error: '{1}'".format(line, e))
break
return transformed
def import_csv(self):
with open(self.csv_file) as f:
csvreader = csv.reader(f, delimiter='/')
data = list(csvreader)
return data
def get_data(self):
data = self.import_csv()
return self.transform_csv_data(data)
parser = Parser('userdata.csv')
print(parser.parsed_data)
def reload(self):
self._parsed_data = None
self.get_data()
return self.parsed_data

View File

@@ -36,11 +36,19 @@ def status():
return "OK"
@app.route('/reload')
def reload():
global dl_map
dl_map = parser.reload()
return dl_map
@app.route('/', defaults={'path': ''})
@app.route('/<path:path>')
def catch_all(path):
return redirect(get_redirect(path, "127.0.0.1"), 302)
if __name__ == "__main__":
# Only for debugging while developing
app.run(host='0.0.0.0', debug=False, port=80)