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