def get_filestat(request: Request, schema: str = "", path: str = "", user: str = ""): _, filename = path.split(path) path = get_obj_path(schema, path, user=user) if not path: log_and_raise( HTTPStatus.NOT_FOUND.value, path=path, err="illegal path prefix or schema" ) logger.debug("Got get filestat request", path=path) secrets = get_secrets(request) stat = None try: stores = store_manager.set(secrets) stat = stores.object(url=path).stat() except FileNotFoundError as exc: log_and_raise(HTTPStatus.NOT_FOUND.value, path=path, err=str(exc)) ctype, _ = mimetypes.guess_type(path) if not ctype: ctype = "application/octet-stream" return { "size": stat.size, "modified": stat.modified, "mimetype": ctype, }
def get_files( schema: str = "", objpath: str = fastapi.Query("", alias="path"), user: str = "", size: int = 0, offset: int = 0, auth_info: mlrun.api.schemas.AuthInfo = fastapi.Depends( mlrun.api.api.deps.authenticate_request), ): _, filename = objpath.split(objpath) objpath = get_obj_path(schema, objpath, user=user) if not objpath: log_and_raise( HTTPStatus.NOT_FOUND.value, path=objpath, err="illegal path prefix or schema", ) logger.debug("Got get files request", path=objpath) secrets = get_secrets(auth_info) body = None try: stores = store_manager.set(secrets) obj = stores.object(url=objpath) if objpath.endswith("/"): listdir = obj.listdir() return { "listdir": listdir, } body = obj.get(size, offset) except FileNotFoundError as exc: log_and_raise(HTTPStatus.NOT_FOUND.value, path=objpath, err=str(exc)) if body is None: log_and_raise(HTTPStatus.NOT_FOUND.value, path=objpath) ctype, _ = mimetypes.guess_type(objpath) if not ctype: ctype = "application/octet-stream" return fastapi.Response(content=body, media_type=ctype, headers={"x-suggested-filename": filename})
def get_item_object_using_source_credentials(self, source: MarketplaceSource, url): credentials = self._get_source_credentials(source.metadata.name) if not url.startswith(source.spec.path): raise mlrun.errors.MLRunInvalidArgumentError( "URL to retrieve must be located in the source filesystem tree" ) if url.endswith("/"): stores = store_manager.set(credentials) obj = stores.object(url=url) listdir = obj.listdir() return { "listdir": listdir, } else: catalog_data = mlrun.run.get_object(url=url, secrets=credentials) return catalog_data