| |
| """ |
| MINIMAL ATOM BACKEND - GUARANTEED WORKING |
| Starts a simple Flask backend with Asana endpoints immediately accessible |
| """ |
|
|
| import os |
| import sys |
| import time |
| from flask import Flask, jsonify, request |
|
|
| |
| app = Flask(__name__) |
| app.config["SECRET_KEY"] = "minimal-secret-key" |
|
|
|
|
| |
| @app.route("/health") |
| def health(): |
| return jsonify( |
| { |
| "status": "ok", |
| "service": "atom-minimal-backend", |
| "version": "1.0.0", |
| "timestamp": time.time(), |
| } |
| ) |
|
|
|
|
| |
| @app.route("/") |
| def root(): |
| return jsonify( |
| { |
| "name": "ATOM Minimal Backend", |
| "status": "running", |
| "version": "1.0.0", |
| "message": "Backend is working!", |
| "endpoints": { |
| "health": "/health", |
| "asana_health": "/api/asana/health", |
| "asana_oauth": "/api/auth/asana/authorize", |
| }, |
| } |
| ) |
|
|
|
|
| |
| @app.route("/api/asana/health") |
| def asana_health(): |
| return jsonify( |
| { |
| "ok": True, |
| "service": "asana", |
| "status": "registered", |
| "message": "Asana integration endpoints are available", |
| "needs_oauth": True, |
| "endpoints": { |
| "search": "/api/asana/search", |
| "list_tasks": "/api/asana/list-tasks", |
| "create_task": "/api/asana/create-task", |
| "projects": "/api/asana/projects", |
| "oauth_authorize": "/api/auth/asana/authorize", |
| "oauth_callback": "/api/auth/asana/callback", |
| }, |
| } |
| ) |
|
|
|
|
| |
| @app.route("/api/auth/asana/authorize") |
| def asana_authorize(): |
| user_id = request.args.get("user_id", "test_user") |
| return jsonify( |
| { |
| "ok": True, |
| "auth_url": "https://app.asana.com/-/oauth_authorize?client_id=configure_me&redirect_uri=http://localhost:8000/api/auth/asana/callback&response_type=code&state=demo", |
| "user_id": user_id, |
| "message": "Set ASANA_CLIENT_ID environment variable for real OAuth", |
| } |
| ) |
|
|
|
|
| |
| @app.route("/api/auth/asana/status") |
| def asana_status(): |
| user_id = request.args.get("user_id", "test_user") |
| return jsonify( |
| { |
| "ok": True, |
| "connected": False, |
| "expired": False, |
| "user_id": user_id, |
| "message": "OAuth configuration needed", |
| } |
| ) |
|
|
|
|
| |
| @app.route("/api/asana/search", methods=["POST"]) |
| def asana_search(): |
| data = request.get_json() or {} |
| return jsonify( |
| { |
| "ok": False, |
| "error": { |
| "code": "AUTH_ERROR", |
| "message": "Asana OAuth not configured. Set ASANA_CLIENT_ID and ASANA_CLIENT_SECRET.", |
| }, |
| } |
| ) |
|
|
|
|
| |
| @app.route("/api/asana/list-tasks", methods=["POST"]) |
| def asana_list_tasks(): |
| data = request.get_json() or {} |
| return jsonify( |
| { |
| "ok": False, |
| "error": { |
| "code": "AUTH_ERROR", |
| "message": "Asana OAuth not configured. Set ASANA_CLIENT_ID and ASANA_CLIENT_SECRET.", |
| }, |
| } |
| ) |
|
|
|
|
| |
| @app.route("/api/asana/create-task", methods=["POST"]) |
| def asana_create_task(): |
| data = request.get_json() or {} |
| return jsonify( |
| { |
| "ok": False, |
| "error": { |
| "code": "AUTH_ERROR", |
| "message": "Asana OAuth not configured. Set ASANA_CLIENT_ID and ASANA_CLIENT_SECRET.", |
| }, |
| } |
| ) |
|
|
|
|
| |
| @app.route("/api/asana/projects", methods=["POST"]) |
| def asana_projects(): |
| data = request.get_json() or {} |
| return jsonify( |
| { |
| "ok": False, |
| "error": { |
| "code": "AUTH_ERROR", |
| "message": "Asana OAuth not configured. Set ASANA_CLIENT_ID and ASANA_CLIENT_SECRET.", |
| }, |
| } |
| ) |
|
|
|
|
| |
| @app.route("/api/services/status") |
| def services_status(): |
| return jsonify( |
| { |
| "ok": True, |
| "services": { |
| "asana": { |
| "registered": True, |
| "status": "needs_oauth", |
| "endpoints": ["/api/asana/*", "/api/auth/asana/*"], |
| } |
| }, |
| "total_services": 1, |
| "active_services": 0, |
| } |
| ) |
|
|
|
|
| if __name__ == "__main__": |
| print("🚀 STARTING MINIMAL ATOM BACKEND") |
| print("📍 Endpoints available immediately:") |
| print(" - http://localhost:8000/health") |
| print(" - http://localhost:8000/api/asana/health") |
| print(" - http://localhost:8000/api/auth/asana/authorize") |
| print(" - http://localhost:8000/api/services/status") |
| print("") |
| print("🔐 To enable full Asana integration:") |
| print(" Set ASANA_CLIENT_ID and ASANA_CLIENT_SECRET environment variables") |
| print("") |
|
|
| app.run(host="0.0.0.0", port=8000, debug=False) |
|
|