mirror of
https://github.com/mofeng-git/One-KVM.git
synced 2025-12-12 17:20:30 +08:00
refactoring
This commit is contained in:
parent
9103492d71
commit
25c9c63788
@ -33,8 +33,9 @@ from ....validators.kvm import valid_msd_image_name
|
||||
|
||||
from ..http import exposed_http
|
||||
from ..http import make_json_response
|
||||
from ..http import get_field_value
|
||||
from ..http import get_multipart_field
|
||||
from ..http import get_multipart_reader
|
||||
from ..http import get_multipart_reader_str
|
||||
from ..http import get_multipart_reader_field
|
||||
|
||||
|
||||
# ======
|
||||
@ -69,14 +70,14 @@ class MsdApi:
|
||||
@exposed_http("POST", "/msd/write")
|
||||
async def __write_handler(self, request: Request) -> Response:
|
||||
logger = get_logger(0)
|
||||
reader = await request.multipart()
|
||||
reader = await get_multipart_reader(request)
|
||||
name = ""
|
||||
written = 0
|
||||
try:
|
||||
name = valid_msd_image_name(await get_field_value(reader, "image"))
|
||||
size = valid_int_f0(await get_field_value(reader, "size"))
|
||||
name = valid_msd_image_name(await get_multipart_reader_str(reader, "image"))
|
||||
size = valid_int_f0(await get_multipart_reader_str(reader, "size"))
|
||||
|
||||
data_field = await get_multipart_field(reader, "data")
|
||||
data_field = await get_multipart_reader_field(reader, "data")
|
||||
|
||||
async with self.__msd.write_image(name, size):
|
||||
logger.info("Writing image %r to MSD ...", name)
|
||||
|
||||
@ -177,12 +177,19 @@ async def start_streaming(request: aiohttp.web.Request, content_type: str) -> ai
|
||||
|
||||
|
||||
# =====
|
||||
async def get_field_value(reader: aiohttp.MultipartReader, name: str) -> str:
|
||||
field = await get_multipart_field(reader, name)
|
||||
async def get_multipart_reader(request: aiohttp.web.Request) -> aiohttp.MultipartReader:
|
||||
try:
|
||||
return (await request.multipart())
|
||||
except Exception:
|
||||
raise ValidatorError("Expected multipart")
|
||||
|
||||
|
||||
async def get_multipart_reader_str(reader: aiohttp.MultipartReader, name: str) -> str:
|
||||
field = await get_multipart_reader_field(reader, name)
|
||||
return (await field.read()).decode("utf-8")
|
||||
|
||||
|
||||
async def get_multipart_field(reader: aiohttp.MultipartReader, name: str) -> aiohttp.BodyPartReader:
|
||||
async def get_multipart_reader_field(reader: aiohttp.MultipartReader, name: str) -> aiohttp.BodyPartReader:
|
||||
field = await reader.next()
|
||||
if not isinstance(field, aiohttp.BodyPartReader):
|
||||
raise ValidatorError(f"Expected body part as {name!r} field")
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user