public void FinalizeRequest(ITransferRequest request) { if (transfers.ContainsKey(request.RequestId)) { DeleteRequestFromStorage(request); } }
private void DeleteRequestFromStorage(ITransferRequest request) { var requestUri = request.RequestUri; var requestUriHash = CryptoUtils.GetHash(requestUri.ToString()); var trackerDir = FileUtils.GetDowloadTrackerDirectory(false, true); FileUtils.DeleteFile(string.Format("{0}\\{1}", trackerDir, requestUriHash)); }
/// <summary> /// Através deste serviço é possível efetuar transferências para a Conta Bancária padrão do cliente, para Contas Bancárias de terceiros ou para Contas Digitais Juno. /// </summary> /// <param name="resourceToken">Conta digital de origem</param> /// <param name="transferRequest">Dados da transferência</param> /// <returns></returns> public TransferResponse NewTransfer(string resourceToken, ITransferRequest transferRequest) { if (string.IsNullOrWhiteSpace(resourceToken)) { throw new ArgumentNullException(nameof(resourceToken)); } var request = new Requests.Transfers.NewTransferRequest(Client.GetRequestContext());; return(request.Execute(new TransferResource() { ResourceToken = resourceToken, Request = transferRequest, })); }
public void FinalizeRequest(ITransferRequest request) { if (request.RequestId != null) { if (BackgroundTransferService.Find(request.RequestId) != null) { BackgroundTransferService.Remove(((WindowsTransferRequest)request).OriginalRequest); DeleteRequestFromStorage(((WindowsTransferRequest)request).OriginalRequest); } if (customTransferRequests.ContainsKey(request.RequestId)) { customTransferRequests[request.RequestId].Cancel(); customTransferRequests.Remove(request.RequestId); } } }
public void FinalizeRequest(ITransferRequest request) { if (request.RequestId != null) { if (BackgroundTransferService.Find(request.RequestId) != null) { BackgroundTransferService.Remove(((WindowsPhoneTransferRequest) request).OriginalRequest); DeleteRequestFromStorage(((WindowsPhoneTransferRequest) request).OriginalRequest); } if (customTransferRequests.ContainsKey(request.RequestId)) { customTransferRequests[request.RequestId].Cancel(); customTransferRequests.Remove(request.RequestId); } } }
public void Cancel(ITransferRequest request) { FinalizeRequest(request); }
protected TestUnitResult Upload(ITransferRequest transferRequest) { if (transferRequest == null) { return(null); } List <IMetric> metrics = new List <IMetric>(); metrics.Add(new StringMetric(MetricName.url, transferRequest.RequestUri.ToString(), "")); int taskId = Task.CurrentId.Value; DateTimeOffset timeStart = DateTimeOffset.UtcNow; metrics.Add(new DateTimeMetric(MetricName.startTime, timeStart, "dateTime")); List <ItemAccessMethod> methods = new List <ItemAccessMethod>() { transferRequest.Method }; if (methods.Count() == 0) { log.WarnFormat("No upload methods found. Skipping upload."); var tcr1 = new TestUnitResult(metrics, TestUnitResultStatus.NotStarted); tcr1.State = transferRequest; metrics.Add(new DateTimeMetric(MetricName.endTime, DateTimeOffset.UtcNow, "dateTime")); return(tcr1); } var method = methods.First(); long respTime = 0; Random rng = new Random(); long totalSize = Convert.ToInt64(transferRequest.ContentLength); log.DebugFormat("Upload {1} to {0} ({2}) ...", transferRequest.RequestUri, BytesToString(Convert.ToInt64(totalSize)), transferRequest.Method); Stopwatch stopWatchUploadElaspedTime = new Stopwatch(); metrics.Add(new LongMetric(MetricName.beginGetResponseTime, DateTimeOffset.UtcNow.Ticks, "ticks")); Stopwatch sw = new Stopwatch(); sw.Start(); var uploadStreamTask = transferRequest.GetRequestStreamAsync(); uploadStreamTask.ContinueWith(streamTask => { respTime = sw.ElapsedMilliseconds; Stream stream = streamTask.Result; byte[] buf = new byte[4096]; double progessPct = 0; long totalByteCounter = 0; long intermediateCounter = 0; stopWatchUploadElaspedTime.Start(); while (totalByteCounter < totalSize) { rng.NextBytes(buf); int length = buf.Length; if (totalSize < totalByteCounter + length) { length = Convert.ToInt32(totalSize - totalByteCounter); } stream.Write(buf, 0, buf.Length); totalByteCounter += buf.Length; intermediateCounter += buf.Length; double totalPct = ((double)totalByteCounter / totalSize) * 100; if ((Math.Abs(progessPct - totalPct) >= 1) || intermediateCounter >= 10485760) { progessPct = totalPct; double bytespersec = (double)totalByteCounter / ((double)stopWatchUploadElaspedTime.ElapsedMilliseconds / 1000); log.DebugFormat("[{2}] Uploaded {0}% [{1}/s]", totalPct.ToString("F1"), BytesToString((long)bytespersec), taskId); intermediateCounter = 0; } if (Configuration.Current.Global.TestMode && totalByteCounter >= 10485760 * 2) { // Test Breaker at 20MB ) log.Warn("!!!!!TEST DOWNLOAD BREAKER!!!!"); break; } } stream.Close(); stopWatchUploadElaspedTime.Stop(); }); try { uploadStreamTask.Wait(); } catch (Exception e) { Exception ie = e; while (ie.InnerException != null) { ie = ie.InnerException; } if (ie is WebException) { WebException we = ie as WebException; log.DebugFormat("[{0}] Error uploading {2}. {4} Error: {1}[{3}]", Task.CurrentId, we.Message, transferRequest.RequestUri, we.Status.ToString(), method); if (we.Response is HttpWebResponse) { metrics.Add(new StringMetric(MetricName.httpStatusCode, string.Format("{0}:{1}", (int)((HttpWebResponse)we.Response).StatusCode, ((HttpWebResponse)we.Response).StatusDescription), "")); } metrics.Add(new ExceptionMetric(we)); } else { log.DebugFormat("[{0}] Error during upload {2}. Exception: {1}", Task.CurrentId, ie.Message, transferRequest.RequestUri); log.Debug(ie.StackTrace); metrics.Add(new ExceptionMetric(ie)); } } var uploadTask = transferRequest.GetResponseAsync().ContinueWith(resp => { sw.Stop(); using (ITransferResponse response = resp.Result) { log.InfoFormat("[{1}] > {3} Status Code {0} ({2}ms)", response.StatusCode, taskId, respTime, method); metrics.Add(new StringMetric(MetricName.httpStatusCode, string.Format("{0}:{1}", (int)response.StatusCode, response.StatusDescription), "")); if (!(response.StatusCode == TransferStatusCode.OK || response.StatusCode == TransferStatusCode.Accepted || response.StatusCode == TransferStatusCode.Created)) { log.DebugFormat("[{0}] < Not OK. Exception: {1}", taskId, response.StatusDescription); metrics.Add(new ExceptionMetric(new Exception( string.Format("[{0}] < Not OK. Exception: {1}", taskId, response.StatusDescription)))); } else { log.InfoFormat("[{0}] < OK. Content Type {1}", taskId, response.ContentType); } } }); try { uploadTask.Wait(); } catch (Exception e) { Exception ie = e; while (ie.InnerException != null) { ie = ie.InnerException; } if (ie is WebException) { WebException we = ie as WebException; log.DebugFormat("[{0}] Error uploading {2}. {4} Error: {1}[{3}]", Task.CurrentId, we.Message, transferRequest.RequestUri, we.Status.ToString(), method); if (we.Response is HttpWebResponse) { metrics.Add(new StringMetric(MetricName.httpStatusCode, string.Format("{0}:{1}", (int)((HttpWebResponse)we.Response).StatusCode, ((HttpWebResponse)we.Response).StatusDescription), "")); } metrics.Add(new ExceptionMetric(we)); } else { log.DebugFormat("[{0}] Error during upload {2}. Exception: {1}", Task.CurrentId, ie.Message, transferRequest.RequestUri); log.Debug(ie.StackTrace); metrics.Add(new ExceptionMetric(ie)); } } DateTimeOffset timeStop = DateTimeOffset.UtcNow; metrics.Add(new DateTimeMetric(MetricName.endTime, timeStop, "dateTime")); metrics.Add(new LongMetric(MetricName.endGetResponseTime, DateTime.UtcNow.Ticks, "ticks")); metrics.Add(new LongMetric(MetricName.responseTime, respTime, "ms")); metrics.Add(new LongMetric(MetricName.size, totalSize, "bytes")); metrics.Add(new LongMetric(MetricName.downloadElapsedTime, stopWatchUploadElaspedTime.ElapsedMilliseconds, "ms")); metrics.Add(new LongMetric(MetricName.maxTotalResults, 1, "#")); metrics.Add(new LongMetric(MetricName.totalReadResults, 1, "#")); metrics.Add(new LongMetric(MetricName.wrongResultsCount, 0, "#")); var tcr = new TestUnitResult(metrics); tcr.State = transferRequest; return(tcr); }
public TransferEventArgs(ITransferRequest request) { Request = request; }
public void Reset() { if (downloadRequest != null) { downloadRequest.TransferProgressChanged -= TransferProgressChanged; downloadRequest.TransferStatusChanged -= TransferStatusChanged; } downloadRequest = null; IsDownloading = true; IsIndeterminate = true; Description = null; FileName = null; InstallationStep = null; IsCompressed = false; LocalUrl = null; FileName = null; ServerUrl = null; }
private async Task<bool> DownloadOneFile() { if (FileUtils.FileExists(this.LocalUrl)) return true; if (FileUtils.FileExists(TempUrl)) FileUtils.DeleteFile(TempUrl); IsDownloading = true; InstallationStep = Description ?? AppResources.loading_message; if (downloadRequest != null) { downloadRequest.TransferProgressChanged -= TransferProgressChanged; downloadRequest.TransferStatusChanged -= TransferStatusChanged; } downloadRequest = QuranApp.NativeProvider.DownloadManager.DownloadAsync(this.ServerUrl, this.TempUrl); if (downloadRequest != null) { downloadRequest.TransferProgressChanged += TransferProgressChanged; downloadRequest.TransferStatusChanged += TransferStatusChanged; if (downloadRequest.TransferStatus == FileTransferStatus.Completed) { TransferStatusChanged(this, new TransferEventArgs(downloadRequest)); } } var tcs = new TaskCompletionSource<bool>(); DownloadComplete += (s, e) => tcs.TrySetResult(true); DownloadCancelled += (s, e) => tcs.TrySetResult(false); return await tcs.Task; }
private async Task<bool> DownloadMultipleFile(string[] serverUrls) { IsDownloading = true; InstallationStep = Description ?? AppResources.loading_message; if (downloadRequest != null) { downloadRequest.TransferProgressChanged -= TransferProgressChanged; downloadRequest.TransferStatusChanged -= TransferStatusChanged; } downloadRequest = QuranApp.NativeProvider.DownloadManager.DownloadMultipleAsync(serverUrls, this.LocalUrl); if (downloadRequest != null) { downloadRequest.TransferProgressChanged += TransferProgressChanged; downloadRequest.TransferStatusChanged += TransferStatusChanged; if (downloadRequest.TransferStatus == FileTransferStatus.Completed) { TransferStatusChanged(this, new TransferEventArgs(downloadRequest)); } } var tcs = new TaskCompletionSource<bool>(); DownloadComplete += (s, e) => tcs.TrySetResult(true); DownloadCancelled += (s, e) => tcs.TrySetResult(false); var result = await tcs.Task; IsDownloading = false; return result; }
public ProcessMessage(IGreetingMessage greetingMessage, ITransferRequest transferRequest) { this.greetMessage = greetingMessage; this.transferRequest = transferRequest; }