ossx

package
v1.2.2 Latest Latest
Warning

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

Go to latest
Published: Mar 24, 2026 License: MIT Imports: 6 Imported by: 0

README

ossx

ossx 是对阿里云 OSS Go SDK v2 的轻量封装。它不改造对象存储模型,而是把配置校验、上下文边界和常见上传操作包得更干净。

设计原则

  • 继续使用 OSS SDK 的原始请求和选项类型,不重新定义对象上传协议。
  • 运行时 API 统一要求非 nil context。
  • Base 配置会被克隆,避免调用方后续修改污染已构建客户端。
  • 支持直接传 CredentialsProvider,也支持用 AccessKeyID / AccessKeySecret 构造默认 provider。
  • 文件路径、bucket、key 在边界统一清洗和校验。

快速开始

client, err := ossx.New(&ossx.Config{
    Endpoint:        "oss-cn-hangzhou.aliyuncs.com",
    Region:          "cn-hangzhou",
    AccessKeyID:     "ak",
    AccessKeySecret: "sk",
})
if err != nil {
    panic(err)
}

_, err = client.PutObject(context.Background(), &ossx.PutObjectRequest{
    Bucket: aliyunoss.Ptr("assets"),
    Key:    aliyunoss.Ptr("hello.txt"),
    Body:   strings.NewReader("hello"),
})
if err != nil {
    panic(err)
}

如果你已经有自定义凭证提供器:

client, err := ossx.New(&ossx.Config{
    Endpoint:            "oss-cn-hangzhou.aliyuncs.com",
    Region:              "cn-hangzhou",
    CredentialsProvider: ossx.NewCredentialsProvider("ak", "sk"),
})

API 摘要

type Client interface {
    Raw() *aliyunoss.Client
    PutObject(context.Context, *PutObjectRequest, ...func(*Options)) (*PutObjectResult, error)
    PutObjectFromFile(context.Context, *PutObjectRequest, string, ...func(*Options)) (*PutObjectResult, error)
    AppendObject(context.Context, *AppendObjectRequest, ...func(*Options)) (*AppendObjectResult, error)
    AppendFile(context.Context, string, string, ...func(*AppendOptions)) (*AppendOnlyFile, error)
}

func Open(*Config, ...func(*Options)) (Client, error)
func New(*Config, ...func(*Options)) (Client, error)
func NewCredentialsProvider(string, string) credentials.CredentialsProvider

默认行为

  • Open(conf, ...)New(conf, ...) 等价
  • EndpointRegionAccessKeyIDAccessKeySecret 会先 trim
  • PutObjectFromFile 会校验并清洗文件路径
  • AppendFile 会校验并清洗 bucketkey

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrNilConfig           = errors.New("ossx: config is required")
	ErrContextRequired     = errors.New("ossx: context is required")
	ErrEndpointRequired    = errors.New("ossx: endpoint is required")
	ErrRegionRequired      = errors.New("ossx: region is required")
	ErrCredentialsRequired = errors.New("ossx: credentials provider or access keys are required")
	ErrRequestRequired     = errors.New("ossx: request is required")
	ErrFilePathRequired    = errors.New("ossx: file path is required")
	ErrBucketRequired      = errors.New("ossx: bucket is required")
	ErrKeyRequired         = errors.New("ossx: object key is required")
)

Functions

func NewCredentialsProvider

func NewCredentialsProvider(accessKeyID, accessKeySecret string) credentials.CredentialsProvider

Types

type AppendObjectRequest

type AppendObjectRequest = aliyunoss.AppendObjectRequest

type AppendObjectResult

type AppendObjectResult = aliyunoss.AppendObjectResult

type AppendOnlyFile

type AppendOnlyFile = aliyunoss.AppendOnlyFile

type AppendOptions

type AppendOptions = aliyunoss.AppendOptions

type Client

type Client interface {
	Raw() *aliyunoss.Client
	PutObject(context.Context, *PutObjectRequest, ...func(*Options)) (*PutObjectResult, error)
	PutObjectFromFile(context.Context, *PutObjectRequest, string, ...func(*Options)) (*PutObjectResult, error)
	AppendObject(context.Context, *AppendObjectRequest, ...func(*Options)) (*AppendObjectResult, error)
	AppendFile(context.Context, string, string, ...func(*AppendOptions)) (*AppendOnlyFile, error)
}

func New

func New(conf *Config, optFns ...func(*Options)) (Client, error)

func Open added in v1.2.2

func Open(conf *Config, optFns ...func(*Options)) (Client, error)

type Config

type Config struct {
	Endpoint            string
	Region              string
	AccessKeyID         string
	AccessKeySecret     string
	CredentialsProvider credentials.CredentialsProvider
	HTTPClient          *http.Client
	Base                *aliyunoss.Config
	// contains filtered or unexported fields
}

type Options

type Options = aliyunoss.Options

type PutObjectRequest

type PutObjectRequest = aliyunoss.PutObjectRequest

type PutObjectResult

type PutObjectResult = aliyunoss.PutObjectResult

Jump to

Keyboard shortcuts

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