新增 Nostr 渠道扩展,支持在 Yuxi 平台中集成 Nostr 去中心化社交协议。 包含以下功能模块: - bus: 事件总线与中继通信 - account: 账户管理 - key_utils: 密钥工具 - gateway: SSE/WebSocket 网关接入 - outbound: 外发消息管理 - gift_wrap: Gift Wrap 加密 - nip44: NIP-44 加密协议 - config_schema: 配置模式 - defaults: 默认配置 - profile_core: 用户资料核心 - profile_publisher: 资料发布 - event_utils: 事件工具 - deletion: 事件删除 - reactions: 表情反应 - metrics: 指标监控 - seen_tracker: 已读追踪 - session_route: 会话路由 - state_store: 状态存储
42 lines
1.2 KiB
Python
42 lines
1.2 KiB
Python
from pydantic import BaseModel, field_validator
|
|
|
|
|
|
class NostrProfileSchema(BaseModel):
|
|
name: str | None = None
|
|
display_name: str | None = None
|
|
about: str | None = None
|
|
picture: str | None = None
|
|
banner: str | None = None
|
|
website: str | None = None
|
|
nip05: str | None = None
|
|
lud16: str | None = None
|
|
|
|
@field_validator("picture", "banner", "website")
|
|
@classmethod
|
|
def validate_https_url(cls, v: str | None) -> str | None:
|
|
if v and not v.startswith("https://"):
|
|
raise ValueError(f"URL must use https://: {v}")
|
|
return v
|
|
|
|
|
|
class NostrAccountConfig(BaseModel):
|
|
name: str | None = None
|
|
enabled: bool = True
|
|
private_key: str | None = None
|
|
relays: list[str] = []
|
|
dm_policy: str = "pairing"
|
|
allow_from: list[str] = []
|
|
profile: NostrProfileSchema | None = None
|
|
|
|
|
|
class NostrConfig(BaseModel):
|
|
enabled: bool = True
|
|
name: str | None = None
|
|
default_account: str = "default"
|
|
private_key: str | None = None
|
|
relays: list[str] = []
|
|
dm_policy: str = "pairing"
|
|
allow_from: list[str] = []
|
|
profile: NostrProfileSchema | None = None
|
|
accounts: dict[str, NostrAccountConfig] = {}
|