-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.go
More file actions
93 lines (75 loc) · 2.02 KB
/
main.go
File metadata and controls
93 lines (75 loc) · 2.02 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
package main
import (
"embed"
"fmt"
"log"
"sync"
"github.com/SteamServerUI/ExamplePlugin/api"
"github.com/SteamServerUI/ExamplePlugin/global"
"github.com/SteamServerUI/PluginLib"
)
//go:embed assets/*
var assets embed.FS
var (
settingsResponse PluginLib.SettingsResponse
wg sync.WaitGroup
)
func main() {
// Register embedded assets
global.AssetManager = PluginLib.RegisterAssets(&assets)
PluginLib.InitConfig(global.PluginName, global.DefaultLogLevel)
GetGameserverRunningStatus()
LogSomething()
SaveASetting()
GetSetting()
//GetAllSettings()
ExposeAPI(&wg)
wg.Wait()
}
func GetGameserverRunningStatus() {
rsp, err := PluginLib.GetServerStatus()
if err != nil {
log.Fatalf("Failed to get server status: %v", err)
}
fmt.Println("Gameserver running:", rsp.Status, "UUID:", rsp.UUID)
}
func LogSomething() {
// allows either a message
PluginLib.Log("Test")
// or a message and a log level
PluginLib.Log("Test", "Info")
// also allows proper error handling
err := PluginLib.Log("Test", "Non-Existing-Level")
if err != nil {
fmt.Println("Error (expected, since level doesn't exist):", err)
}
}
func SaveASetting() {
payload := map[string]string{"GameBranch": "public"}
if _, err := PluginLib.Post("/api/v2/settings/save", &payload, &settingsResponse); err != nil {
fmt.Println("Error:", err)
return
}
fmt.Println("Setting saved:", settingsResponse.Message)
}
func GetSetting() {
value, err := PluginLib.GetSetting("GameBranch")
if err != nil {
log.Printf("Failed to get setting: %v", err)
return
}
fmt.Printf("Setting 'GameBranch': %v\n", value)
}
func GetAllSettings() {
settings := PluginLib.GetAllSettings()
for key, value := range settings {
fmt.Printf("Setting '%s': %v\n", key, value)
}
}
func ExposeAPI(wg *sync.WaitGroup) {
PluginLib.RegisterRoute("/", api.HandleTextFromAssetsManager)
PluginLib.RegisterRoute("/something", api.HandleSomethingElse)
PluginLib.RegisterRoute("/image", api.HandleBinaryFromAssetsManager)
PluginLib.ExposeAPI(wg)
PluginLib.RegisterPluginAPI()
}