private void DownloadTorrentFile(CancellationToken cancellationToken) { _logger.LogDebug("Downloading torrent file..."); _logger.LogTrace("torrentFilePath = " + TorrentFilePath); var torrentFileDownloader = _createNewHttpDownloader(TorrentFilePath, _resource.TorrentUrls); torrentFileDownloader.Download(cancellationToken); _logger.LogDebug("Torrent file downloaded."); }
public IHttpResponse Get(HttpGetRequest getRequest) { try { _logger.LogDebug("Sending GET request to " + getRequest.Address); if (getRequest.Range != null) { throw new NotImplementedException(); } _logger.LogTrace("timeout = " + getRequest.Timeout); var result = new WWWResult(); var waitHandle = UnityDispatcher.InvokeCoroutine(GetWWW(getRequest, result)); waitHandle.WaitOne(TimeSpan.FromMilliseconds(getRequest.Timeout)); lock (result) { if (!result.IsDone) { throw new WebException("Timeout.", WebExceptionStatus.Timeout); } var statusCode = ReadStatusCode(result); _logger.LogDebug("Successfuly received response."); return(new UnityHttpResponse(result.Text, statusCode, ResponseEncoding)); } } catch (Exception e) { _logger.LogError("Failed to get response.", e); throw; } }
public override void Prepare([NotNull] UpdaterStatus status, CancellationToken cancellationToken) { if (status == null) { throw new ArgumentNullException("status"); } try { _logger.LogDebug("Preparing diff installation..."); base.Prepare(status, cancellationToken); _localData.PrepareForWriting(); _previousContentSummary = _remoteMetaData.GetContentSummary(_versionId - 1, cancellationToken); _contentSummary = _remoteMetaData.GetContentSummary(_versionId, cancellationToken); _diffSummary = _remoteMetaData.GetDiffSummary(_versionId, cancellationToken); double unarchivePackageWeight = StatusWeightHelper.GetUnarchivePackageWeight(_diffSummary.Size); _logger.LogTrace("unarchivePackageWeight = " + unarchivePackageWeight); _unarchivePackageStatusReporter = new OperationStatus { Weight = { Value = unarchivePackageWeight } }; status.RegisterOperation(_unarchivePackageStatusReporter); double addFilesWeight = StatusWeightHelper.GetAddDiffFilesWeight(_diffSummary); _logger.LogTrace("addFilesWeight = " + addFilesWeight); _addFilesStatusReporter = new OperationStatus { Weight = { Value = addFilesWeight } }; status.RegisterOperation(_addFilesStatusReporter); double modifiedFilesWeight = StatusWeightHelper.GetModifyDiffFilesWeight(_diffSummary); _logger.LogTrace("modifiedFilesWeight = " + modifiedFilesWeight); _modifiedFilesStatusReporter = new OperationStatus { Weight = { Value = modifiedFilesWeight } }; status.RegisterOperation(_modifiedFilesStatusReporter); double removeFilesWeight = StatusWeightHelper.GetRemoveDiffFilesWeight(_diffSummary); _logger.LogTrace("removeFilesWeight = " + removeFilesWeight); _removeFilesStatusReporter = new OperationStatus { Weight = { Value = removeFilesWeight } }; status.RegisterOperation(_removeFilesStatusReporter); _logger.LogDebug("Diff installation prepared."); } catch (Exception e) { _logger.LogError("Failed to prepare diff installation.", e); throw; } }
private bool TrySendRequest(ApiConnectionServer server, Request request, ServerType serverType, out IApiResponse response) { Logger.LogDebug( string.Format( "Trying to get response from server ({0}): '{1}:{2}' (uses HTTPS: {3})...", serverType, server.Host, server.RealPort, server.UseHttps)); response = null; List <Exception> exceptionsList; switch (serverType) { case ServerType.MainServer: exceptionsList = request.MainServerExceptions; break; case ServerType.CacheServer: exceptionsList = request.CacheServersExceptions; break; default: throw new ArgumentOutOfRangeException(serverType.ToString(), serverType, null); } try { var uri = new UriBuilder { Scheme = server.UseHttps ? "https" : "http", Host = server.Host, Path = request.Path, Query = request.Query, Port = server.RealPort }.Uri; var httpResponse = MakeResponse(uri, request); Logger.LogDebug("Received response. Checking whether it is valid..."); Logger.LogTrace( string.Format( "Response status code: {0}", httpResponse.StatusCode)); if (IsResponseValid(httpResponse, serverType)) { Logger.LogDebug("Response is valid."); response = new ApiResponse(httpResponse); return(true); } Logger.LogWarning("Response is not valid."); if (IsResponseUnexpectedError(httpResponse, serverType)) { throw new ApiResponseException((int)httpResponse.StatusCode); } throw new ApiServerConnectionException( string.Format( "Server \'{0}\' returned code {1}", server.Host, (int)httpResponse.StatusCode)); } catch (WebException webException) { Logger.LogWarning("Error while connecting to the API server.", webException); exceptionsList.Add(webException); return(false); } catch (ApiServerConnectionException e) { Logger.LogWarning("Error while connecting to the API server.", e); exceptionsList.Add(e); return(false); } }