refactor: split changes for api/controllers/web/remote_files.py (#29853)

This commit is contained in:
Asuka Minato 2025-12-23 21:30:30 +09:00 committed by GitHub
parent 870a6427c9
commit de021ff3e0
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 15 additions and 7 deletions

View File

@ -1,7 +1,8 @@
import urllib.parse import urllib.parse
import httpx import httpx
from flask_restx import marshal_with, reqparse from flask_restx import marshal_with
from pydantic import BaseModel, Field, HttpUrl
import services import services
from controllers.common import helpers from controllers.common import helpers
@ -10,14 +11,23 @@ from controllers.common.errors import (
RemoteFileUploadError, RemoteFileUploadError,
UnsupportedFileTypeError, UnsupportedFileTypeError,
) )
from controllers.web import web_ns
from controllers.web.wraps import WebApiResource
from core.file import helpers as file_helpers from core.file import helpers as file_helpers
from core.helper import ssrf_proxy from core.helper import ssrf_proxy
from extensions.ext_database import db from extensions.ext_database import db
from fields.file_fields import build_file_with_signed_url_model, build_remote_file_info_model from fields.file_fields import build_file_with_signed_url_model, build_remote_file_info_model
from services.file_service import FileService from services.file_service import FileService
from ..common.schema import register_schema_models
from . import web_ns
from .wraps import WebApiResource
class RemoteFileUploadPayload(BaseModel):
url: HttpUrl = Field(description="Remote file URL")
register_schema_models(web_ns, RemoteFileUploadPayload)
@web_ns.route("/remote-files/<path:url>") @web_ns.route("/remote-files/<path:url>")
class RemoteFileInfoApi(WebApiResource): class RemoteFileInfoApi(WebApiResource):
@ -97,10 +107,8 @@ class RemoteFileUploadApi(WebApiResource):
FileTooLargeError: File exceeds size limit FileTooLargeError: File exceeds size limit
UnsupportedFileTypeError: File type not supported UnsupportedFileTypeError: File type not supported
""" """
parser = reqparse.RequestParser().add_argument("url", type=str, required=True, help="URL is required") payload = RemoteFileUploadPayload.model_validate(web_ns.payload or {})
args = parser.parse_args() url = str(payload.url)
url = args["url"]
try: try:
resp = ssrf_proxy.head(url=url) resp = ssrf_proxy.head(url=url)