Ejemplo n.º 1
0
        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));
        }
Ejemplo n.º 3
0
        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);
            }
        }