Files
PCK-Studio/MinecraftUSkinEditor/Classes/Networking/PCKCollections.cs
2022-05-29 21:42:38 -04:00

206 lines
8.4 KiB
C#

using System;
using System.IO;
using System.Net;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Drawing.Imaging;
using System.Drawing.Design;
using System.Drawing;
namespace PckStudio.Classes.Networking
{
public class PCKCollections
{
WebClient client = new WebClient();
public string CurrentPackDl = "";
string cache = Program.Appdata + "cache/packs/";
public string[] GetCategories()
{
string cat = "";
try
{
cat = client.DownloadString(PckStudio.Classes.Network.MainURL + "/studio/PCK/api/PCKCategories.txt");
client.DownloadFile(PckStudio.Classes.Network.MainURL + "/studio/PCK/api/PCKCategories.txt", cache + "PCKCategories.txt");
}
catch
{
cat = client.DownloadString(PckStudio.Classes.Network.BackURL + "/studio/PCK/api/PCKCategories.txt");
client.DownloadFile(PckStudio.Classes.Network.BackURL + "/studio/PCK/api/PCKCategories.txt", cache + "PCKCategories.txt");
}
return cat.Split(new[] { "\n", "\r\n" }, StringSplitOptions.RemoveEmptyEntries);
}
public string[] GetPackDescs(string Category, bool IsVita)
{
string cat = "";
try
{
Console.WriteLine(PckStudio.Classes.Network.MainURL + "/studio/PCK/api/Category/Category" + Category + ".txt");
switch (IsVita)
{
case (true):
cat = client.DownloadString(PckStudio.Classes.Network.MainURL + "/studio/PCK/api/Category/VitaCategory" + Category + ".txt");
break;
case (false):
cat = client.DownloadString(PckStudio.Classes.Network.MainURL + "/studio/PCK/api/Category/Category" + Category + ".txt");
break;
}
}
catch
{
switch (IsVita)
{
case (true):
cat = client.DownloadString(PckStudio.Classes.Network.BackURL + "/studio/PCK/api/Category/VitaCategory" + Category + ".txt");
break;
case (false):
cat = client.DownloadString(PckStudio.Classes.Network.BackURL + "/studio/PCK/api/Category/Category" + Category + ".txt");
break;
}
}
return cat.Split(new[] { "\n", "\r\n" }, StringSplitOptions.RemoveEmptyEntries);
}
public string GetPackName(string Category, bool IsVita)
{
string cat = "";
try
{
Console.WriteLine(PckStudio.Classes.Network.MainURL + "/studio/PCK/api/pcks/" + Category + ".desc");
switch (IsVita)
{
case (true):
cat = client.DownloadString(PckStudio.Classes.Network.MainURL + "/studio/PCK/api/pcks/Vita/" + Category + ".desc");
break;
case (false):
cat = client.DownloadString(PckStudio.Classes.Network.MainURL + "/studio/PCK/api/pcks/" + Category + ".desc");
break;
}
}
catch(Exception err)
{
switch (IsVita)
{
case (true):
cat = client.DownloadString(PckStudio.Classes.Network.BackURL + "/studio/PCK/api/pcks/Vita/" + Category + ".desc");
break;
case (false):
cat = client.DownloadString(PckStudio.Classes.Network.BackURL + "/studio/PCK/api/pcks/" + Category + ".desc");
break;
}
}
string[] data = cat.Split(new[] { "\n", "\r\n" }, StringSplitOptions.RemoveEmptyEntries);
return data[0];
}
public string[] GetPackData(string Category, bool IsVita)
{
string cat = "";
try
{
switch (IsVita)
{
case (true):
cat = client.DownloadString(PckStudio.Classes.Network.MainURL + "/studio/PCK/api/pcks/Vita/" + Category + ".desc");
break;
case (false):
cat = client.DownloadString(PckStudio.Classes.Network.MainURL + "/studio/PCK/api/pcks/" + Category + ".desc");
break;
}
}
catch
{
switch (IsVita)
{
case (true):
cat = client.DownloadString(PckStudio.Classes.Network.BackURL + "/studio/PCK/api/pcks/Vita/" + Category + ".desc");
break;
case (false):
cat = client.DownloadString(PckStudio.Classes.Network.BackURL + "/studio/PCK/api/pcks/" + Category + ".desc");
break;
}
}
return cat.Split(new[] { "\n", "\r\n" }, StringSplitOptions.RemoveEmptyEntries);
}
public Image GetPackImage(string Category, bool IsVita)
{
byte[] cat = new byte[] { };
try
{
switch (IsVita)
{
case (true):
cat = client.DownloadData(PckStudio.Classes.Network.MainURL + "/studio/PCK/api/pcks/Vita/image/" + Category + ".png");
break;
case (false):
cat = client.DownloadData(PckStudio.Classes.Network.MainURL + "/studio/PCK/api/pcks/image/" + Category + ".png");
break;
}
}
catch
{
switch (IsVita)
{
case (true):
cat = client.DownloadData(PckStudio.Classes.Network.BackURL + "/studio/PCK/api/pcks/Vita/image/" + Category + ".png");
break;
case (false):
cat = client.DownloadData(PckStudio.Classes.Network.BackURL + "/studio/PCK/api/pcks/image/" + Category + ".png");
break;
}
}
Stream fs = new MemoryStream(cat);
Image image;
image = Image.FromStream(fs);
fs.Flush();
fs.Dispose();
return image;
}
public bool TryDownloadPack(string Category, bool IsVita, string PackCat)
{
try
{
string[] desc = GetPackData(Category, IsVita);
Image image = GetPackImage(Category, IsVita);
string DescPath = cache;
Directory.CreateDirectory(cache + "descs/Vita/");
Directory.CreateDirectory(cache + "images/Vita/");
Directory.CreateDirectory(cache + "files/Vita/");
Directory.CreateDirectory(cache + "Category/");
switch (IsVita)
{
case (true):
DescPath = cache + "descs/Vita/" + Category + ".desc";
image.Save(cache + "images/Vita/" + Category + ".png");
File.WriteAllText(DescPath, desc[0] + "\n" + desc[1] + "\n" + desc[2]);
File.WriteAllText(cache + "Category/VitaCategory" + PackCat + ".txt", "\n"+ Category);
byte[] bytes = client.DownloadData(desc[3]);
File.WriteAllBytes(cache + "files/Vita/" + Category + ".pck", bytes);
break;
case (false):
DescPath = cache + "descs/" + Category + ".desc";
image.Save(cache + "images/" + Category + ".png");
File.WriteAllText(DescPath, desc[0] + "\n" + desc[1] + "\n" + desc[2]);
File.WriteAllText(cache + "Category/Category" + PackCat + ".txt", "\n" + Category);
byte[] bytes2 = client.DownloadData(desc[3]);
File.WriteAllBytes(cache + "files/" + Category + ".pck", bytes2);
break;
}
image.Dispose();
return true;
}
catch
{
return false;
}
}
}
}