principalInfo['uri']; } public function createFile($name, $data = null) { throw new Forbidden('Permission denied to create files in the trashbin'); } public function createDirectory($name) { throw new Forbidden('Permission denied to create a directory in the trashbin'); } public function getChild($name): INode { switch ($name) { case RestoreTarget::NAME: return new RestoreTarget(); case DeletedCalendarObjectsCollection::NAME: return new DeletedCalendarObjectsCollection( $this->caldavBackend, $this->principalInfo ); } throw new NotFound(); } public function getChildren(): array { return [ new RestoreTarget(), new DeletedCalendarObjectsCollection( $this->caldavBackend, $this->principalInfo ), ]; } public function childExists($name): bool { return in_array($name, [ RestoreTarget::NAME, DeletedCalendarObjectsCollection::NAME, ], true); } public function delete() { throw new Forbidden('Permission denied to delete the trashbin'); } public function getName(): string { return self::NAME; } public function setName($name) { throw new Forbidden('Permission denied to rename the trashbin'); } public function getLastModified(): int { return 0; } public function propPatch(PropPatch $propPatch): void { throw new Forbidden('not implemented'); } public function getProperties($properties): array { return [ '{DAV:}resourcetype' => new ResourceType([ '{DAV:}collection', sprintf('{%s}trash-bin', \OCA\DAV\DAV\Sharing\Plugin::NS_NEXTCLOUD), ]), ]; } }