using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Net; using System.Web; using WebDAVSharp.Server.Adapters; using WebDAVSharp.Server.Exceptions; using WebDAVSharp.Server.Stores; namespace WebDAVSharp.Server.MethodHandlers { /// /// This class implements the MKCOL HTTP method for WebDAV#. /// internal class WebDavMkColMethodHandler : WebDavMethodHandlerBase, IWebDavMethodHandler { /// /// Gets the collection of the names of the HTTP methods handled by this instance. /// /// /// The names. /// public IEnumerable Names { get { return new[] { "MKCOL" }; } } /// /// Processes the request. /// /// The through which the request came in from the client. /// The /// object containing both the request and response /// objects to use. /// The that the is hosting. /// /// public void ProcessRequest(WebDavServer server, HttpContext context, IWebDavStore store, String fileName) { //if (context.Request.ContentLength64 > 0) // throw new WebDavUnsupportedMediaTypeException(); IWebDavStoreCollection collection = GetParentCollection(server, store, fileName); string collectionName = ExtractCollectionName(fileName); if (collection.GetItemByName(collectionName) != null) throw new WebDavMethodNotAllowedException(); collection.CreateCollection(collectionName); context.SendSimpleResponse(HttpStatusCode.Created); } private string ExtractCollectionName(string fileName) { //segments.last.trim(/ \) return fileName.Split(new[] { '/', '\\' }, StringSplitOptions.RemoveEmptyEntries).Last(); } } }