private static async Task <string> ExcecuteUploadTaskAsync(FirebaseStorageTask task, EventHandler <FirebaseStorageProgress> onProgressUpdate = null) { if (onProgressUpdate != null) { task.Progress.ProgressChanged += onProgressUpdate; } return(await task); }
private static GenericResponse <string> InsertStorage(DbQuery query) { var base64Data = Regex.Match(query.Query, @"data:image/(?<type>.+?),(?<data>.+)").Groups["data"].Value; var binData = Convert.FromBase64String(base64Data); string url = ""; using (var stream = new MemoryStream(binData)) { storage = new FirebaseStorage(ConfigurationHelper.FirebaseStorageUrl) .Child("user") .Child($"{query.Path}.png") .PutAsync(stream); storage.Progress.ProgressChanged += _eventHandler; url = Task.Run(async() => { var downloadUrl = await storage; return(downloadUrl); }).Result; } return(GenericResponse <string> .Successful(url)); }
public async Task AddFlight(string fileName, int stationId, DateTime date, string fileWmo100 = "", string fileWmoEnd = "", string serialNumber = "", double duration = 0) { var station = await GetStation(stationId); var stream = File.Open(fileName, FileMode.Open); var outputName = Path.GetRandomFileName(); //var uri = new System.Uri(Url); var task = new FirebaseStorage(Bucket, new FirebaseStorageOptions { AuthTokenAsyncFactory = () => Task.FromResult(Authlink.FirebaseToken), ThrowOnCancel = true // when you cancel the upload, exception is thrown. By default no exception is thrown }) .Child("data") .Child(outputName) .PutAsync(stream); task.Progress.ProgressChanged += (s, e) => OnSetProgress(this, e.Percentage); FirebaseStorageTask wmo100Task = null; if (!string.IsNullOrEmpty(fileWmo100)) { var stream100 = File.Open(fileWmo100, FileMode.Open); var outputName100 = Path.GetRandomFileName(); wmo100Task = new FirebaseStorage(Bucket, new FirebaseStorageOptions { AuthTokenAsyncFactory = () => Task.FromResult(Authlink.FirebaseToken), ThrowOnCancel = true // when you cancel the upload, exception is thrown. By default no exception is thrown }) .Child("data") .Child(outputName100) .PutAsync(stream100); task.Progress.ProgressChanged += (s, e) => OnSetProgress(this, e.Percentage); } FirebaseStorageTask wmoEndTask = null; if (!string.IsNullOrEmpty(fileWmoEnd)) { var streamEnd = File.Open(fileWmoEnd, FileMode.Open); var outputNameEnd = Path.GetRandomFileName(); wmoEndTask = new FirebaseStorage(Bucket, new FirebaseStorageOptions { AuthTokenAsyncFactory = () => Task.FromResult(Authlink.FirebaseToken), ThrowOnCancel = true // when you cancel the upload, exception is thrown. By default no exception is thrown }) .Child("data") .Child(outputNameEnd) .PutAsync(streamEnd); task.Progress.ProgressChanged += (s, e) => OnSetProgress(this, e.Percentage); } try { // error during upload will be thrown when you await the task var url = await task; var url100 = ""; if (wmo100Task != null) { url100 = await wmo100Task ?? ""; } var urlEnd = ""; if (wmoEndTask != null) { urlEnd = await wmoEndTask ?? ""; } Console.WriteLine($"Download link:\n {url} \n {url100} \n {urlEnd} \n"); var client = GetClient(); var epochTime = date.GetUnixEpoch(); var flightDb = await client.Child("station"). Child(station.Key).Child("flights"). PostAsync <Flight>(new Flight { Date = date.ToShortDateString(), Time = date.ToLongTimeString(), FileName = outputName, Url = url, Url100 = url100, UrlEnd = urlEnd, EpochTime = epochTime, SerialNumber = serialNumber, Duration = duration }); } catch (FirebaseStorageException e) { Console.WriteLine("Exception was thrown: {0}", e.Message); } catch (Exception ex) { Console.WriteLine("Exception was thrown: {0}", ex); } }