Reorganize and Add UserManager
This commit is contained in:
27
Users/User.cs
Normal file
27
Users/User.cs
Normal file
@@ -0,0 +1,27 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Akari.Provider.WaveshareUART.Users
|
||||
{
|
||||
public class User
|
||||
{
|
||||
public string Name { get; private set; }
|
||||
public string Token { get; private set; }
|
||||
public ushort RangeStart { get; private set; }
|
||||
|
||||
public User()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public User(string name, string token, ushort rangeStart)
|
||||
{
|
||||
Name = name;
|
||||
Token = token;
|
||||
RangeStart = rangeStart;
|
||||
}
|
||||
}
|
||||
}
|
||||
88
Users/UsersManager.cs
Normal file
88
Users/UsersManager.cs
Normal file
@@ -0,0 +1,88 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using Terminal.Gui;
|
||||
using YamlDotNet.Serialization;
|
||||
|
||||
namespace Akari.Provider.WaveshareUART.Users
|
||||
{
|
||||
public class UsersManager
|
||||
{
|
||||
public const string UsersFilePath = "users.yaml";
|
||||
|
||||
private readonly List<User> _users;
|
||||
private IDeserializer _deserializer;
|
||||
private ISerializer _serializer;
|
||||
|
||||
public int Count => _users.Count;
|
||||
|
||||
public UsersManager()
|
||||
{
|
||||
_serializer = new SerializerBuilder().Build();
|
||||
_deserializer = new DeserializerBuilder().Build();
|
||||
|
||||
try
|
||||
{
|
||||
if (!File.Exists(UsersFilePath))
|
||||
{
|
||||
_users = new List<User>();
|
||||
}
|
||||
else
|
||||
{
|
||||
_users = _deserializer.Deserialize<List<User>>(File.ReadAllText(UsersFilePath));
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
Console.WriteLine($"Can't load users: {e.Message}");
|
||||
Console.WriteLine(e.StackTrace);
|
||||
}
|
||||
}
|
||||
|
||||
public User this[string name] => _users.FirstOrDefault(u => u.Name.Equals(name, StringComparison.OrdinalIgnoreCase));
|
||||
|
||||
public void Add(User user)
|
||||
{
|
||||
_users.Add(user);
|
||||
|
||||
Save();
|
||||
}
|
||||
|
||||
public IReadOnlyCollection<User> GetAll()
|
||||
{
|
||||
return _users.AsReadOnly();
|
||||
}
|
||||
|
||||
public void Remove(User user)
|
||||
{
|
||||
_users.Remove(user);
|
||||
|
||||
Save();
|
||||
}
|
||||
|
||||
public void Clear()
|
||||
{
|
||||
_users.Clear();
|
||||
|
||||
Save();
|
||||
}
|
||||
|
||||
private void Save()
|
||||
{
|
||||
try
|
||||
{
|
||||
File.WriteAllText(UsersFilePath, _serializer.Serialize(_users));
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
Console.WriteLine($"Can't save users: {e.Message}");
|
||||
Console.WriteLine(e.StackTrace);
|
||||
|
||||
MessageBox.ErrorQuery("Users", $"Can't save users: {e.Message}");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user