HortusFox API GUI

An API GUI to run API requests on a HortusFox workspace.

# A simple GUI to perform API requests on a HortusFox workspace

hideconsole;

require "strings";
require "fileio";
require "forms";
require "speech";

global curScriptPath string;
global wndstyles int;
global frmMain int;
global bFormRes bool;

getscriptpath curScriptPath;

spk_setvoice "Microsoft Zira Desktop";
spk_setvolume 100;

function btnRun_OnClick void()
{
    local szTxtWorkspace string;
    local szTxtApiKey string;
    local szTxtEndpoint string;
    local szResult string;
    
    wnd_gettextboxtext frmMain txtWorkspace szTxtWorkspace;
    wnd_gettextboxtext frmMain txtApiKey szTxtApiKey;
    wnd_gettextboxtext frmMain txtEndpoint szTxtEndpoint;
    
    sys {curl -H "Accept: application/json" -X POST -d "token=%szTxtApiKey" "%szTxtWorkspace/api/%szTxtEndpoint" --silent} szResult;
    
    wnd_settextboxtext frmMain txtResponse "%szResult";
    
    spk_speakasync "Request completed.";
};

function btnSave_OnClick void()
{
    local szTxtResponse string;
    local hSaveFile int;
    local bFileExists bool;
    local bFileOp bool;
    
    wnd_gettextboxtext frmMain txtResponse szTxtResponse;
    
    fexists "%curScriptPath/hortusfox-apigui.json" bFileExists;
    if (%bFileExists, -eq, true) {
        fremove "%curScriptPath/hortusfox-apigui.json" bFileOp;
    };
    
    fopen "%curScriptPath/hortusfox-apigui.json" false hSaveFile;
    fwritetext %hSaveFile "%szTxtResponse";
    fclose %hSaveFile;
    
    spk_speakasync "Content saved.";
};

bitop "or" (%WS_OVERLAPPED, %WS_SYSMENU, %WS_VISIBLE) wndstyles;

wnd_spawnform "frmMain" "HortusFox API GUI" 200 300 500 500 %wndstyles frmMain;

wnd_isformvalid frmMain bFormRes;

if (%bFormRes, -eq, false) {
    print "Failed to create form.";
    pause;
    exit;
};

wnd_spawnlabel frmMain "lblWorkspace" 20 10 90 20 "Workspace: ";
wnd_spawntextbox frmMain "txtWorkspace" 20 35 450 20 "http://localhost:8080";

wnd_spawnlabel frmMain "lblApiKey" 20 70 70 20 "API Key: ";
wnd_spawntextbox frmMain "txtApiKey" 20 95 450 20 "12345";

wnd_spawnlabel frmMain "lblEndpoint" 20 130 70 20 "Endpoint: ";
wnd_spawntextbox frmMain "txtEndpoint" 20 155 450 20 "";

wnd_spawntextbox frmMain "txtResponse" 20 200 450 190 "";
wnd_settextboxmultiline frmMain "txtResponse";

wnd_spawnbutton frmMain "btnRun" 20 410 200 30 "Run";
wnd_spawnbutton frmMain "btnSave" 269 410 200 30 "Save";

while (%bFormRes, -eq, true) {
    wnd_process;

    wnd_isformvalid frmMain bFormRes;
};

Go back