3 using System.Collections.Generic;
12 private static readonly HttpClient client =
new HttpClient();
14 private enum LuaCsClientToServer
22 private enum LuaCsServerToClient
31 private Dictionary<string, LuaCsAction> netReceives =
new Dictionary<string, LuaCsAction>();
32 private Dictionary<ushort, string> idToString =
new Dictionary<ushort, string>();
33 private Dictionary<string, ushort> stringToId =
new Dictionary<string, ushort>();
42 public void Remove(
string netMessageName)
44 netReceives.Remove(netMessageName);
49 return new WriteOnlyMessage();
54 if (idToString.ContainsKey(
id)) {
return idToString[id]; }
61 if (stringToId.ContainsKey(name)) {
return stringToId[name]; }
66 private void HandleNetMessage(
IReadMessage netMessage,
string name,
Client client =
null)
68 if (netReceives.ContainsKey(name))
72 netReceives[name](netMessage, client);
76 LuaCsLogger.LogError($
"Exception thrown inside NetMessageReceive({name})", LuaCsMessageOrigin.CSharpMod);
77 LuaCsLogger.HandleException(e, LuaCsMessageOrigin.CSharpMod);
82 if (GameSettings.CurrentConfig.VerboseLogging)
85 LuaCsLogger.LogError($
"Received NetMessage for unknown name {name} from {GameServer.ClientLogName(client)}.");
87 LuaCsLogger.LogError($
"Received NetMessage for unknown name {name} from server.");
97 HandleNetMessage(netMessage, name, client);
100 public async
void HttpRequest(
string url,
LuaCsAction callback,
string data =
null,
string method =
"POST",
string contentType =
"application/json", Dictionary<string, string> headers =
null,
string savePath =
null)
104 HttpRequestMessage request =
new HttpRequestMessage(
new HttpMethod(method), url);
108 foreach (var header
in headers)
110 request.Headers.Add(header.Key, header.Value);
116 request.Content =
new StringContent(data, Encoding.UTF8, contentType);
119 HttpResponseMessage response = await client.SendAsync(request);
121 if (savePath !=
null)
125 byte[] responseData = await response.Content.ReadAsByteArrayAsync();
127 using (var fileStream =
new FileStream(savePath, FileMode.Create, FileAccess.Write))
129 fileStream.Write(responseData, 0, responseData.Length);
134 string responseBody = await response.Content.ReadAsStringAsync();
138 callback(responseBody, (
int)response.StatusCode, response.Headers);
141 catch (HttpRequestException e)
151 public void HttpPost(
string url,
LuaCsAction callback,
string data,
string contentType =
"application/json", Dictionary<string, string> headers =
null,
string savePath =
null)
153 HttpRequest(url, callback, data,
"POST", contentType, headers, savePath);
157 public void HttpGet(
string url,
LuaCsAction callback, Dictionary<string, string> headers =
null,
string savePath =
null)
159 HttpRequest(url, callback,
null,
"GET",
null, headers, savePath);
static NetworkMember NetworkMember
static bool IsPathAllowedException(string path, bool write=true, LuaCsMessageOrigin origin=LuaCsMessageOrigin.Unknown)
void HttpPost(string url, LuaCsAction callback, string data, string contentType="application/json", Dictionary< string, string > headers=null, string savePath=null)
ushort StringToId(string name)
string IdToString(ushort id)
void CreateEntityEvent(INetSerializable entity, NetEntityEvent.IData extraData)
async void HttpRequest(string url, LuaCsAction callback, string data=null, string method="POST", string contentType="application/json", Dictionary< string, string > headers=null, string savePath=null)
ushort LastClientListUpdateID
void HttpGet(string url, LuaCsAction callback, Dictionary< string, string > headers=null, string savePath=null)
void Remove(string netMessageName)
void Wait(LuaCsAction action, int millisecondDelay)
delegate void LuaCsAction(params object[] args)