forked from zpriddy/ZP_EchoST
/
echopy.py
95 lines (67 loc) · 2.22 KB
/
echopy.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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
import os
import echopy_app
import echopy_doc
import echopy_smartthings as myApp
import smartthings_lib as st
import smartthings_settings as settings
import logger
from flask import Flask, render_template, Response, send_from_directory, request, current_app, redirect, jsonify, json
app = Flask(__name__)
@app.route("/")
def home():
return echopy_doc.main_page
@app.route("/alexa/")
def main():
return echopy_doc.main_page
@app.route("/nest/")
def nest():
return echopy_doc.nest_page
@app.route("/alexa/EchoPyAPI",methods = ['GET','POST'])
def apicalls():
if request.method == 'POST':
data = request.get_json()
print "POST"
sessionId = myApp.data_handler(data)
return sessionId + "\n"
@app.route("/alexa/auth",methods = ['GET','POST'])
def auth():
if request.method == 'GET':
return echopy_doc.auth_page
if request.method == 'POST':
alexaId=request.form['AlexaID']
clientId=request.form['SmartThingsClientID']
clientSecret=request.form['SmartThingsClientSecret']
#userId = myApp.getUserIdFromAlexaId(alexaId)
auth_uri = myApp.STAlexaAuth(alexaId,clientId,clientSecret)
return redirect(auth_uri)
@app.route("/alexa/oauth2/<path:alexaId>",methods = ['GET'])
def authcode(alexaId):
code = request.args.get('code')
userId = myApp.getUserIdFromAlexaId(alexaId)
if st.smartThingsToken(alexaId, userId,code):
print st.stData.getUser(userId).getClientInfo().token
myApp.genNewAlexaId(userId,100)
return redirect("/alexa")
@app.route("/alexa/samples",methods = ['GET','POST'])
def samples():
if request.method == 'GET':
return echopy_doc.samples_page
if request.method == 'POST':
try:
alexaId=request.form['AlexaID']
userId = myApp.getUserIdFromAlexaId(alexaId)
samples = st.getSamples(userId)
myApp.genNewAlexaId(userId,100)
return echopy_doc.samples_results.replace('RESULTS',samples.replace('\n',' '))
except:
return echopy_doc.samples_results.replace('RESULTS',"AN ERROR HAS ACCRUED")
def run_echopy_app():
import SocketServer
#SocketServer.BaseServer.handle_error = close_stream
SocketServer.ThreadingTCPServer.allow_reuse_address = True
echopy_app.run(app)
if __name__ == "__main__":
st.smartThingsDataStoreInit()
logger.init_logging()
myApp.data_init()
run_echopy_app()