feat: add endpoints for sending and polling messages
This commit is contained in:
@@ -25,6 +25,7 @@ app.logger.addHandler(file_handler)
|
||||
app.logger.setLevel(logging.INFO)
|
||||
|
||||
msg_403_not_primary = "Only a PRIMARY device can perform this action"
|
||||
msg_403_not_secondary = "Only a SECONDARY device can perform this action"
|
||||
|
||||
|
||||
@app.route("/api/v1/login", methods=["POST"])
|
||||
@@ -95,5 +96,40 @@ def get_sms_messages_by_local_phone_number():
|
||||
return make_response(jsonify([n.to_dict() for n in db.get_sms_messages_by_local_phone_number(cur, local_phone_number)]), 200)
|
||||
|
||||
|
||||
@app.route("/api/v1/send-message", methods=["POST"])
|
||||
@jwt_required()
|
||||
def send_sms_message():
|
||||
if not is_primary(get_jwt()):
|
||||
return make_response(jsonify(msg=msg_403_not_primary), 403)
|
||||
|
||||
content = request.json.get("content", None)
|
||||
access_key = get_jwt_identity()
|
||||
local_phone_number = request.json.get("local_phone_number", None)
|
||||
remote_phone_number = request.json.get("remote_phone_number", None)
|
||||
|
||||
app.logger.debug(f"sending msg: content='{content}', access_key='{access_key}', local_num='{local_phone_number}', remote_num='{remote_phone_number}'")
|
||||
|
||||
if db.send_sms_message(cur, content, access_key, local_phone_number, remote_phone_number):
|
||||
return make_response(jsonify(msg="Message successfully sent"), 200)
|
||||
else:
|
||||
return make_response(jsonify(msg="Failed to send message"), 400)
|
||||
|
||||
|
||||
@app.route("/api/v1/get-queued-sms-messages", methods=["GET"])
|
||||
@jwt_required()
|
||||
def get_queued_sms_messages():
|
||||
if not is_secondary(get_jwt()):
|
||||
return make_response(jsonify(msg=msg_403_not_secondary), 403)
|
||||
|
||||
access_key = get_jwt_identity()
|
||||
local_phone_number = request.json.get("local_phone_number", None)
|
||||
|
||||
return make_response(jsonify([m.to_dict() for m in db.get_queued_sms_messages(cur, local_phone_number)]), 200)
|
||||
|
||||
|
||||
def is_primary(jwt):
|
||||
return jwt["typ"] == "PRIMARY"
|
||||
|
||||
|
||||
def is_secondary(jwt):
|
||||
return jwt["typ"] == "SECONDARY"
|
||||
|
||||
Reference in New Issue
Block a user