forked from signal15/mp6z
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathwebapi.py
executable file
·75 lines (64 loc) · 2.27 KB
/
webapi.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
#!flask/bin/python
from shelljob import proc
from flask import Flask, request, Response
app = Flask(__name__)
@app.route('/')
def index():
return "Hello, World!"
@app.route('/api/v1/zones', methods=['GET'])
def get_zones():
group = proc.Group()
group.run(['/home/pi/mp6z/mp6z.py', 'get'])
def generator():
while group.is_pending():
data = group.readlines()
for handle, lines in data:
yield lines
return Response(generator(), mimetype='text/plain')
@app.route('/api/v1/zones/<int:zone_id>', methods=['GET'])
def get_zone(zone_id):
group = proc.Group()
group.run(['/home/pi/mp6z/mp6z.py', 'get', str(zone_id)])
def generator():
while group.is_pending():
data = group.readlines()
for handle, lines in data:
yield lines
return Response(generator(), mimetype='text/plain')
@app.route('/api/v1/zones/<int:zone_id>', methods=['PUT'])
def set_zone(zone_id):
cliargs = ['/home/pi/mp6z/mp6z.py', 'set', str(zone_id)]
if 'volume' in request.json:
cliargs.append('-v')
cliargs.append(str(request.json.get('volume')))
if 'balance' in request.json:
cliargs.append('--bl')
cliargs.append(str(request.json.get('balance')))
if 'bass' in request.json:
cliargs.append('-b')
cliargs.append(str(request.json.get('bass')))
if 'dnd' in request.json:
cliargs.append('-d')
cliargs.append(str(request.json.get('dnd')))
if 'mute' in request.json:
cliargs.append('-m')
cliargs.append(str(request.json.get('mute')))
if 'power' in request.json:
cliargs.append('-p')
cliargs.append(str(request.json.get('power')))
if 'source' in request.json:
cliargs.append('-s')
cliargs.append(str(request.json.get('source')))
if 'treble' in request.json:
cliargs.append('-t')
cliargs.append(str(request.json.get('treble')))
group = proc.Group()
group.run(cliargs)
def generator():
while group.is_pending():
data = group.readlines()
for handle, lines in data:
yield lines
return Response(generator(), mimetype='text/plain')
if __name__ == '__main__':
app.run(debug=True, host="0.0.0.0", port=5000)