async def delete(self, path, confirm_delete=0, **kwargs): """Delete file, folder, or provider root contents :param OsfStoragePath path: path to delete :param int confirm_delete: Must be 1 to confirm root folder delete """ if path.identifier is None: raise exceptions.NotFoundError(str(path)) self.metrics.add('delete.is_root_delete', path.is_root) if path.is_root: self.metrics.add('delete.root_delete_confirmed', confirm_delete == 1) if confirm_delete == 1: await self._delete_folder_contents(path) return else: raise exceptions.DeleteError( 'confirm_delete=1 is required for deleting root provider folder', code=400, ) await (await self.make_signed_request('DELETE', self.build_url(path.identifier), params={'user': self.auth['id']}, expects=(200, ))).release()
async def delete(self, path, sha=None, message=None, branch=None, confirm_delete=0, **kwargs): """Delete file, folder, or provider root contents :param GitHubPath path: GitHubPath path object for file, folder, or root :param str sha: SHA-1 checksum of file/folder object :param str message: Commit message :param str branch: Repository branch :param int confirm_delete: Must be 1 to confirm root folder delete """ assert self.name is not None assert self.email is not None if path.is_root: if confirm_delete == 1: await self._delete_root_folder_contents(path) else: raise exceptions.DeleteError( 'confirm_delete=1 is required for deleting root provider folder', code=400, ) elif path.is_dir: await self._delete_folder(path, message, **kwargs) else: await self._delete_file(path, message, **kwargs)
async def delete(self, path, confirm_delete=0, **kwargs): """Deletes the key at the specified path :param str path: The path of the key to delete :param int confirm_delete: Must be 1 to confirm root folder delete """ await self._check_region() if path.is_root: if not confirm_delete == 1: raise exceptions.DeleteError( 'confirm_delete=1 is required for deleting root provider folder', code=400) if path.is_file: resp = await self.make_request( 'DELETE', self.bucket.new_key(path.path).generate_url( settings.TEMP_URL_SECS, 'DELETE'), expects=( 200, 204, ), throws=exceptions.DeleteError, ) await resp.release() else: await self._delete_folder(path, **kwargs)
async def delete(self, # type: ignore path: wb_path.WaterButlerPath, confirm_delete: int=0, **kwargs) -> None: """Delete file, folder, or provider root contents :param BoxPath path: BoxPath path object for folder :param int confirm_delete: Must be 1 to confirm root folder delete """ if not path.identifier: # TODO This should be abstracted raise exceptions.NotFoundError(str(path)) if path.is_root: if confirm_delete == 1: await self._delete_folder_contents(path) return else: raise exceptions.DeleteError( 'confirm_delete=1 is required for deleting root provider folder', code=400 ) if path.is_file: url = self.build_url('files', path.identifier) else: url = self.build_url('folders', path.identifier, recursive=True) async with self.request( 'DELETE', url, expects=(204, ), throws=exceptions.DeleteError, ): return # Ensures the response is properly released
async def delete(self, path, confirm_delete=0, **kwargs): """Delete file, folder, or provider root contents :param DropboxPath path: DropboxPath path object for folder :param int confirm_delete: Must be 1 to confirm root folder delete """ if path.is_root: if confirm_delete == 1: await self._delete_folder_contents(path) return else: raise exceptions.DeleteError( 'confirm_delete=1 is required for deleting root provider folder', code=400) async with self.request( 'POST', self.build_url('fileops', 'delete'), data={ 'root': 'auto', 'path': path.full_path }, expects=(200, ), throws=exceptions.DeleteError, ): return # release resp
async def delete(self, path, confirm_delete=0, **kwargs): """Delete the entity at ``path``. :param FigsharePath path: Path to be deleted :param int confirm_delete: Must be 1 to confirm root folder delete :rtype: None :raises: :class:`waterbutler.core.exceptions.NotFoundError` :raises: :class:`waterbutler.core.exceptions.DeleteError` Quirks: * If the FigsharePath given is for the provider root path, then the contents of the provider root path will be deleted, but not the provider root itself. """ if not path.identifier: raise exceptions.NotFoundError(str(path)) if path.is_root: if confirm_delete == 1: return await self._delete_container_contents() raise exceptions.DeleteError( 'confirm_delete=1 is required for deleting root provider folder', code=400) if len(path.parts) == 2: if not path.is_folder: raise exceptions.NotFoundError(str(path)) delete_path = (*self.root_path_parts, 'articles', path.parts[1]._id) elif len(path.parts) == 3: if path.is_folder: raise exceptions.NotFoundError(str(path)) article_response = await self.make_request( 'GET', self.build_url(False, *self.root_path_parts, 'articles', path.parts[1]._id), expects=(200, ), ) article_json = await article_response.json() if article_json['defined_type'] in settings.FOLDER_TYPES: delete_path = ('articles', path.parts[1]._id, 'files', path.parts[2]._id) else: delete_path = (*self.root_path_parts, 'articles', path.parts[1]._id) delete_article_response = await self.make_request( 'DELETE', self.build_url(False, *delete_path), expects=(204, ), ) await delete_article_response.release()
async def delete( self, # type: ignore path: GoogleDrivePath, confirm_delete: int = 0, **kwargs) -> None: """Given a WaterButlerPath, delete that path :param GoogleDrivePath path: Path to be deleted :param int confirm_delete: Must be 1 to confirm root folder delete :rtype: None :raises: :class:`waterbutler.core.exceptions.NotFoundError` :raises: :class:`waterbutler.core.exceptions.DeleteError` Quirks: If the WaterButlerPath given is for the provider root path, then the contents of provider root path will be deleted. But not the provider root itself. """ if not path.identifier: raise exceptions.NotFoundError(str(path)) self.metrics.add('delete.is_root_delete', path.is_root) if path.is_root: self.metrics.add('delete.root_delete_confirmed', confirm_delete == 1) if confirm_delete == 1: await self._delete_folder_contents(path) return else: raise exceptions.DeleteError( 'confirm_delete=1 is required for deleting root provider folder', code=400) async with self.request( 'PUT', self.build_url('files', path.identifier), data=json.dumps({'labels': { 'trashed': 'true' }}), headers={'Content-Type': 'application/json'}, expects=(200, ), throws=exceptions.DeleteError, ): return
async def delete( self, path: WaterButlerPath, confirm_delete: int = 0, # type: ignore **kwargs) -> None: # type: ignore """Delete file, folder, or provider root contents :param WaterButlerPath path: WaterButlerPath path object for folder :param int confirm_delete: Must be 1 to confirm root folder delete """ if path.is_root: if confirm_delete == 1: return await self._delete_folder_contents(path) else: raise exceptions.DeleteError( 'confirm_delete=1 is required for deleting root provider folder', code=400) await self.dropbox_request( self.build_url('files', 'delete'), {'path': self.folder.rstrip('/') + '/' + path.path.rstrip('/')}, throws=exceptions.DeleteError, )
async def delete(self, path, confirm_delete=0, **kwargs): """Delete the file at ``path``. If ``path`` is ``/`` and ``confirm_delete`` is ``1``, then delete all of the files within the article, but not the article itself. :param FigsharePath path: Path to be deleted :param int confirm_delete: Must be 1 to confirm root folder delete :rtype: None :raises: :class:`waterbutler.core.exceptions.NotFoundError` :raises: :class:`waterbutler.core.exceptions.DeleteError` Quirks: * If the FigsharePath given is for the provider root path, then the contents of the provider root path will be deleted, but not the provider root itself. """ if path.is_root: if confirm_delete == 1: return await self._delete_container_contents() raise exceptions.DeleteError( 'confirm_delete=1 is required for deleting root provider folder', code=400) await self._delete_file(path.parts[-1]._id)