Example #1
0
        private static void DavPreparation(WebRequest request, object context)
        {
            // cast to http webrequest
            var hrequest = request as HttpWebRequest;

            // Set default headers
            hrequest.Headers["Pragma"]        = "no-cache";
            hrequest.Headers["Cache-Control"] = "no-cache";
            hrequest.ContentType = "text/xml";
            hrequest.Accept      = "*/*";

            // for all meta data calls we allow stream buffering in webdav
            if (hrequest.Method != WebRequestMethods.Http.Put)
            {
                hrequest.AllowWriteStreamBuffering = true;
            }

            // set translate mode
            hrequest.Headers["Translate"] = "f";

            // Retrieve only the requested folder
            switch (hrequest.Method)
            {
            case WebRequestMethodsEx.WebDAV.PropFind:
                hrequest.Headers["Depth"] = "1";
                break;

            case WebRequestMethodsEx.WebDAV.Move:
            {
                var targetUri = context as string;
                if (targetUri == null)
                {
                    throw new Exception("Not a valid URL");
                }

                targetUri = HttpUtilityEx.GenerateEncodedUriString(new Uri(targetUri));
                targetUri = targetUri.Replace(WebDavConfiguration.YaUrl + ":443", WebDavConfiguration.YaUrl);
                hrequest.Headers["Destination"] = targetUri;
            }
            break;

            case WebRequestMethodsEx.WebDAV.Copy:
            {
                var targetUri = context as string;
                if (targetUri == null)
                {
                    throw new Exception("Not a valid URL");
                }

                targetUri = HttpUtilityEx.GenerateEncodedUriString(new Uri(targetUri));
                targetUri = targetUri.Replace(WebDavConfiguration.YaUrl + ":443", WebDavConfiguration.YaUrl);
                hrequest.Headers["Destination"] = targetUri;
                hrequest.Headers["Depth"]       = "infinity";
                hrequest.Headers["Overwrite"]   = "T";
            }
            break;
            }
        }
Example #2
0
        public override WebRequest CreateWebRequest(string url, String method, ICredentials credentials, Boolean bAllowStreamBuffering, object context)
        {
            // quote the string in the right way
            String quotedurl = HttpUtilityEx.GenerateEncodedUriString(new Uri(url));

            // create base request
            WebRequest request = base.CreateWebRequest(quotedurl, method, credentials, bAllowStreamBuffering, context, DavPreparation) as HttpWebRequest;

            // go ahead
            return(request);
        }
        private void DavPreparation(WebRequest request, Object context)
        {
            // cast to http webrequest
            HttpWebRequest hrequest = request as HttpWebRequest;

            // Set default headers
            hrequest.Headers["Pragma"]        = "no-cache";
            hrequest.Headers["Cache-Control"] = "no-cache";
            hrequest.ContentType = "text/xml";
            hrequest.Accept      = "*/*";

#if !WINDOWS_PHONE
            // for all meta data calls we allow stream buffering in webdav
            if (hrequest.Method != WebRequestMethods.Http.Put)
            {
                hrequest.AllowWriteStreamBuffering = true;
            }
#endif

            // set translate mode
            hrequest.Headers["Translate"] = "f";

            // Retrieve only the requested folder
            if (hrequest.Method == WebRequestMethodsEx.WebDAV.PropFind)
            {
                hrequest.Headers["Depth"] = "1";
            }

            // set the target in case of move operation
            else if (hrequest.Method == WebRequestMethodsEx.WebDAV.Move)
            {
                String targetUri = context as String;
                if (targetUri == null)
                {
                    throw new Exception("Not a valid URL");
                }

                targetUri = HttpUtilityEx.GenerateEncodedUriString(new Uri(targetUri));
                hrequest.Headers["Destination"] = targetUri;
            }
            else if (hrequest.Method == WebRequestMethodsEx.WebDAV.Copy)
            {
                String targetUri = context as String;
                if (targetUri == null)
                {
                    throw new Exception("Not a valid URL");
                }

                targetUri = HttpUtilityEx.GenerateEncodedUriString(new Uri(targetUri));
                hrequest.Headers["Destination"] = targetUri;
                hrequest.Headers["Depth"]       = "infinity";
                hrequest.Headers["Overwrite"]   = "T";
            }
        }