taolib.testing.file_storage.processing#

文件处理模块。

导出处理协议和实现。

Submodules#

Classes#

ProcessingPipeline

文件处理管道。

ProcessingResult

文件处理结果。

FileValidationResult

文件验证结果。

FileValidatorProtocol

文件验证器协议。

ThumbnailGeneratorProtocol

缩略图生成器协议。

ThumbnailOutput

缩略图生成输出。

DefaultFileValidator

默认文件验证器实现。

Package Contents#

class taolib.testing.file_storage.processing.ProcessingPipeline(validator: taolib.testing.file_storage.processing.protocols.FileValidatorProtocol, thumbnail_generator: taolib.testing.file_storage.processing.protocols.ThumbnailGeneratorProtocol | None = None)#

文件处理管道。

编排验证和后处理步骤。

_validator#
_thumbnail_generator = None#
async process_upload(filename: str, declared_content_type: str, data: bytes, allowed_mime_types: list[str] | None = None, max_file_size_bytes: int | None = None) ProcessingResult#

处理上传的文件。

执行验证并计算校验和。

参数:
  • filename -- 文件名

  • declared_content_type -- 声明的 MIME 类型

  • data -- 文件数据

  • allowed_mime_types -- 允许的 MIME 类型

  • max_file_size_bytes -- 最大文件大小

返回:

处理结果

抛出:

FileValidationError -- 如果验证失败

async generate_thumbnails(data: bytes, content_type: str, sizes: list[taolib.testing.file_storage.models.enums.ThumbnailSize] | None = None) list[taolib.testing.file_storage.processing.protocols.ThumbnailOutput]#

生成缩略图。

参数:
  • data -- 原始文件数据

  • content_type -- MIME 类型

  • sizes -- 要生成的尺寸列表

返回:

缩略图输出列表

class taolib.testing.file_storage.processing.ProcessingResult#

文件处理结果。

validated_content_type: str#
media_type: taolib.testing.file_storage.models.enums.MediaType#
checksum_sha256: str#
size_bytes: int#
class taolib.testing.file_storage.processing.FileValidationResult#

文件验证结果。

valid: bool#
errors: list[str] = []#
detected_content_type: str = ''#
media_type: taolib.testing.file_storage.models.enums.MediaType#
class taolib.testing.file_storage.processing.FileValidatorProtocol#

Bases: Protocol

文件验证器协议。

async validate(filename: str, declared_content_type: str, size_bytes: int, header_bytes: bytes, allowed_mime_types: list[str] | None = None, max_file_size_bytes: int | None = None) FileValidationResult#

验证文件。

参数:
  • filename -- 文件名

  • declared_content_type -- 声明的 MIME 类型

  • size_bytes -- 文件大小

  • header_bytes -- 文件头部字节(用于 magic byte 检测)

  • allowed_mime_types -- 允许的 MIME 类型列表(None 表示全部允许)

  • max_file_size_bytes -- 最大文件大小(None 表示不限制)

返回:

验证结果

class taolib.testing.file_storage.processing.ThumbnailGeneratorProtocol#

Bases: Protocol

缩略图生成器协议。

supports(content_type: str) bool#

检查是否支持该内容类型的缩略图生成。

async generate(source_data: bytes, content_type: str, sizes: list[taolib.testing.file_storage.models.enums.ThumbnailSize] | None = None) list[ThumbnailOutput]#

生成缩略图。

参数:
  • source_data -- 原始图片数据

  • content_type -- MIME 类型

  • sizes -- 要生成的尺寸列表(None 表示全部规格)

返回:

缩略图输出列表

class taolib.testing.file_storage.processing.ThumbnailOutput#

缩略图生成输出。

size: taolib.testing.file_storage.models.enums.ThumbnailSize#
width: int#
height: int#
data: bytes#
content_type: str = 'image/webp'#
class taolib.testing.file_storage.processing.DefaultFileValidator#

默认文件验证器实现。

async validate(filename: str, declared_content_type: str, size_bytes: int, header_bytes: bytes, allowed_mime_types: list[str] | None = None, max_file_size_bytes: int | None = None) taolib.testing.file_storage.processing.protocols.FileValidationResult#

验证文件的类型、大小和安全性。