diff --git a/README.md b/README.md index 3c38978..358c81d 100644 --- a/README.md +++ b/README.md @@ -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 + diff --git a/app/download_image_map.py b/app/download_image_map.py index 53e1122..cbe4612 100644 --- a/app/download_image_map.py +++ b/app/download_image_map.py @@ -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 diff --git a/app/main.py b/app/main.py index 6d0740d..00323a5 100644 --- a/app/main.py +++ b/app/main.py @@ -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('/') 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)