-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathentrypoint.py
133 lines (106 loc) · 3.35 KB
/
entrypoint.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
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
from flask import Flask, request, Response, jsonify
from flask_migrate import Migrate
from app import \
user_controller, \
conversation_controller, \
matchup_controller
from app.models import db
import logging
logging.basicConfig()
logger = logging.getLogger(__name__)
logger.setLevel(logging.INFO)
app = Flask("catalyzapp")
app.config["SQLALCHEMY_DATABASE_URI"] = "sqlite:////tmp/test.db"
app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False
db.init_app(app)
migrate = Migrate(app, db)
@app.route("/user", methods=["POST"])
def create_user_endpoint():
json_body = request.get_json(force=True)
try:
logger.info("POST /user %s" % json_body)
user_controller.create_user(**json_body)
return Response(status=200)
except Exception as e:
logger.error(e.message)
return Response(status=400)
@app.route("/user/<int:facebook_id>", methods=["GET"])
def get_user_endpoint(facebook_id):
logger.info("GET /user %s" % facebook_id)
user = user_controller.get_user(facebook_id=facebook_id)
if user is None:
return Response(status=400)
response = jsonify(user)
response.status_code = 200
return response
@app.route("/matchup", methods=["POST"])
def get_matchup_endpoint():
json_body = request.get_json(force=True)
logger.info("POST /matchup %s" % json_body)
facebook_id = json_body.get("facebook_id")
if facebook_id is None:
return Response(status=400)
try:
response = jsonify(
matchup_controller.matchup(facebook_id=facebook_id)
)
response.status_code = 200
return response
except Exception as e:
logger.error("%s" % e.message)
return Response(status=400)
@app.route("/conversation", methods=["POST"])
def get_conversation_endpoint():
json_body = request.get_json(force=True)
logger.info("GET /conversation %s" % json_body)
mentor_facebook_id = json_body.get("mentor")
mentee_facebook_id = json_body.get("mentee")
if mentor_facebook_id is None or mentee_facebook_id is None:
return Response(status=400)
try:
response = jsonify(conversation_controller.get_conversation(
mentor=mentor_facebook_id,
mentee=mentee_facebook_id
))
response.status_code = 200
return response
except Exception:
return Response(status=400)
@app.route("/history", methods=["POST"])
def get_history_endpoint():
json_body = request.get_json(force=True)
logger.info("POST /history %s" % json_body)
facebook_id = json_body.get("facebook_id")
if facebook_id is None:
return Response(status=400)
response = jsonify(conversation_controller.get_conversation_history(
facebook_id=facebook_id
))
response.status_code = 200
return response
@app.route("/message", methods=["POST"])
def create_message_endpoint():
json_body = request.get_json(force=True)
logger.info("POST /message %s" % json_body)
mentor = json_body.get("mentor")
mentee = json_body.get("mentee")
sent_by = json_body.get("sent_by")
message = json_body.get("message")
if mentor is None or \
mentee is None or \
sent_by is None or \
message is None:
return Response(status=400)
try:
conversation_controller.new_message(
mentor=mentor,
mentee=mentee,
sent_by=sent_by,
message=message
)
return Response(status=200)
except Exception as e:
logger.error(e.message)
return Response(status=400)
if __name__ == "__main__":
app.run()