from flask import Flask, jsonify
from flask_cors import CORS
import psutil
import time

app = Flask(__name__)

# Enable CORS for all routes
CORS(app)

# Route for CPU usage
@app.route('/api/cpu', methods=['GET'])
def get_cpu():
    cpu_usage = psutil.cpu_percent(interval=1)
    return jsonify({'cpu_usage': cpu_usage})

# Route for RAM usage
@app.route('/api/ram', methods=['GET'])
def get_ram():
    ram_info = psutil.virtual_memory()
    return jsonify({
        'total_ram': ram_info.total,
        'used_ram': ram_info.used,
        'free_ram': ram_info.available,
        'ram_percentage': ram_info.percent
    })

# Route for Storage usage
@app.route('/api/storage', methods=['GET'])
def get_storage():
    disk_info = psutil.disk_usage('/')
    return jsonify({
        'total_storage': disk_info.total,
        'used_storage': disk_info.used,
        'free_storage': disk_info.free,
        'storage_percentage': disk_info.percent
    })

# Route for CPU temperature
@app.route('/api/cpu_temperature', methods=['GET'])
def get_cpu_temperature():
    temps = psutil.sensors_temperatures()
    if not temps:
        return jsonify({'error': 'No temperature sensors found'}), 404
    cpu_temp = temps.get('coretemp', [])[0].current if 'coretemp' in temps else None
    return jsonify({'cpu_temperature': cpu_temp})

# Route for uptime
@app.route('/api/uptime', methods=['GET'])
def get_uptime():
    uptime = time.time() - psutil.boot_time()
    return jsonify({'uptime_seconds': uptime})

# Route to check if the server is alive
@app.route('/api/health', methods=['GET'])
def health_check():
    return jsonify({'status': 'alive'}), 200

# Main entry point
if __name__ == '__main__':
    app.run(host='0.0.0.0', port=7000)
