78 lines
2.4 KiB
Python
Raw Normal View History

from flask import Flask, request, jsonify
import psycopg2
from psycopg2 import sql
from flask_cors import CORS
from twilio.twiml.messaging_response import MessagingResponse
import logging
import os
# Set up logging
logging.basicConfig(level=logging.DEBUG)
app = Flask(__name__, static_url_path='', static_folder='static')
CORS(app, resources={r"/*": {"origins": "*"}})
# Database configuration from environment variables
DB_HOST = os.getenv('DB_HOST', '38.102.124.126')
DB_NAME = os.getenv('DB_NAME', 'sms_app')
DB_USER = os.getenv('DB_USER', 'sms_user')
DB_PASS = os.getenv('DB_PASS', 'rusty2281')
def get_db_connection():
try:
conn = psycopg2.connect(dbname=DB_NAME, user=DB_USER, password=DB_PASS, host=DB_HOST)
return conn
except Exception as e:
logging.error(f"Database connection failed: {e}")
raise
@app.route('/sms', methods=['POST'])
def sms_reply():
try:
sender = request.form['From']
body = request.form['Body']
logging.debug(f"Received SMS from {sender}: {body}")
conn = get_db_connection()
with conn.cursor() as cur:
cur.execute("INSERT INTO messages (sender, body) VALUES (%s, %s)", (sender, body))
conn.commit()
conn.close()
logging.debug("Message saved to database")
# Respond to the sender
resp = MessagingResponse()
resp.message("Message received")
return str(resp)
except Exception as e:
logging.error(f"Error saving message: {e}")
return str(e), 500
@app.route('/api/messages', methods=['GET'])
def get_messages():
try:
logging.debug("Fetching messages from database")
conn = get_db_connection()
with conn.cursor() as cur:
cur.execute("SELECT sender, body, received FROM messages ORDER BY received DESC")
messages = cur.fetchall()
conn.close()
logging.debug(f"Fetched messages: {messages}")
return jsonify(messages)
except Exception as e:
logging.error(f"Error fetching messages: {e}")
return str(e), 500
@app.route('/')
def index():
try:
logging.debug("Serving index.html")
return app.send_static_file('index.html')
except Exception as e:
logging.error(f"Error serving index.html: {e}")
return str(e), 500
if __name__ == '__main__':
logging.debug("Starting Flask server")
app.run(debug=True, host='0.0.0.0', port=5001)