mirror of
https://github.com/FAUSheppy/skillbird-sourcemod
synced 2025-12-07 15:41:36 +01:00
implement json HTTP post query
This commit is contained in:
@@ -3,45 +3,91 @@
|
||||
#include <sourcemod>
|
||||
#include <sdktools>
|
||||
#include <socket>
|
||||
#include <system2>
|
||||
#include <json>
|
||||
|
||||
#define DEFAULT_LEN 64
|
||||
#define SNAME_LEN 256
|
||||
#define ACTIVE_CLIENTS_LENGTH 8192
|
||||
|
||||
public void SmartClientName(const client, char[] buf, buflen){
|
||||
new String:name[DEFAULT_LEN];
|
||||
if(IsClientConnected(client)){
|
||||
GetClientName(client, name, DEFAULT_LEN);
|
||||
}
|
||||
}
|
||||
public void HttpResponseCallback(bool success, const char[] error, System2HTTPRequest request, System2HTTPResponse response, HTTPRequestMethod method) {
|
||||
}
|
||||
|
||||
public void SmartClientID(int client, char[] buf, int buflen){
|
||||
if(IsClientConnected(client)){
|
||||
GetClientAuthId(client, AuthId_SteamID64, buf, DEFAULT_LEN, true);
|
||||
}
|
||||
public void SubmittViaHTTP(char[] jsonString){
|
||||
System2HTTPRequest httpRequest = new System2HTTPRequest(HttpResponseCallback, "http://localhost:5000/single-event");
|
||||
httpRequest.SetHeader("Content-Type", "application/json");
|
||||
httpRequest.SetData(jsonString);
|
||||
httpRequest.POST();
|
||||
}
|
||||
|
||||
public void SubmittEventActiveClients(){
|
||||
//new String:str_tmp[ACTIVE_CLIENTS_LENGTH];
|
||||
|
||||
/* primary json */
|
||||
JSON_Object obj = new JSON_Object();
|
||||
obj.SetString("etype", "active_players");
|
||||
obj.SetInt("timestamp", GetTime());
|
||||
|
||||
/* generate players */
|
||||
JSON_Array players = new JSON_Array();
|
||||
|
||||
for(new i = 1; i <= MaxClients;i++){
|
||||
new String:strCliID[DEFAULT_LEN];
|
||||
new String:strCliName[DEFAULT_LEN];
|
||||
SmartClientID(i, strCliID, DEFAULT_LEN);
|
||||
SmartClientName(i, strCliName, DEFAULT_LEN);
|
||||
// strCliID, strCliName, GetClientTeam(i));
|
||||
if(!IsClientConnected(i)){
|
||||
continue;
|
||||
}
|
||||
|
||||
JSON_Object player = new JSON_Object();
|
||||
|
||||
new String:clientId[DEFAULT_LEN];
|
||||
new String:clientName[DEFAULT_LEN];
|
||||
GetClientAuthId(i, AuthId_SteamID64, clientId, DEFAULT_LEN, true);
|
||||
GetClientName(i, clientName, DEFAULT_LEN);
|
||||
|
||||
player.SetString("id", clientId)
|
||||
player.SetString("name", clientName)
|
||||
player.SetInt("team", GetClientTeam(i))
|
||||
players.PushObject(player)
|
||||
}
|
||||
// return json
|
||||
|
||||
/* add players array to primary object */
|
||||
obj.SetObject("players", players);
|
||||
|
||||
char output[2048];
|
||||
obj.Encode(output, sizeof(output));
|
||||
SubmittViaHTTP(output)
|
||||
}
|
||||
|
||||
public void SubmittEventMapInformation(){
|
||||
new String:mapname[DEFAULT_LEN];
|
||||
GetCurrentMap(mapname, sizeof(mapname));
|
||||
|
||||
JSON_Object obj = new JSON_Object();
|
||||
obj.SetString("etype", "map");
|
||||
obj.SetInt("timestamp", GetTime());
|
||||
obj.SetString("map", mapname);
|
||||
|
||||
char output[2048];
|
||||
obj.Encode(output, sizeof(output));
|
||||
SubmittViaHTTP(output)
|
||||
}
|
||||
|
||||
public void SubmittEventWinnerTeam(int team_id){
|
||||
|
||||
JSON_Object obj = new JSON_Object();
|
||||
obj.SetString("etype", "map");
|
||||
obj.SetInt("timestamp", GetTime());
|
||||
obj.SetInt("winnerTeam", team_id);
|
||||
|
||||
char output[2048];
|
||||
obj.Encode(output, sizeof(output));
|
||||
SubmittViaHTTP(output)
|
||||
}
|
||||
|
||||
public void SubmittEventRoundEnd(){
|
||||
JSON_Object obj = new JSON_Object();
|
||||
obj.SetString("etype", "round_end");
|
||||
obj.SetInt("timestamp", GetTime());
|
||||
|
||||
char output[2048];
|
||||
obj.Encode(output, sizeof(output));
|
||||
SubmittViaHTTP(output)
|
||||
}
|
||||
Reference in New Issue
Block a user