Skip to content

langgenius/dify-cloud-kit

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Dify Cloud Kit

Dify Cloud Kit is a unified abstraction library for integrating various cloud object storage services in Go. It simplifies switching between providers and supports local testing and multi-cloud deployments.

✨ Features

  • Supports multiple backends: Local FS, Aliyun OSS, AWS S3, Azure Blob, Tencent COS, Huawei OBS, Google GCS
  • Unified and clean interface
  • Factory pattern to dynamically load drivers
  • Easy to write tests with local and in-memory backends

📦 Installation

go get github.com/langgenius/dify-cloud-kit

🚀 Quick Start

import (
    "github.com/langgenius/dify-cloud-kit/oss"
    "github.com/langgenius/dify-cloud-kit/oss/factory"
)

func main() {
    store, err := factory.Load("local", oss.OSSArgs{
        Local: &oss.Local{
            Path: "/tmp/files",
        },
    })
    if err != nil {
        panic(err)
    }

    files, _ := store.List("/")
    fmt.Println(files)
}

📁 Supported Storage Providers

Provider Module Path Required Fields
Local oss/local/localfile.go Path
Aliyun OSS oss/aliyun/aliyun.go Endpoint, AccessKey, SecretKey, Bucket
AWS S3 oss/s3/s3.go Region, AccessKey, SecretKey, Bucket
Azure Blob oss/azureblob/blob.go AccountName, AccountKey, Container
Google GCS oss/gcsblob/gcs.go CredentialsJSON, Bucket
Tencent COS oss/tencentcos/cos.go SecretId, SecretKey, Bucket, Region
Huawei OBS oss/huanweiobs/obs.go AK, SK, Endpoint, Bucket
Volcengine TOS oss/volcenginetos/tos.go Endpoint, AccessKey, SecretKey, Bucket

🏗️ Usage with Factory

You can dynamically load a storage backend using the factory:

store, err := factory.Load("s3", oss.OSSArgs{
    S3: &oss.S3{
        Region:    "us-west-2",
        AccessKey: "AKIA...",
        SecretKey: "SECRET...",
        Bucket:    "my-bucket",
    },
})

🧪 Testing

Unit tests are located in tests/oss/oss_test.go.

Environment Variables

Some providers require credentials to be passed via environment variables. Set them as needed:

export OSS_AWS_ACCESS_KEY=your-access-key
export OSS_AWS_SECRET_KEY=your-secret-key
export OSS_AWS_REGION=your-region
export OSS_S3_BUCKET=test-bucket

export OSS_ALIYUN_ENDPOINT=your-endpoint
export OSS_ALIYUN_ACCESS_KEY=your-access-key
export OSS_ALIYUN_SECRET_KEY=your-secret-key
export OSS_ALIYUN_BUCKET=test-bucket

Run Tests

go test ./...

📄 License

This project is licensed under the Apache 2.0 License.

NOTICE

Some parts of the code in this project originate from dify-plugin-daemon

Provider Author PR
Aliyun OSS bravomark langgenius/dify-plugin-daemon#261
Azure Blob techan langgenius/dify-plugin-daemon#172
Google GCS Hironori Yamamoto langgenius/dify-plugin-daemon#237
Local lengyhua langgenius/dify-plugin-daemon#157
AWS S3 Yeuoly https://github.com/langgenius/dify-plugin-daemon/commit/9ad9d7d4de1d123956ab07955e541bc4053e5170
Tencent COS quicksand langgenius/dify-plugin-daemon#97
Volcengine TOS quicksand #2

About

A library and tools for open cloud development in Go.

Resources

License

Code of conduct

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy