gostorages

A unified interface to manipulate storage engine (file system, s3, etc.) for Go

  • 所有者: ulule/gostorages
  • 平台:
  • 許可證: MIT License
  • 分類:
  • 主題:
  • 喜歡:
    0
      比較:

Github星跟蹤圖

gostorages

A unified interface to manipulate storage backends in Go.

gostorages is used in picfit to allow us switching storage backends.

The following backends are supported:

  • Amazon S3
  • Google Cloud Storage
  • File system

Usage

It offers you a small API to manipulate your files on multiple storages.

// Storage is the storage interface.
type Storage interface {
	Save(ctx context.Context, content io.Reader, path string) error
	Stat(ctx context.Context, path string) (*Stat, error)
	Open(ctx context.Context, path string) (io.ReadCloser, error)
	Delete(ctx context.Context, path string) error
}

// Stat contains metadata about content stored in storage.
type Stat struct {
	ModifiedTime time.Time
	Size         int64
}

// ErrNotExist is a sentinel error returned by the Stat method.
var ErrNotExist = errors.New("does not exist")

If you are migrating from a File system storage to an Amazon S3, you don't need to migrate all your methods anymore!

Be lazy again!

File system

The file system backend requires a root directory.

dir := os.TempDir()
storage := fs.NewStorage(fs.Config{Root: dir})

// Saving a file named test
storage.Save(ctx, strings.NewReader("(╯°□°)╯︵ ┻━┻"), "test")

// Deleting the new file on the storage
storage.Delete(ctx, "test")

Amazon S3

The S3 backend requires AWS credentials, an AWS region and a S3 bucket name.

storage, _ := s3.NewStorage(s3.Config{
    AccessKeyID:     accessKeyID,
    SecretAccessKey: secretAccessKey,
    Region:          region,
    Bucket:          bucket,
})

// Saving a file named test
storage.Save(ctx, strings.NewReader("(>_<)"), "test")

// Deleting the new file on the storage
storage.Delete(ctx, "test")

Roadmap

See issues.

Don't hesitate to send patch or improvements.

主要指標

概覽
名稱與所有者ulule/gostorages
主編程語言Go
編程語言Go (語言數: 1)
平台
許可證MIT License
所有者活动
創建於2014-12-06 16:58:18
推送於2025-04-16 23:18:27
最后一次提交2025-03-13 08:37:27
發布數7
最新版本名稱v0.2.5 (發布於 )
第一版名稱v0.1.0 (發布於 )
用户参与
星數69
關注者數12
派生數20
提交數73
已啟用問題?
問題數10
打開的問題數4
拉請求數17
打開的拉請求數2
關閉的拉請求數3
项目设置
已啟用Wiki?
已存檔?
是復刻?
已鎖定?
是鏡像?
是私有?