Add session API routes
This commit is contained in:
+87
-3
@@ -1,16 +1,19 @@
|
||||
import os
|
||||
import json
|
||||
import time
|
||||
from pathlib import Path
|
||||
from flask import Flask, request
|
||||
from flask import Flask, request, abort, send_from_directory
|
||||
from flask_cors import CORS
|
||||
|
||||
import power, capture, download
|
||||
|
||||
build_folder = Path('../client/build')
|
||||
output_folder = Path('./output')
|
||||
app = Flask(__name__, static_folder=str(build_folder), static_url_path='')
|
||||
CORS(app)
|
||||
|
||||
@app.route('/api/clients', methods=['POST'])
|
||||
def clients():
|
||||
def clients_post():
|
||||
content = request.json
|
||||
print('Recieved:', content)
|
||||
|
||||
@@ -32,8 +35,89 @@ def clients():
|
||||
|
||||
return {'client_id': client_id}
|
||||
|
||||
@app.route('/api/clients/<cid>', methods=['GET'])
|
||||
def clients_get(cid):
|
||||
folder = cid
|
||||
path = output_folder / cid
|
||||
|
||||
if not path.exists():
|
||||
abort(404)
|
||||
|
||||
info_file = path / 'info.json'
|
||||
info_text = info_file.read_text()
|
||||
res = json.loads(info_text)
|
||||
photo_glob = path.glob('*.jpg')
|
||||
res['has_photos'] = bool(list(photo_glob))
|
||||
|
||||
return res
|
||||
|
||||
@app.route('/api/clients/<cid>/session', methods=['GET'])
|
||||
def session_get(cid):
|
||||
folder = cid
|
||||
path = output_folder / cid
|
||||
|
||||
if not path.exists():
|
||||
abort(404)
|
||||
|
||||
photo_glob = path.glob('*.jpg')
|
||||
res = {}
|
||||
res['photos'] = [x.name for x in photo_glob]
|
||||
|
||||
return res
|
||||
|
||||
@app.route('/api/clients/<cid>/session', methods=['DELETE'])
|
||||
def session_delete(cid):
|
||||
folder = cid
|
||||
path = output_folder / cid
|
||||
|
||||
if not path.exists():
|
||||
abort(404)
|
||||
|
||||
photo_glob = path.glob('*.jpg')
|
||||
|
||||
for p in photo_glob:
|
||||
p.unlink()
|
||||
|
||||
return ''
|
||||
|
||||
@app.route('/api/clients/<cid>/session', methods=['POST'])
|
||||
def session_post(cid):
|
||||
folder = cid
|
||||
path = output_folder / cid
|
||||
|
||||
if not path.exists():
|
||||
abort(404)
|
||||
|
||||
# go through the photo taking process
|
||||
|
||||
# warmup
|
||||
power.lights_on()
|
||||
time.sleep(4)
|
||||
power.lights_off()
|
||||
time.sleep(0.5)
|
||||
|
||||
# capture
|
||||
power.lights_on()
|
||||
time.sleep(0.25)
|
||||
capture.trigger_capture()
|
||||
time.sleep(1)
|
||||
power.grid_on()
|
||||
time.sleep(0.25)
|
||||
capture.trigger_capture()
|
||||
time.sleep(1)
|
||||
power.grid_off()
|
||||
power.lights_off()
|
||||
|
||||
download.download_all_photos(path)
|
||||
|
||||
return ''
|
||||
|
||||
@app.route('/')
|
||||
def index():
|
||||
return app.send_static_file('index.html')
|
||||
|
||||
app.run()
|
||||
@app.route('/output/<path:filename>')
|
||||
def output(filename):
|
||||
return send_from_directory('output/', filename)
|
||||
|
||||
app.run(host='0.0.0.0')
|
||||
|
||||
Reference in New Issue
Block a user