diff --git a/ShiftOS.Server/Program.cs b/ShiftOS.Server/Program.cs
index c468503..352214d 100644
--- a/ShiftOS.Server/Program.cs
+++ b/ShiftOS.Server/Program.cs
@@ -34,6 +34,7 @@ using Newtonsoft.Json;
using System.Net;
using System.Net.Sockets;
using System.Security.Cryptography;
+using System.IO.Compression;
namespace ShiftOS.Server
{
@@ -223,11 +224,39 @@ namespace ShiftOS.Server
File.WriteAllText(fPath, Encryption.Encrypt(contents));
}
- ///
- /// Interpret the specified msg.
- ///
- /// Message.
- public static void Interpret(ServerMessage msg)
+ public static string Compress(string s)
+ {
+ var bytes = Encoding.Unicode.GetBytes(s);
+ using (var msi = new MemoryStream(bytes))
+ using (var mso = new MemoryStream())
+ {
+ using (var gs = new GZipStream(mso, CompressionMode.Compress))
+ {
+ msi.CopyTo(gs);
+ }
+ return Convert.ToBase64String(mso.ToArray());
+ }
+ }
+
+ public static string Decompress(string s)
+ {
+ var bytes = Convert.FromBase64String(s);
+ using (var msi = new MemoryStream(bytes))
+ using (var mso = new MemoryStream())
+ {
+ using (var gs = new GZipStream(msi, CompressionMode.Decompress))
+ {
+ gs.CopyTo(mso);
+ }
+ return Encoding.Unicode.GetString(mso.ToArray());
+ }
+ }
+
+ ///
+ /// Interpret the specified msg.
+ ///
+ /// Message.
+ public static void Interpret(ServerMessage msg)
{
Dictionary args = null;
@@ -465,7 +494,7 @@ Contents:
Contents = JsonConvert.SerializeObject(new
{
shop = shopName,
- itemdata = item
+ itemdata = Compress(Compress(JsonConvert.SerializeObject(item)))
})
}));
}
diff --git a/ShiftOS.WinForms/Applications/Downloader.cs b/ShiftOS.WinForms/Applications/Downloader.cs
index dfa2425..2f33462 100644
--- a/ShiftOS.WinForms/Applications/Downloader.cs
+++ b/ShiftOS.WinForms/Applications/Downloader.cs
@@ -12,6 +12,8 @@ using ShiftOS.Engine;
using Newtonsoft.Json;
using ShiftOS.WinForms.Controls;
using ShiftOS.WinForms.Tools;
+using System.IO;
+using System.IO.Compression;
namespace ShiftOS.WinForms.Applications
{
@@ -113,6 +115,34 @@ namespace ShiftOS.WinForms.Applications
public static event Action DownloadStarted;
+ public static string Compress(string s)
+ {
+ var bytes = Encoding.Unicode.GetBytes(s);
+ using (var msi = new MemoryStream(bytes))
+ using (var mso = new MemoryStream())
+ {
+ using (var gs = new GZipStream(mso, CompressionMode.Compress))
+ {
+ msi.CopyTo(gs);
+ }
+ return Convert.ToBase64String(mso.ToArray());
+ }
+ }
+
+ public static string Decompress(string s)
+ {
+ var bytes = Convert.FromBase64String(s);
+ using (var msi = new MemoryStream(bytes))
+ using (var mso = new MemoryStream())
+ {
+ using (var gs = new GZipStream(msi, CompressionMode.Decompress))
+ {
+ gs.CopyTo(mso);
+ }
+ return Encoding.Unicode.GetString(mso.ToArray());
+ }
+ }
+
public static void StartDownload(Download down)
{
var t = new Thread(() =>
diff --git a/ShiftOS.WinForms/Applications/MUDControlCentre.cs b/ShiftOS.WinForms/Applications/MUDControlCentre.cs
index 67c6c17..6336718 100644
--- a/ShiftOS.WinForms/Applications/MUDControlCentre.cs
+++ b/ShiftOS.WinForms/Applications/MUDControlCentre.cs
@@ -142,10 +142,10 @@ namespace ShiftOS.WinForms.Applications
}
else if(msg.Name == "shop_additem")
{
- var contents = JsonConvert.DeserializeObject>(msg.Contents);
+ var contents = JsonConvert.DeserializeObject>(msg.Contents);
if((string)contents["shop"] == CurrentShop.Name)
{
- CurrentShop.Items.Add(JsonConvert.DeserializeObject(JsonConvert.SerializeObject(contents["itemdata"])));
+ CurrentShop.Items.Add(JsonConvert.DeserializeObject(DownloadManager.Decompress(DownloadManager.Decompress(contents["itemdata"] as string))));
this.Invoke(new Action(PopulateShopView));
}
}