/
anton.bessolitsyn
/
easyapi
Обзор
Документация
Войти
/
anton.bessolitsyn
/
easyapi
Код
Запросы
0
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
gpxdata
Storage/TestFileStorage.cs
141 строка
5 KB
Anton Bessolitsyn
use EasyObjectFileStorage.dll as storage service
24 мар 2025, 15:24
24 мар 2025, 15:24
1dbe64f
Код
Авторство
О чём код?
using easyapi.Core; using easyapi.Entities; using Newtonsoft.Json; using System.Globalization; namespace easyapi.Storage { public class TestFileStorage(string pathToRootFolder) : IEasyObjects, IEasyPosts { const string EX_MESSAGE_WHEN_SAVING = $"FileStorageMessage_ Error when saving;"; const string EX_MESSAGE_WHEN_READING = $"FileStorageMessage_ Error when reading;"; readonly string RootFolder = pathToRootFolder; public event EventHandler<string>? LogEvent; public EasyObject[] GetAllObjects() { try { string[] files = GetAllFiles("/easyObjects/", "*.easyObject"); var contents = GetAllDeserializeObject<EasyObject>(files); return contents; } catch (Exception ex) { string logmessage = $"{EX_MESSAGE_WHEN_READING} ex.message; {ex.Message}"; Logging(logmessage); //TO DO Logging must be done!:) throw; } } public EasyPost[] GetAllPost() { try { string[] files = GetAllFiles("/easyPosts/", "*.easyPost"); var contents = GetAllDeserializeObject<EasyPost>(files); return contents; } catch (Exception ex) { string logmessage = $"{EX_MESSAGE_WHEN_READING} ex.message; {ex.Message}"; Logging(logmessage); //TO DO Logging must be done!:) throw; } } public void SaveEasyObject(EasyObject obj) { try { var fileContent = JsonConvert.SerializeObject(obj, Formatting.Indented); var filename = obj.GetHashCode().ToString(CultureInfo.InvariantCulture) + ".easyObject"; //File.WriteAllText(@RootFolder + "/easyObjects/" + filename, fileContent); SaveFile("/easyObject/", filename, fileContent, out var _); } catch (Exception ex) { string logmessage = $"{EX_MESSAGE_WHEN_SAVING} ex.message; {ex.Message}"; Logging(logmessage); //TO DO Logging must be done!:) throw; } } public void SaveEasyObjectStreamToFile(MemoryStream sourceStream, string filename, out string fileid) { try { SaveFile("/easyObjects/", filename, sourceStream.ToArray(), out fileid); } catch (Exception ex) { string logmessage = $"{EX_MESSAGE_WHEN_SAVING} ex.message; {ex.Message}"; //TO DO Logging must be done!:) Logging(logmessage); throw; } } public void SaveEasyPost(EasyPost obj) { try { var fileContent = JsonConvert.SerializeObject(obj, Formatting.Indented); var filename = obj.GetHashCode().ToString(CultureInfo.InvariantCulture) + ".easyPost"; SaveFile("/easyPosts/", filename, fileContent, out var _); } catch (Exception ex) { string logmessage = $"{EX_MESSAGE_WHEN_SAVING} ex.message; {ex.Message}"; //TO DO Logging must be done!:) Logging(logmessage); throw; } } void SaveFile(string path, string filename, string fileContent, out string fileid) { fileid = path + filename; System.IO.File.WriteAllText(@RootFolder + path + filename, fileContent); } void SaveFile(string path, string filename, byte[] fileContent, out string fileid) { fileid = path + filename; System.IO.File.WriteAllBytes(@RootFolder + path + filename, fileContent); } void Logging(string message) { LogEvent?.Invoke(this, message); } string[] GetAllFiles(string path, string fileExt) { string[] files = Directory.GetFiles(@RootFolder + path, fileExt); return files; } static T[] GetAllDeserializeObject<T>(string[] files) { T[] contents = new T[files.Length]; for (int i = 0; i < files.Length; i++) { var content = JsonConvert.DeserializeObject<T>(System.IO.File.ReadAllText(files[i])); if (content != null) contents[i] = content; } return contents; } } }