added all FTS API endpoints as a3go registery commands, will use a MVC approach on API to handle the FTS interation

This commit is contained in:
Valmo Trindade
2024-07-21 02:04:59 -03:00
parent 4dbe91958f
commit ddb0dafcec

View File

@@ -1,12 +1,8 @@
package main package main
import ( import (
"bytes"
"encoding/json"
"fmt" "fmt"
"net/http"
"path" "path"
"strings"
"github.com/indig0fox/a3go/a3interface" "github.com/indig0fox/a3go/a3interface"
"github.com/indig0fox/a3go/assemblyfinder" "github.com/indig0fox/a3go/assemblyfinder"
@@ -30,71 +26,117 @@ func init() {
a3interface.SetVersion("0.0.0") a3interface.SetVersion("0.0.0")
a3interface.RegisterErrorChan(a3ErrorChannel) a3interface.RegisterErrorChan(a3ErrorChannel)
a3interface.NewRegistration("ping"). // ManageAPI/getHelp
SetDefaultResponse("[Received PING Command, starting background process]"). a3interface.NewRegistration("ManageAPI/getHelp").
SetRunInBackground(true). SetDefaultResponse("[Requested Get Help Command, starting background process]").
SetFunction(PingCommand). SetRunInBackground(false).
SetArgsFunction(PingCommandArgs). SetFunction(armatak_controller_ManageAPI_getHelp).
SetArgsFunction(armatak_controller_args_ManageAPI_getHelp).
Register() Register()
} // ManageGeoObject/postGeoObject
a3interface.NewRegistration("ManageGeoObject/postGeoObject").
func PingCommand( SetDefaultResponse("[Requested postGeoObject Command, starting background process]").
ctx a3interface.ArmaExtensionContext, SetRunInBackground(false).
data string, SetFunction(armatak_controller_ManageGeoObject_postGeoObject).
) (string, error) { SetArgsFunction(armatak_controller_args_ManageGeoObject_postGeoObject).
dataSlice := strings.Split(data, "|") Register()
dataSliceWithoutPrefix := dataSlice[1:] // ManageGeoObject/putGeoObject
for i, v := range dataSliceWithoutPrefix { a3interface.NewRegistration("ManageGeoObject/putGeoObject").
dataSliceWithoutPrefix[i] = a3interface.RemoveEscapeQuotes(v) SetDefaultResponse("[Requested putGeoObject Command, starting background process]").
} SetRunInBackground(false).
SetFunction(armatak_controller_ManageGeoObject_putGeoObject).
s := fmt.Sprintf(ctx.SteamID + ` called the ping command to use the dll inside ` + ctx.ServerName + modulePathDir) SetArgsFunction(armatak_controller_args_ManageGeoObject_putGeoObject).
Register()
postRequest(s) // ManageGeoObject/getGeoObject
return s, nil a3interface.NewRegistration("ManageGeoObject/getGeoObject").
} SetDefaultResponse("[Requested getGeoObject Command, starting background process]").
SetRunInBackground(false).
func PingCommandArgs( SetFunction(armatak_controller_ManageGeoObject_getGeoObject).
ctx a3interface.ArmaExtensionContext, SetArgsFunction(armatak_controller_args_ManageGeoObject_getGeoObject).
command string, Register()
args []string, // ManageGeoObject/getGeoObjectByZone
) (string, error) { a3interface.NewRegistration("ManageGeoObject/getGeoObjectByZone").
for i, v := range args { SetDefaultResponse("[Requested getGeoObjectByZone Command, starting background process]").
args[i] = a3interface.RemoveEscapeQuotes(v) SetRunInBackground(false).
} SetFunction(armatak_controller_ManageGeoObject_getGeoObjectByZone).
SetArgsFunction(armatak_controller_args_ManageGeoObject_getGeoObjectByZone).
postRequest(strings.Join(args, " || ")) Register()
// ManageEmergency/postEmergency
return fmt.Sprintf(`["Called by %s", %q, %q]`, a3interface.NewRegistration("ManageEmergency/postEmergency").
ctx.SteamID, SetDefaultResponse("[Requested postEmergency Command, starting background process]").
command, SetRunInBackground(false).
args, SetFunction(armatak_controller_ManageEmergency_postEmergency).
), nil SetArgsFunction(armatak_controller_args_ManageEmergency_postEmergency).
} Register()
// ManageEmergency/getEmergency
func postRequest(content string) { a3interface.NewRegistration("ManageEmergency/getEmergency").
webhookURL := "http://localhost:3000/ping" SetDefaultResponse("[Requested getEmergency Command, starting background process]").
SetRunInBackground(false).
payload := Payload{ SetFunction(armatak_controller_ManageEmergency_getEmergency).
Content: content, SetArgsFunction(armatak_controller_args_ManageEmergency_getEmergency).
} Register()
// ManageEmergency/deleteEmergency
jsonData, err := json.Marshal(payload) a3interface.NewRegistration("ManageEmergency/deleteEmergency").
if err != nil { SetDefaultResponse("[Requested deleteEmergency Command, starting background process]").
fmt.Println("Error marshalling payload:", err) SetRunInBackground(false).
return SetFunction(armatak_controller_ManageEmergency_deleteEmergency).
} SetArgsFunction(armatak_controller_args_ManageEmergency_deleteEmergency).
Register()
req, err := http.Post(webhookURL, "application/json", bytes.NewReader(jsonData)) // ManageChat/postChatToAll
if err != nil { a3interface.NewRegistration("ManageChat/postChatToAll").
fmt.Println("Error creating request:", err) SetDefaultResponse("[Requested postChatToAll Command, starting background process]").
return SetRunInBackground(false).
} SetFunction(armatak_controller_ManageChat_postChatToAll).
SetArgsFunction(armatak_controller_args_ManageChat_postChatToAll).
defer req.Body.Close() Register()
// ManageRoute/postRoute
if req.StatusCode != http.StatusOK { a3interface.NewRegistration("ManageRoute/postRoute").
fmt.Println("Error sending request:", req.Status) SetDefaultResponse("[Requested postRoute Command, starting background process]").
return SetRunInBackground(false).
} SetFunction(armatak_controller_ManageRoute_postRoute).
SetArgsFunction(armatak_controller_args_ManageRoute_postRoute).
Register()
// ManagePresence/postPresence
a3interface.NewRegistration("ManagePresence/postPresence").
SetDefaultResponse("[Requested postPresence Command, starting background process]").
SetRunInBackground(false).
SetFunction(armatak_controller_ManagePresence_postPresence).
SetArgsFunction(armatak_controller_args_ManagePresence_postPresence).
Register()
// ManagePresence/putPresence
a3interface.NewRegistration("ManagePresence/putPresence").
SetDefaultResponse("[Requested putPresence Command, starting background process]").
SetRunInBackground(false).
SetFunction(armatak_controller_ManagePresence_putPresence).
SetArgsFunction(armatak_controller_args_ManagePresence_putPresence).
Register()
// ManageVideoStream/postVideoStream
a3interface.NewRegistration("ManageVideoStream/postVideoStream").
SetDefaultResponse("[Requested postVideoStream Command, starting background process]").
SetRunInBackground(false).
SetFunction(armatak_controller_ManageVideoStream_postVideoStream).
SetArgsFunction(armatak_controller_args_ManageVideoStream_postVideoStream).
Register()
// Sensor/postDrone
a3interface.NewRegistration("Sensor/postDrone").
SetDefaultResponse("[Requested postDrone Command, starting background process]").
SetRunInBackground(false).
SetFunction(armatak_controller_Sensor_postDrone).
SetArgsFunction(armatak_controller_args_Sensor_postDrone).
Register()
// Sensor/postSPI
a3interface.NewRegistration("Sensor/postSPI").
SetDefaultResponse("[Requested postSPI Command, starting background process]").
SetRunInBackground(false).
SetFunction(armatak_controller_Sensor_postSPI).
SetArgsFunction(armatak_controller_args_Sensor_postSPI).
Register()
// ManageKML/postKML
a3interface.NewRegistration("ManageKML/postKML").
SetDefaultResponse("[Requested postKML Command, starting background process]").
SetRunInBackground(false).
SetFunction(armatak_controller_ManageKML_postKML).
SetArgsFunction(armatak_controller_args_ManageKML_postKML).
Register()
} }