using System.Collections; // using System.Collections.Generic; using UnityEngine; using TMPro; using System; using System.Text; using System.IO; using UnityEngine.UI; using RPGCreationKit; using UnityEngine.Networking; using System.Net; // For the Discord using System.Drawing; namespace RPGCreationKit { public class MyGallery : MonoBehaviour { [Header("Auto fills")] [SerializeField] private OnlineAccountHandler OAH; [SerializeField] private GameObject MyGalleryGO; [SerializeField] private string[] Folders; [SerializeField] private TextMeshProUGUI[] AvatarNames; [SerializeField] public GameObject[] Screenshots; [Header("Avatar")] [SerializeField] private Transform FoldersContainer; [SerializeField] List CreatedFolderPrefab; [SerializeField] public AudioSource source; [Header("Screenshots")] [SerializeField] private GameObject FolderPrefab; [SerializeField] private Transform ImagesContainer; [SerializeField] public List CreatedImagePrefab; [Header("Expanded Screenshot")] [SerializeField] public RawImage BigImage; [SerializeField] public GameObject BigImageContainer; [SerializeField] public GameObject BigImageCloseButton; [SerializeField] private TextMeshProUGUI ImageTitle; [SerializeField] private TextMeshProUGUI ImageDescription; [SerializeField] private TextMeshProUGUI FPlace; [SerializeField] private TextMeshProUGUI FTime; [SerializeField] private TextMeshProUGUI FExtension; [SerializeField] public string FileDir; public void RefreshAvatarList() { Folders = System.IO.Directory.GetDirectories(System.Environment.GetFolderPath(System.Environment.SpecialFolder.MyDocuments)+@"\My Games\Firstborn\Screenshots","*", System.IO.SearchOption.AllDirectories); for (int i = 0; i < Folders.Length; i++) { var NewFolder = Instantiate(FolderPrefab, FoldersContainer); CreatedFolderPrefab.Add(NewFolder); string TempAvatarName = Folders[i].Split(new string[] { @"Firstborn\Screenshots\" }, StringSplitOptions.None)[1].Split (@"\")[0].Trim (); AvatarFolderName NewFolderGO = NewFolder.GetComponent(); NewFolderGO.FolderPath = Folders[i]; NewFolderGO.ImagesContainer = ImagesContainer; NewFolderGO.MyGalleryGO = MyGalleryGO; ButtonSounds BS = NewFolderGO.GetComponent(); BS.source = source; NewFolderGO.AvatarName.text = TempAvatarName; } } public void RefreshScreenshotList() { Folders = System.IO.Directory.GetDirectories(System.Environment.GetFolderPath(System.Environment.SpecialFolder.MyDocuments)+@"\My Games\Firstborn\Screenshots","*", System.IO.SearchOption.AllDirectories); for (int i = 0; i < Folders.Length; i++) { var NewFolder = Instantiate(FolderPrefab, FoldersContainer); CreatedFolderPrefab.Add(NewFolder); string TempAvatarName = Folders[i].Split(new string[] { @"Firstborn\Screenshots\" }, StringSplitOptions.None)[1].Split (@"\")[0].Trim (); Debug.Log(TempAvatarName); AvatarFolderName NewFolderGO = NewFolder.GetComponent(); NewFolderGO.AvatarName.text = TempAvatarName; } } public void ClearAllFolders() { for (int i = 0; i < CreatedFolderPrefab.Count; i++) { CreatedFolderPrefab[i].SetActive(false); } CreatedFolderPrefab.Clear(); } public void ExpandImage(RawImage A) { BigImage.texture = A.texture; BigImage.SetNativeSize(); BigImage.SizeToParent(); BigImageCloseButton.SetActive(true); BigImageContainer.SetActive(true); } public void PostInformation(FileInfo A) { string TempName = A.Name.Split("_")[1].Split (".")[0].Trim (); FPlace.text = TempName; var CreatedAt = A.CreationTime; FTime.text = CreatedAt.ToString(); FExtension.text = A.Extension; } public void UploadImage() { StartCoroutine(PostTopicPostsA()); } IEnumerator PostTopicPostsA() { // StreamReader sr = new StreamReader(FileDir); // string A = sr.ReadToEnd(); // sr.Close(); //byte[] imageArray = System.IO.File.ReadAllBytes(FileDir); //string A = Convert.ToBase64String(File.ReadAllBytes(FileDir)).TrimEnd('=').Replace('+', '-').Replace('/', '_');//Convert.ToBase64String(imageArray);//; //string A = @"data:image/png;base64," + Convert.ToBase64String(imageArray).TrimEnd('=').Replace('+', '-').Replace('/', '_'); // A = Base64Encode(A); //string B = EncodeTo64(FileDir); //A = System.Text.RegularExpressions.Regex.Escape(A); string A = Base64Encode(FileDir); Debug.Log("Image string: "+A); Debug.Log("Imape Path: "+FileDir); Dictionary content = new Dictionary(); content.Add("category", "27"); content.Add("image", A.TrimEnd('=').Replace('+', '-').Replace('/', '_'));//ImageString); content.Add("caption", ImageTitle.text); // Filename? content.Add("filename", ImageTitle.text); // Real title. content.Add("description", ImageDescription.text); // Description. using (UnityWebRequest www = UnityWebRequest.Post("https://schaken-mods.com/api/gallery/images", content)) { www.SetRequestHeader("Authorization", "Bearer " + OAH.BearerID); yield return www.SendWebRequest(); if (www.result == UnityWebRequest.Result.ConnectionError) { Debug.Log("Error While Sending TEST: " + www.error); } else { string result = www.downloadHandler.text; string FullTXT = System.Text.RegularExpressions.Regex.Unescape(result); Debug.Log("TEST: " + FullTXT); } } } public static string Base64Encode(string FileDirectory) { StreamReader sr = new StreamReader(FileDirectory); // this makes the file into a string. string A = sr.ReadToEnd(); sr.Close(); // byte[] imageArray = System.IO.File.ReadAllBytes(FileDirectory); // string A = System.Convert.ToBase64String(imageArray); return "data:image/png;base64,"+EncodeTo64(A); } public static string EncodeTo64(string toEncode) { byte[] toEncodeAsBytes = Encoding.ASCII.GetBytes(toEncode); return Convert.ToBase64String(toEncodeAsBytes); } } }