Files
2025-08-21 08:34:58 +01:00

73 lines
1.7 KiB
Python

#!/usr/bin/env python3
"""
Kind API - Random Compliment Service
Serves random compliments from a YAML file via REST API
"""
import os
import yaml
import random
from flask import Flask, jsonify, abort
app = Flask(__name__)
# Configuration
YAML_FILE = "kind_response.yaml"
API_VERSION = "v1"
# Load compliments from YAML
def load_compliments():
"""Load compliments from YAML file with error handling"""
try:
with open(YAML_FILE, "r") as f:
return yaml.safe_load(f)["compliments"]
except FileNotFoundError:
abort(404, f"Compliment file not found: {YAML_FILE}")
except yaml.YAMLError as e:
abort(500, f"YAML error: {e}")
except Exception as e:
abort(500, f"Unexpected error loading compliments: {e}")
# Main API endpoint
@app.route(f"/api/{API_VERSION}/compliment", methods=["GET"])
def get_compliment():
"""Get a random compliment"""
if random.random() <= 0.01:
return jsonify({"error": "I'm a Teapot"}), 418
compliments = load_compliments()
if not compliments:
abort(404, "No compliments available")
return jsonify(
{
"api_version": API_VERSION,
"compliment": random.choice(compliments),
"status": "success",
}
)
# Health check endpoint
@app.route("/api/health", methods=["GET"])
def health_check():
"""Health check endpoint"""
return jsonify(
{"status": "ok", "message": "Kind API is running", "version": "1.0.0"}
)
if __name__ == "__main__":
# Run in production mode (with proper port handling)
port = int(os.environ.get("PORT", 5000))
app.run(host="0.0.0.0", port=port, threaded=True)