Exemplo n.º 1
0
 public function handle($path, Uri $baseUri, HttpRequest $request, StorageInterface $storage)
 {
     if ($request->getMethod() != WebDav::METHOD_MKCOL) {
         return;
     }
     try {
         $storage->findResource($path);
         // Collection is already mapped...
         throw new MethodNotAllowedException();
     } catch (\OutOfBoundsException $e) {
     }
     $parts = explode('/', $path);
     $name = array_pop($parts);
     try {
         $parent = $storage->findResource(implode('/', $parts));
     } catch (\OutOfBoundsException $e) {
         throw new WebDavException(WebDav::CODE_CONFLICT);
     }
     $proppatch = $this->parseBody($request);
     $storage->beginTransaction();
     try {
         $resource = $storage->createCollection($parent, $name);
         $success = true;
         if ($proppatch !== NULL) {
             $proppatch->applyOperations($resource);
         }
     } catch (\Exception $e) {
         $storage->rollBack();
         throw $e;
     }
     $storage->commit();
     if ($success) {
         return new HttpResponse(WebDav::CODE_CREATED);
     }
     $builder = new MakeCollectionResponseBuilder($proppatch);
     return $builder->buildResponse(WebDav::CODE_FORBIDDEN);
 }