diff --git a/backend/app.py b/backend/app.py new file mode 100644 index 0000000000000000000000000000000000000000..d1a498007921af5aa5fa381e5348cbf45dd32a22 --- /dev/null +++ b/backend/app.py @@ -0,0 +1,55 @@ +from flask import Flask, request, jsonify +from flask_cors import CORS +import requests +import json +from dotenv import load_dotenv +import os + +load_dotenv() + +app = Flask(__name__) + +CORS(app, origins=[os.getenv("FRONTEND_URL")]) + +AIRFLOW_BASE_URL = os.getenv("AIRFLOW_BASE_URL") +AIRFLOW_DAG_ID = os.getenv("AIRFLOW_DAG_ID") +AIRFLOW_USERNAME = os.getenv("AIRFLOW_USERNAME") +AIRFLOW_PASSWORD = os.getenv("AIRFLOW_PASSWORD") + +@app.route("/", methods=["GET", "POST"]) +def index(): + if request.method == "POST": + data = request.get_json() + print("Data received:", data) + trigger_dag(data) + return jsonify({"message": "Data submitted successfully!"}) + + return jsonify({"message": "Hello, World!"}) + + +def trigger_dag(payload): + """ + Trigger Airflow DAG dengan REST API + """ + try: + url = f"{AIRFLOW_BASE_URL}/api/v1/dags/{AIRFLOW_DAG_ID}/dagRuns" + + headers = {"Content-Type": "application/json"} + data = {"conf": payload} + + response = requests.post( + url, + headers=headers, + auth=(AIRFLOW_USERNAME, AIRFLOW_PASSWORD), + data=json.dumps(data) + ) + + response.raise_for_status() + + print(f"DAG triggered successfully: {response.json()}") + except requests.exceptions.RequestException as e: + print(f"Error triggering DAG: {e}") + + +if __name__ == "__main__": + app.run(host="0.0.0.0", port=8000) \ No newline at end of file diff --git a/backend/requirements.txt b/backend/requirements.txt new file mode 100644 index 0000000000000000000000000000000000000000..a509e2707c17d5ece6f7f31954e99326949ee8a4 --- /dev/null +++ b/backend/requirements.txt @@ -0,0 +1,4 @@ +flask +requests +python-dotenv +flask-cors \ No newline at end of file