add to git
This commit is contained in:
@@ -0,0 +1,171 @@
|
||||
using Newtonsoft.Json;
|
||||
using System.Globalization;
|
||||
using System.IO;
|
||||
using System.Net.WebSockets;
|
||||
using System.Text;
|
||||
using System.Text.Json.Serialization;
|
||||
|
||||
namespace CodeEditorApi.Helpers
|
||||
{
|
||||
public static class SessionFiles
|
||||
{
|
||||
private static string sessionPath = "database/";
|
||||
public static Session Create(Guid sessionId)
|
||||
{
|
||||
if (CheckForDirectoryExists(sessionId))
|
||||
{
|
||||
throw new Exception("Session already exists");
|
||||
}
|
||||
else
|
||||
{
|
||||
CreateDirectory(sessionId);
|
||||
}
|
||||
|
||||
return GetSession(sessionPath + "/" + sessionId);
|
||||
}
|
||||
|
||||
public static void Save(SessionData data)
|
||||
{
|
||||
if (!CheckForDirectoryExists(data.SessionId))
|
||||
{
|
||||
CreateDirectory(data.SessionId);
|
||||
}
|
||||
|
||||
WriteFile(data);
|
||||
}
|
||||
|
||||
public static Session[] Get()
|
||||
{
|
||||
var dir = Directory.GetDirectories(sessionPath);
|
||||
var res = new List<Session>();
|
||||
|
||||
foreach (var folder in dir)
|
||||
{
|
||||
var files = Directory.GetFiles(folder);
|
||||
|
||||
res.Add(GetSession(folder));
|
||||
}
|
||||
|
||||
return res.ToArray();
|
||||
}
|
||||
|
||||
public static SessionData[] Get(Guid sessionId)
|
||||
{
|
||||
var fileNames = Directory.GetFiles(sessionPath + "/" + sessionId);
|
||||
var res = new List<SessionData>();
|
||||
|
||||
foreach (var fileName in fileNames)
|
||||
{
|
||||
res.Add(GetSessionData(sessionId, fileName));
|
||||
}
|
||||
|
||||
return res.ToArray();
|
||||
}
|
||||
|
||||
private static bool CheckForDirectoryExists(Guid sessionId)
|
||||
{
|
||||
if (Directory.Exists(sessionPath + sessionId))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
private static bool CreateDirectory(Guid sessionId)
|
||||
{
|
||||
Directory.CreateDirectory(sessionPath + sessionId);
|
||||
return true;
|
||||
}
|
||||
|
||||
private static bool CreateFile(SessionData data)
|
||||
{
|
||||
if (!File.Exists(sessionPath + data.FileName))
|
||||
{
|
||||
using (FileStream fs = File.Create(sessionPath + data.FileName))
|
||||
{
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
private static bool WriteFile(SessionData data)
|
||||
{
|
||||
CreateFile(data);
|
||||
using (StreamWriter sw = File.CreateText(sessionPath + data.FileName))
|
||||
{
|
||||
sw.Write(data.Data);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
private static DataType GetExtension(string fileName)
|
||||
{
|
||||
if (fileName.EndsWith(".js"))
|
||||
{
|
||||
return DataType.Javascript;
|
||||
}
|
||||
else if (fileName.EndsWith(".css"))
|
||||
{
|
||||
return DataType.CSS;
|
||||
}
|
||||
else if (fileName.EndsWith(".html"))
|
||||
{
|
||||
return DataType.HTML;
|
||||
}
|
||||
|
||||
return DataType.Text;
|
||||
}
|
||||
|
||||
private static Session GetSession(string path)
|
||||
{
|
||||
var files = Directory.GetFiles(path);
|
||||
|
||||
var strId = path.Substring(path.LastIndexOf("/") + 1);
|
||||
|
||||
var session = new Session
|
||||
{
|
||||
Id = Guid.Parse(strId),
|
||||
NumberOfChanges = files.Length
|
||||
};
|
||||
|
||||
return session;
|
||||
}
|
||||
|
||||
private static SessionData GetSessionData(Guid sessionId, string path)
|
||||
{
|
||||
SessionData sessionData;
|
||||
|
||||
using (StreamReader sr = new StreamReader(path))
|
||||
{
|
||||
var content = sr.ReadToEnd();
|
||||
|
||||
sessionData = new SessionData
|
||||
{
|
||||
SessionId = sessionId,
|
||||
Data = content,
|
||||
Type = GetExtension(path),
|
||||
Timestamp = DateTime.Now
|
||||
};
|
||||
}
|
||||
|
||||
return sessionData;
|
||||
}
|
||||
|
||||
public static string GetFormattedDate(DateTime date)
|
||||
{
|
||||
return date.ToString("yyyy-MM-ddTHH-mm-ss-fff");
|
||||
}
|
||||
|
||||
public static DateTime GetDateFromFormat(string date)
|
||||
{
|
||||
CultureInfo provider = CultureInfo.InvariantCulture;
|
||||
return DateTime.ParseExact(date, "yyyy-MM-ddTHH-mm-ss-fff", provider);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user