import gradio as gr
import openai
from api_usage import get_subscription, check_key_availability #, get_usage, check_gpt4_availability, check_gpt4_32k_availability, 

def get_key_info(key):
    # Return a dictionary containing key information
    openai.api_key = key
    key_avai = check_key_availability()
    info_dict = {"account_name": "",
                 "key_availability": key_avai,
                 "gpt4_availability": "",
                 "gpt4_32k_availability": "",
                 "requests_per_minute": "",
                 "tokens_per_minute": "",
                 "organization": "",
                 "quota": ""}
    if key_avai:
        info = get_subscription(key)
#        info_dict["account_name"] = info["account_name"]
        info_dict["gpt4_availability"] = info["has_gpt4"]
        info_dict["gpt4_32k_availability"] = info["has_gpt4_32k"]
        info_dict["requests_per_minute"] = info["rpm"]
        info_dict["tokens_per_minute"] = info["tpm"]
        info_dict["organization"] = info["organization"]
        info_dict["quota"] = info["quota"]
    return info_dict


def clear_inputs(text):
    return ""

with gr.Blocks() as demo:
    gr.Markdown('''
    # OpenAI API Key Status Checker
    
    *(Based on shaocongma and CncAnon1 key checker)*
    ''')

    with gr.Row():
        with gr.Column():
            key =  gr.Textbox(lines=1, max_lines=1, label="OpenAI API Key")
            with gr.Row():
                clear_button = gr.Button("Clear")
                submit_button = gr.Button("Submit", variant="primary")
        with gr.Column():
            info = gr.JSON(label="OpenAI API Key Information")

    clear_button.click(fn=clear_inputs, inputs=[key], outputs=[key])
    submit_button.click(fn=get_key_info, inputs=[key], outputs=[info], api_name="get_key_info")
demo.launch()