Spaces:
Running
Running
File size: 2,654 Bytes
b560569 a39570d 506f1ee 751e28f a0b418d b560569 8a531f0 b560569 0f9e24f a0b418d 8a531f0 b560569 8a531f0 b560569 73e88eb 6e2376b 8a531f0 734a45c 0f9e24f 6e2376b 73e88eb 734a45c b560569 8a531f0 73e88eb e3447a5 e1e0cc1 8a531f0 e1e0cc1 8a531f0 d45a226 73e88eb 7ab0240 8a531f0 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
import gradio as gr
from Data_Fetching_and_Rendering import fetch_org_urn
# shared state
token_received = {"status": False, "token": "", "client_id": ""}
# 1) this will be called by POST
def receive_token(accessToken: str, client_id: str):
token_received["status"] = True
token_received["token"] = accessToken
token_received["client_id"] = client_id
return {
"status": "✅ Code received",
"token": accessToken,
"client_id": client_id
}
# 2) poll for status
def check_status():
return "✅ Code received" if token_received["status"] else "❌ Waiting for code…"
def show_token():
return token_received["token"] if token_received["status"] else ""
def show_client_id():
return token_received["client_id"] if token_received["status"] else ""
# 3) fetch after token arrives
def fetch_and_render():
if not token_received["status"]:
return "", ""
return fetch_org_urn(token_received["client_id"], token_received["token"])
# 4) reset everything
def reset_status():
token_received["status"] = False
token_received["token"] = ""
token_received["client_id"] = ""
return "❌ Waiting for code…", "", "", "", ""
with gr.Blocks() as demo:
# Hidden inputs for POST
hidden_token = gr.Textbox(visible=False, elem_id="hidden_token")
hidden_client_id = gr.Textbox(visible=False, elem_id="hidden_client_id")
hidden_btn = gr.Button(visible=False, elem_id="hidden_btn")
# Display elements
status_box = gr.Textbox(value=check_status(), label="Status", interactive=False)
token_display = gr.Textbox(value=show_token(), label="Received Token", interactive=False)
client_display = gr.Textbox(value=show_client_id(), label="Client ID", interactive=False)
urn_display = gr.Textbox(value="", label="Org URN", interactive=False)
name_display = gr.Textbox(value="", label="Org Name", interactive=False)
# Wire hidden POST handler
hidden_btn.click(
fn=receive_token,
inputs=[hidden_token, hidden_client_id],
outputs=[status_box, token_display, client_display]
)
with gr.Row():
gr.Button("Refresh Status").click(fn=check_status, outputs=status_box)
gr.Button("Reset").click(
fn=reset_status,
outputs=[status_box, token_display, client_display, urn_display, name_display]
)
# Timer triggers polling and fetch
timer = gr.Timer(1.0)
timer.tick(fn=check_status, outputs=status_box)
timer.tick(fn=fetch_and_render, outputs=[urn_display, name_display])
# Launch
demo.launch(server_name="0.0.0.0", server_port=7860) |