Initial commit: MCP Hub Community Edition v3.0.0
Community edition generated from private repo via sync pipeline. Includes 9 plugins (WordPress, WooCommerce, WP Advanced, Gitea, n8n, Supabase, OpenPanel, Appwrite, Directus) with ~587 tools. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
56
plugins/wordpress/schemas/media.py
Normal file
56
plugins/wordpress/schemas/media.py
Normal file
@@ -0,0 +1,56 @@
|
||||
"""
|
||||
Media Pydantic Schemas
|
||||
|
||||
Validation schemas for WordPress media library operations.
|
||||
"""
|
||||
|
||||
from pydantic import BaseModel, ConfigDict, Field, HttpUrl, field_validator
|
||||
|
||||
class MediaBase(BaseModel):
|
||||
"""Base media schema"""
|
||||
|
||||
model_config = ConfigDict(extra="allow")
|
||||
|
||||
title: str | None = Field(None, description="Media title")
|
||||
alt_text: str | None = Field(None, description="Alternative text")
|
||||
caption: str | None = Field(None, description="Media caption")
|
||||
description: str | None = Field(None, description="Media description")
|
||||
|
||||
class MediaUpload(MediaBase):
|
||||
"""Schema for uploading media from URL"""
|
||||
|
||||
url: HttpUrl = Field(..., description="Source URL of the media file")
|
||||
filename: str | None = Field(None, description="Desired filename")
|
||||
|
||||
@classmethod
|
||||
@field_validator("filename")
|
||||
def validate_filename(cls, v):
|
||||
if v is not None:
|
||||
# Basic filename validation
|
||||
if "/" in v or "\\" in v:
|
||||
raise ValueError("Filename cannot contain path separators")
|
||||
if len(v) > 255:
|
||||
raise ValueError("Filename too long (max 255 characters)")
|
||||
return v
|
||||
|
||||
class MediaUpdate(MediaBase):
|
||||
"""Schema for updating media metadata"""
|
||||
|
||||
# All fields optional for updates
|
||||
pass
|
||||
|
||||
class MediaResponse(BaseModel):
|
||||
"""Schema for media response data"""
|
||||
|
||||
model_config = ConfigDict(extra="allow")
|
||||
|
||||
id: int
|
||||
title: str
|
||||
alt_text: str
|
||||
caption: str
|
||||
description: str
|
||||
mime_type: str
|
||||
media_type: str
|
||||
source_url: str
|
||||
link: str
|
||||
date: str
|
||||
Reference in New Issue
Block a user