Reorganize and Add UserManager

This commit is contained in:
2021-01-23 10:52:10 +01:00
parent 6148956bc6
commit 5fe7edcb4c
12 changed files with 215 additions and 206 deletions

27
Users/User.cs Normal file
View 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
View 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}");
}
}
}
}