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; } }
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"; } }