mirror of
https://github.com/jakejarvis/npqueue.git
synced 2026-07-26 08:26:03 -04:00
some clean-up
This commit is contained in:
@@ -48,36 +48,41 @@ var (
|
||||
jsonGet = &http.Client{Timeout: 10 * time.Second}
|
||||
// Using an environment variable to protect IP
|
||||
ServerAddress = os.Getenv("SERVER_IP")
|
||||
// ServerDetails struct to holds PlayerList & ServerDetails struct
|
||||
// ServerDetails struct to hold PlayerList & ServerDetails struct
|
||||
ServerDetails = &ServerDetailsStruct{}
|
||||
// NoPixelData struct
|
||||
NoPixelData Nopixeldata
|
||||
)
|
||||
|
||||
// GetPlayerList sends HTTP get request to server to get list of players
|
||||
// getPlayerList sends HTTP get request to get list of players from /players.json
|
||||
func getPlayerList() (err error) {
|
||||
server := strings.Builder{}
|
||||
fmt.Fprintf(&server, "http://%s/players.json", ServerAddress)
|
||||
|
||||
req, err := jsonGet.Get(server.String())
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer req.Body.Close()
|
||||
|
||||
err = json.NewDecoder(req.Body).Decode(&ServerDetails.Players)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
// GetServerQueueDetails opens UDP socket to FiveM Server and current players and queue from server details
|
||||
func getServerQueueDetails() (err error) {
|
||||
// getServerQueue opens UDP socket to get queue count
|
||||
func getServerQueue() (err error) {
|
||||
serverData := make([]byte, 256)
|
||||
serverConnection, err := net.Dial("udp", ServerAddress)
|
||||
defer serverConnection.Close()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// UDP voodoo to get server info -- https://github.com/LiquidObsidian/fivereborn-query/blob/master/index.js#L54
|
||||
fmt.Fprintf(serverConnection, "\xFF\xFF\xFF\xFFgetinfo f")
|
||||
_, err = bufio.NewReader(serverConnection).Read(serverData)
|
||||
|
||||
@@ -89,18 +94,21 @@ func getServerQueueDetails() (err error) {
|
||||
currentPlayerValues, _ := strconv.ParseInt(string(serverDetails[4]), 0, 64)
|
||||
currentserverQueueValues, _ := strconv.ParseInt(string(serverQueue[0]), 0, 64)
|
||||
ServerDetails.ServerQueue.CurrentPlayers = currentPlayerValues
|
||||
|
||||
if currentserverQueueValues >= 1 {
|
||||
ServerDetails.ServerQueue.CurrentQueue = currentserverQueueValues
|
||||
}
|
||||
} else {
|
||||
return err
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
func steam64toSteam(input int64) (steamid string) {
|
||||
legacySteamid := ((input - 76561197960265728) / 2)
|
||||
steamid = fmt.Sprintf("STEAM_0:%d:%d", (input % 2), legacySteamid)
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
@@ -125,6 +133,7 @@ func parsePlayers() (err error) {
|
||||
}
|
||||
ServerDetails.Players[i].Identifiers = steamIDs
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
@@ -133,10 +142,12 @@ func loadPlayersJSON() (err error) {
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
err = json.NewDecoder(jsonFile.Body).Decode(&NoPixelData)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
@@ -146,6 +157,7 @@ func getPlayerNoPixelInformation(id string) (p NoPixelPlayer) {
|
||||
return NoPixelData[i]
|
||||
}
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
@@ -156,11 +168,14 @@ func List(w http.ResponseWriter, r *http.Request) {
|
||||
fmt.Fprintf(w, "failed to load JSON file %v", err)
|
||||
return
|
||||
}
|
||||
|
||||
getPlayerList()
|
||||
getServerQueueDetails()
|
||||
getServerQueue()
|
||||
parsePlayers()
|
||||
|
||||
w.Header().Set("Content-Type", "application/json")
|
||||
w.Header().Set("Access-Control-Allow-Origin", "*")
|
||||
|
||||
json.NewEncoder(w).Encode(ServerDetails)
|
||||
}
|
||||
|
||||
@@ -174,4 +189,4 @@ func main() {
|
||||
if err := http.ListenAndServe(addr, nil); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user