nowy accessor
This commit is contained in:
parent
d6a6b58a9d
commit
c2e22ac73f
@ -12,8 +12,10 @@ namespace SafeMessageStorage.Services.MessageStorageService
|
||||
|
||||
Task<bool> SaveMessageAsync(Message message);
|
||||
|
||||
Task<Message> ReadMessageAsync();
|
||||
Task<IEnumerable<Message>> ReadMessagesAsync();
|
||||
|
||||
Task<bool> DeleteMessageAsync();
|
||||
Task<bool> DeleteMessageAsync(string messageId);
|
||||
|
||||
Task<bool> DeleteAllMessagesAsync();
|
||||
}
|
||||
}
|
||||
|
@ -1,5 +1,6 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using Newtonsoft.Json;
|
||||
@ -13,33 +14,50 @@ namespace SafeMessageStorage.Services.MessageStorageService
|
||||
{
|
||||
private IAuthorizationService _authorizationService;
|
||||
private ISymmetricEncryptionEngine _encryptionEngine;
|
||||
private readonly string _messageKey = "377f2486-d2c3-48a7-b821-45d7314479cd";
|
||||
private readonly string _messagesKey = "377f2486-d2c3-48a7-b821-45d7314479cd";
|
||||
|
||||
public bool IsStorageEmpty => Xamarin.Essentials.SecureStorage.GetAsync(_messageKey).Result != null;
|
||||
public bool IsStorageEmpty => Xamarin.Essentials.SecureStorage.GetAsync(_messagesKey).Result != null;
|
||||
|
||||
public async Task<bool> SaveMessageAsync(Message message)
|
||||
{
|
||||
CheckIfAuthorized();
|
||||
var encrypyedMessage = _encryptionEngine.Encrypt(JsonConvert.SerializeObject(message), _authorizationService.AuthorizedUserHash);
|
||||
await Xamarin.Essentials.SecureStorage.SetAsync(_messageKey, encrypyedMessage);
|
||||
var messages = await ReadMessagesAsync();
|
||||
var messagesList = messages.ToList();
|
||||
messagesList.Add(message);
|
||||
|
||||
var encrypyedMessage = _encryptionEngine.Encrypt(JsonConvert.SerializeObject(messagesList), _authorizationService.AuthorizedUserHash);
|
||||
await Xamarin.Essentials.SecureStorage.SetAsync(_messagesKey, encrypyedMessage);
|
||||
return true;
|
||||
}
|
||||
|
||||
public async Task<Message> ReadMessageAsync()
|
||||
public async Task<IEnumerable<Message>> ReadMessagesAsync()
|
||||
{
|
||||
CheckIfAuthorized();
|
||||
var encryptedMessage =await Xamarin.Essentials.SecureStorage.GetAsync(_messageKey);
|
||||
var encryptedMessage =await Xamarin.Essentials.SecureStorage.GetAsync(_messagesKey);
|
||||
if (encryptedMessage == null)
|
||||
return null;
|
||||
|
||||
var decryptedMessage = _encryptionEngine.Decrypt(encryptedMessage, _authorizationService.AuthorizedUserHash);
|
||||
return JsonConvert.DeserializeObject<Message>(decryptedMessage);
|
||||
return JsonConvert.DeserializeObject<List<Message>>(decryptedMessage);
|
||||
}
|
||||
|
||||
public async Task<bool> DeleteMessageAsync()
|
||||
public async Task<bool> DeleteMessageAsync(string messageId)
|
||||
{
|
||||
var messages = await ReadMessagesAsync();
|
||||
var enumerable = messages.ToList();
|
||||
if (enumerable.All(m => m.Id != messageId))
|
||||
return false;
|
||||
messages = enumerable.Where(m => m.Id != messageId);
|
||||
|
||||
var encrypyedMessage = _encryptionEngine.Encrypt(JsonConvert.SerializeObject(messages.ToList()), _authorizationService.AuthorizedUserHash);
|
||||
await Xamarin.Essentials.SecureStorage.SetAsync(_messagesKey, encrypyedMessage);
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
public async Task<bool> DeleteAllMessagesAsync()
|
||||
{
|
||||
CheckIfAuthorized();
|
||||
return Xamarin.Essentials.SecureStorage.Remove(_messageKey);
|
||||
return Xamarin.Essentials.SecureStorage.Remove(_messagesKey);
|
||||
}
|
||||
|
||||
private void CheckIfAuthorized()
|
||||
|
Loading…
Reference in New Issue
Block a user