public async Task SaveAsync(Account account, string serviceId, Uri uri) { if (account == null) { throw new ArgumentNullException(nameof(account)); } if (account.Username?.Length == 0) { throw new ArgumentOutOfRangeException(nameof(account), "Username cannot be empty"); } if (serviceId?.Length == 0) { throw new ArgumentNullException(nameof(serviceId)); } byte[] data = Encoding.UTF8.GetBytes(uri == null ? account.Serialize() : account.Serialize(uri)); byte[] prot = (await DataProtectionExtensions.ProtectAsync(data.AsBuffer()).ConfigureAwait(false)).ToArray(); var path = GetAccountPath(account, serviceId); var localFolder = ApplicationData.Current.LocalFolder; var file = await localFolder.CreateFileAsync(path, CreationCollisionOption.OpenIfExists).AsTask().ConfigureAwait(false); using (var stream = await file.OpenStreamForWriteAsync().ConfigureAwait(false)) using (var writer = new BinaryWriter(stream)) { writer.Write((Int32)prot.Length); writer.Write(prot); } }
public override async Task SaveAsync(Account account, string serviceId) { byte[] data = Encoding.UTF8.GetBytes(account.Serialize()); byte[] prot = (await DataProtectionExtensions.ProtectAsync(data.AsBuffer()).ConfigureAwait(false)).ToArray(); var path = GetAccountPath(account, serviceId); var localFolder = ApplicationData.Current.LocalFolder; var file = await localFolder.CreateFileAsync(path, CreationCollisionOption.OpenIfExists).AsTask().ConfigureAwait(false); using (var stream = await file.OpenStreamForWriteAsync().ConfigureAwait(false)) using (var writer = new BinaryWriter(stream)) { writer.Write((Int32)prot.Length); writer.Write(prot); } }