internal virtual async Task <WebDavStreamResponse> GetFile(Uri requestUri, bool translate, GetFileParameters parameters) { Guard.NotNull(requestUri, "requestUri"); var headers = new HeaderBuilder() .Add(WebDavHeaders.Translate, translate ? "t" : "f") .AddWithOverwrite(parameters.Headers) .Build(); var requestParams = new RequestParameters { Headers = headers }; var response = await _dispatcher.Send( requestUri, HttpMethod.Get, requestParams, parameters.CancellationToken, HttpCompletionOption.ResponseHeadersRead).ConfigureAwait(false); var stream = await response.Content.ReadAsStreamAsync().ConfigureAwait(false); return(new WebDavStreamResponse(response, stream)); }
/// <summary> /// Creates a duplicate of the source resource identified by the source URI in the destination resource identified by the destination URI. /// </summary> /// <param name="sourceUri">The source <see cref="Uri"/>.</param> /// <param name="destUri">The destination <see cref="Uri"/>.</param> /// <param name="parameters">Parameters of the COPY operation.</param> /// <returns>An instance of <see cref="WebDavResponse" /></returns> public async Task <WebDavResponse> Copy(Uri sourceUri, Uri destUri, CopyParameters parameters) { Guard.NotNull(sourceUri, "sourceUri"); Guard.NotNull(destUri, "destUri"); var applyTo = parameters.ApplyTo ?? ApplyTo.Copy.ResourceAndAncestors; var headerBuilder = new HeaderBuilder() .Add(WebDavHeaders.Destination, GetAbsoluteUri(destUri).AbsoluteUri) .Add(WebDavHeaders.Depth, DepthHeaderHelper.GetValueForCopy(applyTo)) .Add(WebDavHeaders.Overwrite, parameters.Overwrite ? "T" : "F"); if (!string.IsNullOrEmpty(parameters.DestLockToken)) { headerBuilder.Add(WebDavHeaders.If, IfHeaderHelper.GetHeaderValue(parameters.DestLockToken)); } var headers = headerBuilder.AddWithOverwrite(parameters.Headers).Build(); var requestParams = new RequestParameters { Headers = headers }; var response = await _dispatcher.Send(sourceUri, WebDavMethod.Copy, requestParams, parameters.CancellationToken).ConfigureAwait(false); return(new WebDavResponse((int)response.StatusCode, response.ReasonPhrase)); }