Skip to content

Commit 55c76ed

Browse files
committed
feat: add rest apis
1 parent 7863252 commit 55c76ed

File tree

7 files changed

+79
-9
lines changed

7 files changed

+79
-9
lines changed

pkg/pip_requirements.txt

+1
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
11
spaceone-api
2+
python-multipart

src/setup.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,6 @@
2626
author_email="[email protected]",
2727
license="Apache License 2.0",
2828
packages=find_packages(),
29-
install_requires=["spaceone-core", "spaceone-api"],
29+
install_requires=["spaceone-core", "spaceone-api", "python-multipart"],
3030
zip_safe=False,
3131
)

src/spaceone/file_manager/conf/global_conf.py

+2
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
REST_TITLE = "REST API for File Manager"
2+
13
DATABASE_AUTO_CREATE_INDEX = True
24
DATABASES = {
35
"default": {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
ROUTER = [
2+
{
3+
"router_path": "spaceone.file_manager.interface.rest.files:router",
4+
"router_options": {
5+
"prefix": "/files",
6+
},
7+
},
8+
]
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
import logging
2+
3+
from fastapi import Request, Depends, File, UploadFile
4+
from fastapi.concurrency import run_in_threadpool
5+
from fastapi_utils.cbv import cbv
6+
from fastapi.security import HTTPBearer, HTTPAuthorizationCredentials
7+
from fastapi_utils.inferring_router import InferringRouter
8+
from spaceone.core.fastapi.api import BaseAPI, exception_handler
9+
from spaceone.file_manager.manager.file_connector_manager import FileConnectorManager
10+
11+
from spaceone.file_manager.service.file_service import FileService
12+
13+
_LOGGER = logging.getLogger(__name__)
14+
_AUTH_SCHEME = HTTPBearer(auto_error=False)
15+
16+
router = InferringRouter(include_in_schema=False)
17+
18+
19+
@cbv(router)
20+
class Files(BaseAPI):
21+
token: HTTPAuthorizationCredentials = Depends(_AUTH_SCHEME)
22+
service = "file-manager"
23+
24+
@router.post("/public/upload")
25+
@exception_handler
26+
async def upload_public_file(self, request: Request, file: UploadFile = File(...)):
27+
metadata = {
28+
"token": self.token.credentials,
29+
}
30+
31+
params = {
32+
"name": file.filename,
33+
"resource_group": "SYSTEM",
34+
}
35+
36+
file_svc = FileService(metadata)
37+
response: dict = await run_in_threadpool(file_svc.add, params)
38+
39+
file_id = response.get("file_id")
40+
41+
file_conn_mgr = FileConnectorManager()
42+
# Update File
43+
# file_id = file_vo.file_id
44+
45+
return response
46+
47+
@router.get("/public/{file_id}")
48+
@exception_handler
49+
async def download_public_file(self, request: Request, file_id: str):
50+
metadata = {
51+
"token": self.token.credentials,
52+
}
53+
54+
params = {
55+
"file_id": file_id,
56+
}
57+
58+
file_svc = FileService(metadata)
59+
response: dict = await run_in_threadpool(file_svc.get, params)
60+
61+
file_id = response.get("file_id")
62+
63+
file_conn_mgr = FileConnectorManager()
64+
# Update File
65+
# file_id = file_vo.file_id
66+
67+
return response

src/spaceone/file_manager/model/file/request.py

-4
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,6 @@
1616

1717
class FileAddRequest(BaseModel):
1818
name: str
19-
file_type: Union[str, None] = None
20-
reference: Union[dict, None] = None
21-
file_binary: Union[bytes, None] = None
22-
tags: Union[dict, None] = None
2319
resource_group: ResourceGroup
2420
domain_id: Union[str, None] = None
2521
workspace_id: Union[str, None] = None

src/spaceone/file_manager/service/file_service.py

-4
Original file line numberDiff line numberDiff line change
@@ -64,10 +64,6 @@ def add(self, params: FileAddRequest) -> Union[FileResponse, dict]:
6464

6565
file_vo = self.file_mgr.create_file(params.dict())
6666

67-
file_conn_mgr = FileConnectorManager()
68-
# Update File
69-
# file_id = file_vo.file_id
70-
7167
# Update Download URL
7268
# /files/public/{file_id}
7369
# /files/domain/{domain_id}/{file_id}

0 commit comments

Comments
 (0)