from flask import Flask, request, jsonify from .config import Config from .utils import get_latest_emails, get_latest_email_with_code, add_allowed_domain, remove_allowed_domain, get_allowed_domains, get_allowed_domains_with_time def create_app(): app = Flask(__name__) app.config.from_object(Config) @app.route('/emails', methods=['GET']) def get_emails(): recipient = request.args.get('recipient') limit = request.args.get('limit', default=10, type=int) if not recipient: return jsonify({'error': 'Recipient email is required'}), 400 emails = get_latest_emails(recipient, limit) return jsonify(emails) @app.route('/latest_email', methods=['GET']) def get_latest_email(): recipient = request.args.get('recipient') if not recipient: return jsonify({'error': 'Recipient email is required'}), 400 email_data = get_latest_email_with_code(recipient) if email_data: return jsonify(email_data) return jsonify({'error': 'No emails found for this recipient'}), 404 @app.route('/allowed_domains/add', methods=['POST']) def add_domain(): domain = request.json.get('domain') if not domain: return jsonify({'error': 'Domain is required'}), 400 add_allowed_domain(domain) return jsonify({'message': 'Domain added successfully'}), 201 @app.route('/allowed_domains/remove', methods=['POST']) def remove_domain(): domain = request.json.get('domain') if not domain: return jsonify({'error': 'Domain is required'}), 400 remove_allowed_domain(domain) return jsonify({'message': 'Domain removed successfully'}), 200 @app.route('/allowed_domains/list', methods=['GET']) def list_domains(): domains = get_allowed_domains() return jsonify(domains), 200 @app.route('/allowed_domains/list_with_time', methods=['GET']) def list_domains_with_time(): domains_with_time = get_allowed_domains_with_time() return jsonify(domains_with_time), 200 return app