mirror of https://github.com/langgenius/dify.git
refactor: split changes for api/controllers/web/remote_files.py (#29853)
This commit is contained in:
parent
870a6427c9
commit
de021ff3e0
|
|
@ -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)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue