from flask import Flask, jsonify, request

app = Flask(__name__)

# Simulación de /repositories - Obtención de lista de repositorios
@app.route('/repositories', methods=['GET'])
def get_repositories():
    # Mock de respuesta exitosa
    return jsonify({
        "repositories": ["repo1", "repo2", "repo3"]
    }), 200

# Simulación de /repositories/<repo> - Creación de repositorio
@app.route('/repositories/<repo>', methods=['PUT'])
def create_repo(repo):
    # Mock de respuesta de repositorio ya existente
    return jsonify({"status": "Repository already exists"}), 200

# Simulación de /repositories/<repo>/sync - Sincronización de repositorio
@app.route('/repositories/<repo>/sync', methods=['POST'])
def sync_repo(repo):
    data = request.json
    dest_repo = data["remote_repository"]
    
    # Mock de respuesta exitosa
    return jsonify({
        "status": "Started synchronization",
        "repository": repo,
        "destination_repository": dest_repo
    }), 200

# Simulación de /repositories/<repo>/backup - Realización de backup
@app.route('/repositories/<repo>/backup', methods=['POST'])
def backup_repo(repo):
    data = request.json
    dest_server = data["ssh_server"]
    dest_user = data["ssh_user"]
    dest_file = data["filename"]

    # Mock de respuesta exitosa
    return jsonify({
        "status": "Started backup",
        "repository": repo,
        "ssh_server": dest_server,
        "ssh_user": dest_user,
        "filename": dest_file
    }), 200

# Simulación de /repositories/<repo> - Eliminación de repositorio
@app.route('/repositories/<repo>', methods=['DELETE'])
def delete_repo(repo):
    # Mock de respuesta exitosa
    return jsonify({"status": "Repository deleted"}), 200

# Simulación de /repositories/<repo>/branches - Obtención de branches del repositorio
@app.route('/repositories/<repo>/branches', methods=['GET'])
def get_repository_branches(repo):
    # Mock de respuesta con branches de ejemplo
    return jsonify({
        "branches": ["main", "dev", "feature-xyz"]
    }), 200

# Simulación de la verificación de salud del servicio
@app.route('/health', methods=['GET'])
def health_check():
    return jsonify({"status": "OK"}), 200

# Simulación de la raíz de la API
@app.route('/', methods=['GET'])
def home():
    return jsonify({
        "message": "OpenGnsys Git API Mock"
    }), 200

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5001, debug=True)
