with Ada.Environment_Variables; with Ada.Text_IO; with Util.Http.Clients.Curl; with Util.Http.Clients; package body Adabots_Lua_Dispatcher is function Create_Lua_Dispatcher (Workspace_ID : Ada.Strings.Unbounded.Unbounded_String; Bot_Name : Ada.Strings.Unbounded.Unbounded_String) return Lua_Dispatcher is ((Workspace_ID => Workspace_ID, Bot_Name => Bot_Name)); function Raw_Function (T : Lua_Dispatcher; Lua_Code : String) return String is package Env renames Ada.Environment_Variables; Default_URI : constant String := "http://adabots.net/instruction_proxy"; URI : constant String := (if Env.Exists ("ADABOTS_PROXY_URL") then Env.Value ("ADABOTS_PROXY_URL") else Default_URI); Response : Util.Http.Clients.Response; Data : constant String := "{""workspaceId"": """ & Ada.Strings.Unbounded.To_String (T.Workspace_ID) & """, ""instruction"": """ & Lua_Code & """, ""botName"": """ & Ada.Strings.Unbounded.To_String (T.Bot_Name) & """}"; begin Util.HTTP.Clients.Curl.Register; declare Http : Util.Http.Clients.Client; begin Ada.Text_IO.Put_Line ("Scheduled " & Lua_Code); Http.Add_Header ("content-type", "application/json"); Http.Post (URI, Data, Response); return Response.Get_Body; end; end Raw_Function; function Boolean_Function (T : Lua_Dispatcher; Lua_Code : String) return Boolean is Returned_String : constant String := Raw_Function (T, Lua_Code); begin if Returned_String = "true" then return True; elsif Returned_String = "false" then return False; end if; raise Program_Error with Returned_String; end Boolean_Function; procedure Raw_Procedure (T : Lua_Dispatcher; Lua_Code : String) is Result : String := Raw_Function (T, Lua_Code); pragma Unreferenced (Result); begin null; end Raw_Procedure; end Adabots_Lua_Dispatcher;