cloudfilename

package
v0.0.0-...-a1c7e93 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 30, 2026 License: Apache-2.0 Imports: 5 Imported by: 0

Documentation

Overview

Package cloudfilename 提供云端下载文件名生成与清理规则。 服务端 (pkg/server) 与客户端 (cmd/sclient) 共用同一套规则, 保证 URL → 默认保存文件名的推导结果双端一致(wget 行为)。

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrEntryEmptyURL       = errors.New("cloud download entry: URL is empty")
	ErrEntryInvalidURL     = errors.New("cloud download entry: invalid URL")
	ErrEntryBadScheme      = errors.New("cloud download entry: unsupported URL scheme (only http/https)")
	ErrEntryMissingHost    = errors.New("cloud download entry: missing host")
	ErrEntryDupURL         = errors.New("cloud download entry: duplicate URL with different filename")
	ErrEntryUnsafeFilename = errors.New("cloud download entry: filename contains unsafe characters")
)

Functions

func DefaultFromURL

func DefaultFromURL(rawURL string) string

DefaultFromURL 遵循 wget 行为从 URL 推导默认文件名并做安全清理。 返回即为可安全落盘的文件名,调用方无需再调用 Safe。 内部先将不安全版通过 Safe 清理,保证"生成即安全"。

func ResolveFilename

func ResolveFilename(e Entry) (string, error)

ResolveFilename 返回条目的最终保存文件名。

  • Filename 非空:仅当 Safe 后不变(不含非法字符)才返回原文, 否则返回哨兵错误 ErrEntryUnsafeFilename(只校验不修改)。
  • Filename 为空:按 URL 自动生成(DefaultFromURL,内部已 Safe)。

func Safe

func Safe(name string) string

Safe 清理文件名中的路径分隔符与非法字符,防止路径穿越。

  • 替换 \ / ? : < > | " * \t 与 NUL 为下划线,去除首尾空白与点
  • 抵御 Windows 保留设备名(基名匹配时加 "_" 前缀)
  • 按 maxNameBytes 字节截断(优先保留扩展名,不劈开 UTF-8 字符)

清理后为空时返回 "download"。

func ValidateEntries

func ValidateEntries(entries []Entry) error

ValidateEntries 校验一组条目:全部通过 URL 格式校验,且同 URL 不允许出现 不同 Filename。返回首个错误(哨兵错误)。

func ValidateEntry

func ValidateEntry(e Entry) error

ValidateEntry 校验单个条目的 URL 格式(scheme + host)。

Types

type Entry

type Entry struct {
	URL      string `json:"url"`
	Filename string `json:"filename,omitempty"`
}

Entry 云端下载条目。client 与 server 共用此类型,避免双端各自定义漂移。

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL