Skip to content

Commit 4ba5c25

Browse files
committed
Added initial upload endpoint for raw file
1 parent 72073cf commit 4ba5c25

File tree

3 files changed

+31
-1
lines changed

3 files changed

+31
-1
lines changed

src/dataset_image_annotator/api/v1/endpoints.py

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
from inspect import signature
55
from typing import Optional, Any, List
66

7-
from fastapi import APIRouter, HTTPException, status, Depends
7+
from fastapi import APIRouter, HTTPException, status, Depends, UploadFile, File
88
from fastapi.responses import ORJSONResponse
99
from fastapi_pagination import Page
1010
from fastapi_users import FastAPIUsers
@@ -18,6 +18,7 @@
1818
UserCreate, UserUpdate, UserItem, UserGroup, UserRead
1919
)
2020
from dataset_image_annotator.conf import settings
21+
from dataset_image_annotator.core import upload_handler
2122
from dataset_image_annotator.db import database
2223
from dataset_image_annotator.db.models import User
2324
from dataset_image_annotator.helpers import connect_to_db
@@ -105,3 +106,17 @@ async def get_user_groups(search: Optional[Json[Any]] = None, order_by: Optional
105106
return await core.get_user_groups(database, search, order_by)
106107

107108
raise HTTPException(status_code=403)
109+
110+
111+
@router.post('/raw-file', response_class=ORJSONResponse, tags=['Admin'])
112+
@handle_exceptions
113+
async def upload_raw_file(image_file: UploadFile = File(...)):
114+
if not image_file.filename:
115+
raise HTTPException(status_code=400, detail='Missing file')
116+
117+
try:
118+
response = await upload_handler.handle_raw_file(database, image_file)
119+
except TimeoutError as e:
120+
raise HTTPException(status_code=504, detail=str(e))
121+
122+
return response

src/dataset_image_annotator/core/__init__.py

Whitespace-only changes.
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
import logging
2+
from zoneinfo import ZoneInfo
3+
4+
from databases import Database
5+
6+
from dataset_image_annotator.conf import settings
7+
8+
logger = logging.getLogger(__name__)
9+
timezone = ZoneInfo(settings.timezone)
10+
11+
12+
async def handle_raw_file(database: Database, image_file):
13+
image_file_body = await image_file.read()
14+
15+
return True

0 commit comments

Comments
 (0)