Add Start and Position to User
This commit is contained in:
@@ -11,13 +11,15 @@ namespace Akari.Provider.WaveshareUART.Users
|
||||
{
|
||||
public class UsersManager
|
||||
{
|
||||
public const int RangeLength = 20;
|
||||
public const string UsersFilePath = "users.yaml";
|
||||
|
||||
private readonly List<User> _users;
|
||||
private IDeserializer _deserializer;
|
||||
private ISerializer _serializer;
|
||||
|
||||
public int Count => _users.Count;
|
||||
public IReadOnlyList<User> Users => _users.AsReadOnly();
|
||||
|
||||
private readonly List<User> _users;
|
||||
private readonly IDeserializer _deserializer;
|
||||
private readonly ISerializer _serializer;
|
||||
|
||||
public UsersManager()
|
||||
{
|
||||
@@ -43,23 +45,34 @@ namespace Akari.Provider.WaveshareUART.Users
|
||||
}
|
||||
|
||||
public User this[string name] => _users.FirstOrDefault(u => u.Name.Equals(name, StringComparison.OrdinalIgnoreCase));
|
||||
public User this[ushort start] => _users.FirstOrDefault(u => u.Start == start);
|
||||
|
||||
public void Add(User user)
|
||||
public void Add(string name, string token)
|
||||
{
|
||||
_users.Add(user);
|
||||
// Find first available position
|
||||
var usedStarts = _users.Select(u => u.Start).ToHashSet();
|
||||
int start;
|
||||
|
||||
for (start = 0; start < ushort.MaxValue; start += RangeLength)
|
||||
{
|
||||
if (!usedStarts.Contains((ushort)start))
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// Add user
|
||||
_users.Add(new User(name, token, (ushort)start));
|
||||
|
||||
Save();
|
||||
}
|
||||
|
||||
public IReadOnlyCollection<User> GetAll()
|
||||
{
|
||||
return _users.AsReadOnly();
|
||||
}
|
||||
|
||||
public void Remove(User user)
|
||||
{
|
||||
_users.Remove(user);
|
||||
|
||||
// TODO Remove fingerprints
|
||||
|
||||
Save();
|
||||
}
|
||||
|
||||
@@ -67,6 +80,8 @@ namespace Akari.Provider.WaveshareUART.Users
|
||||
{
|
||||
_users.Clear();
|
||||
|
||||
// TODO Remove fingerprints
|
||||
|
||||
Save();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user