mirror of https://github.com/langgenius/dify.git
86 lines
2.1 KiB
Python
86 lines
2.1 KiB
Python
from __future__ import annotations
|
|
|
|
from datetime import datetime
|
|
|
|
from pydantic import BaseModel, ConfigDict, field_validator
|
|
|
|
|
|
class ResponseModel(BaseModel):
|
|
model_config = ConfigDict(
|
|
from_attributes=True,
|
|
extra="ignore",
|
|
populate_by_name=True,
|
|
serialize_by_alias=True,
|
|
protected_namespaces=(),
|
|
)
|
|
|
|
|
|
def _to_timestamp(value: datetime | int | None) -> int | None:
|
|
if isinstance(value, datetime):
|
|
return int(value.timestamp())
|
|
return value
|
|
|
|
|
|
class UploadConfig(ResponseModel):
|
|
file_size_limit: int
|
|
batch_count_limit: int
|
|
file_upload_limit: int | None = None
|
|
image_file_size_limit: int
|
|
video_file_size_limit: int
|
|
audio_file_size_limit: int
|
|
workflow_file_upload_limit: int
|
|
image_file_batch_limit: int
|
|
single_chunk_attachment_limit: int
|
|
attachment_image_file_size_limit: int | None = None
|
|
|
|
|
|
class FileResponse(ResponseModel):
|
|
id: str
|
|
name: str
|
|
size: int
|
|
extension: str | None = None
|
|
mime_type: str | None = None
|
|
created_by: str | None = None
|
|
created_at: int | None = None
|
|
preview_url: str | None = None
|
|
source_url: str | None = None
|
|
original_url: str | None = None
|
|
user_id: str | None = None
|
|
tenant_id: str | None = None
|
|
conversation_id: str | None = None
|
|
file_key: str | None = None
|
|
|
|
@field_validator("created_at", mode="before")
|
|
@classmethod
|
|
def _normalize_created_at(cls, value: datetime | int | None) -> int | None:
|
|
return _to_timestamp(value)
|
|
|
|
|
|
class RemoteFileInfo(ResponseModel):
|
|
file_type: str
|
|
file_length: int
|
|
|
|
|
|
class FileWithSignedUrl(ResponseModel):
|
|
id: str
|
|
name: str
|
|
size: int
|
|
extension: str | None = None
|
|
url: str | None = None
|
|
mime_type: str | None = None
|
|
created_by: str | None = None
|
|
created_at: int | None = None
|
|
|
|
@field_validator("created_at", mode="before")
|
|
@classmethod
|
|
def _normalize_created_at(cls, value: datetime | int | None) -> int | None:
|
|
return _to_timestamp(value)
|
|
|
|
|
|
__all__ = [
|
|
"FileResponse",
|
|
"FileWithSignedUrl",
|
|
"RemoteFileInfo",
|
|
"UploadConfig",
|
|
]
|