Пример #1
0
        /// <summary>
        /// Retrieves properties defined on the resource identified by the request URI.
        /// </summary>
        /// <param name="requestUri">The <see cref="System.Uri"/> to request.</param>
        /// <param name="parameters">Parameters of the PROPFIND operation.</param>
        /// <returns>An instance of <see cref="PropfindResponse" /></returns>
        public async Task <PropfindResponse> Propfind(Uri requestUri, PropfindParameters parameters)
        {
            Guard.NotNull(requestUri, "requestUri");

            var applyTo = parameters.ApplyTo ?? ApplyTo.Propfind.ResourceAndChildren;
            var headers = new RequestHeaders
            {
                new KeyValuePair <string, string>("Depth", DepthHeaderHelper.GetValueForPropfind(applyTo))
            };
            var requestBody   = PropfindRequestBuilder.BuildRequestBody(parameters.CustomProperties, parameters.Namespaces);
            var requestParams = new RequestParameters {
                Headers = headers, Content = new StringContent(requestBody)
            };
            var response = await _dispatcher.Send(requestUri, WebDavMethod.Propfind, requestParams, parameters.CancellationToken);

            var responseContent = await ReadContentAsString(response.Content).ConfigureAwait(false);

            return(_propfindResponseParser.Parse(responseContent, response.StatusCode, response.Description));
        }
Пример #2
0
        /// <summary>
        /// Retrieves properties defined on the resource identified by the request URI.
        /// </summary>
        /// <param name="requestUri">The <see cref="System.Uri"/> to request.</param>
        /// <param name="parameters">Parameters of the PROPFIND operation.</param>
        /// <returns>An instance of <see cref="PropfindResponse" /></returns>
        public async Task <PropfindResponse> Propfind([NotNull] Uri requestUri, [NotNull] PropfindParameters parameters)
        {
            Check.NotNull(requestUri, nameof(requestUri));
            Check.NotNull(parameters, nameof(parameters));

            var applyTo = parameters.ApplyTo ?? ApplyTo.Propfind.ResourceAndChildren;
            var headers = new RequestHeaders
            {
                new KeyValuePair <string, string>("Depth", DepthHeaderHelper.GetValueForPropfind(applyTo))
            };

            HttpContent requestContent = parameters.RequestType != PropfindRequestType.AllPropertiesImplied
                ? new StringContent(PropfindRequestBuilder.BuildRequestBody(parameters.RequestType, parameters.CustomProperties, parameters.Namespaces), DefaultEncoding, MediaTypeXml)
                : null;

            var requestParams = new RequestParameters {
                Headers = headers, Content = requestContent, ContentType = MediaTypeXml
            };
            var response = await _dispatcher.Send(requestUri, WebDavMethod.Propfind, requestParams, parameters.CancellationToken);

            var responseContent = await ReadContentAsString(response.Content).ConfigureAwait(false);

            return(_propfindResponseParser.Parse(responseContent, response.StatusCode, response.Description));
        }