diff --git a/Barotrauma/BarotraumaServer/ServerSource/Lua/LuaClasses.cs b/Barotrauma/BarotraumaServer/ServerSource/Lua/LuaClasses.cs index 5b30c980a..9f0e0f9a6 100644 --- a/Barotrauma/BarotraumaServer/ServerSource/Lua/LuaClasses.cs +++ b/Barotrauma/BarotraumaServer/ServerSource/Lua/LuaClasses.cs @@ -7,6 +7,7 @@ using Barotrauma.Networking; using System.Threading.Tasks; using Barotrauma.Items.Components; using System.IO; +using System.Net; namespace Barotrauma { @@ -418,6 +419,51 @@ namespace Barotrauma } } + private class LuaNetworking + { + public LuaSetup env; + + public LuaNetworking(LuaSetup e) + { + env = e; + } + + public string RequestPostHTTP(string url, string data, string contentType = "application/json") + { + try + { + var httpWebRequest = (HttpWebRequest)WebRequest.Create(url); + httpWebRequest.ContentType = contentType; + httpWebRequest.Method = "POST"; + + using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream())) + streamWriter.Write(data); + + var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse(); + using (var streamReader = new StreamReader(httpResponse.GetResponseStream())) + return streamReader.ReadToEnd(); + }catch(Exception e) + { + return e.ToString(); + } + } + + public string RequestGetHTTP(string url) + { + try + { + var httpWebRequest = (HttpWebRequest)WebRequest.Create(url); + + var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse(); + using (var streamReader = new StreamReader(httpResponse.GetResponseStream())) + return streamReader.ReadToEnd(); + }catch(Exception e) + { + return e.ToString(); + } + } + } + // hooks: // chatMessage // think diff --git a/Barotrauma/BarotraumaServer/ServerSource/Lua/LuaSetup.cs b/Barotrauma/BarotraumaServer/ServerSource/Lua/LuaSetup.cs index f5853193c..630e79241 100644 --- a/Barotrauma/BarotraumaServer/ServerSource/Lua/LuaSetup.cs +++ b/Barotrauma/BarotraumaServer/ServerSource/Lua/LuaSetup.cs @@ -125,6 +125,7 @@ namespace Barotrauma UserData.RegisterType(); UserData.RegisterType(); UserData.RegisterType(); + UserData.RegisterType(); UserData.RegisterType(); UserData.RegisterType(); UserData.RegisterType(); @@ -161,7 +162,8 @@ namespace Barotrauma UserData.RegisterType(); UserData.RegisterType(); UserData.RegisterType(); - + + lua = new Script(CoreModules.Preset_SoftSandbox | CoreModules.LoadMethods); lua.Options.DebugPrint = PrintMessage; @@ -178,6 +180,7 @@ namespace Barotrauma lua.Globals["Random"] = new LuaRandom(); lua.Globals["Timer"] = new LuaTimer(this); lua.Globals["File"] = UserData.CreateStatic(); + lua.Globals["Networking"] = new LuaNetworking(this); lua.Globals["WayPoint"] = UserData.CreateStatic(); lua.Globals["SpawnType"] = UserData.CreateStatic(); lua.Globals["ChatMessageType"] = UserData.CreateStatic();