mirror of
https://git.alee14.me/shiftos-archive/ShiftOS_TheReturn.git
synced 2025-02-02 06:17:34 +00:00
Compress shop items on server-side.
This commit is contained in:
parent
d6b2b15526
commit
de14574800
3 changed files with 67 additions and 8 deletions
|
@ -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));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Interpret the specified msg.
|
||||
/// </summary>
|
||||
/// <param name="msg">Message.</param>
|
||||
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());
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Interpret the specified msg.
|
||||
/// </summary>
|
||||
/// <param name="msg">Message.</param>
|
||||
public static void Interpret(ServerMessage msg)
|
||||
{
|
||||
Dictionary<string, object> args = null;
|
||||
|
||||
|
@ -465,7 +494,7 @@ Contents:
|
|||
Contents = JsonConvert.SerializeObject(new
|
||||
{
|
||||
shop = shopName,
|
||||
itemdata = item
|
||||
itemdata = Compress(Compress(JsonConvert.SerializeObject(item)))
|
||||
})
|
||||
}));
|
||||
}
|
||||
|
|
|
@ -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<Download> 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(() =>
|
||||
|
|
|
@ -142,10 +142,10 @@ namespace ShiftOS.WinForms.Applications
|
|||
}
|
||||
else if(msg.Name == "shop_additem")
|
||||
{
|
||||
var contents = JsonConvert.DeserializeObject<Dictionary<string, object>>(msg.Contents);
|
||||
var contents = JsonConvert.DeserializeObject<Dictionary<string, string>>(msg.Contents);
|
||||
if((string)contents["shop"] == CurrentShop.Name)
|
||||
{
|
||||
CurrentShop.Items.Add(JsonConvert.DeserializeObject<ShopItem>(JsonConvert.SerializeObject(contents["itemdata"])));
|
||||
CurrentShop.Items.Add(JsonConvert.DeserializeObject<ShopItem>(DownloadManager.Decompress(DownloadManager.Decompress(contents["itemdata"] as string))));
|
||||
this.Invoke(new Action(PopulateShopView));
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue