private async Task AddToLocalStorage(ConfigFileEntry fileEntry) { var listOfFiles = await localStorage.GetItemAsync <List <ConfigFileEntry> >("files"); listOfFiles.Add(fileEntry); await localStorage.SetItemAsync("files", listOfFiles); }
public async Task <bool> UploadFileAsync(Stream fs, string fileName, string algorithm, string key) { string fileId = null; using (var form = new MultipartFormDataContent()) using (var streamContent = new StreamContent(fs)) { form.Add(new StringContent(fileName, Encoding.UTF8, "text/plain"), "\"FileName\""); var byteArray = await streamContent.ReadAsByteArrayAsync(); TigerHash tigerHasher = new TigerHash(); byte[] hashed = tigerHasher.Hash(byteArray, byteArray.Length); string hashedBase64String = Convert.ToBase64String(hashed); form.Add(new StringContent(hashedBase64String, Encoding.UTF8, "text/plain"), "\"HashValue\""); Console.WriteLine("Encryption left only"); byte[] encrypted = await EncryptFile(byteArray, algorithm, key); Stream stream = new MemoryStream(encrypted); var encryptedStreamContent = new StreamContent(stream); form.Add(encryptedStreamContent, "\"Content\"", fileName); Console.WriteLine("Form ready to post"); var response = await this.httpClient.PostAsync("api/Files/", form); encryptedStreamContent.Dispose(); if (response.IsSuccessStatusCode) { var responseString = await response.Content.ReadAsStringAsync(); var fileObject = JsonConvert.DeserializeObject <FileResult>(responseString); fileId = fileObject.Id.ToString(); Console.WriteLine("Posted: " + fileId); } } if (String.IsNullOrEmpty(fileId)) { return(false); } // add to localstorage ConfigFileEntry fileEntry = new ConfigFileEntry { Id = fileId, FileName = fileName, Algorithm = algorithm, Key = key }; await AddToLocalStorage(fileEntry); return(true); }