55 lines
1.4 KiB
Go
55 lines
1.4 KiB
Go
package models
|
|
|
|
import (
|
|
pkg "git.solsynth.dev/hypernet/paperclip/pkg/internal"
|
|
"github.com/minio/minio-go/v7"
|
|
"github.com/minio/minio-go/v7/pkg/credentials"
|
|
)
|
|
|
|
const (
|
|
DestinationTypeLocal = "local"
|
|
DestinationTypeS3 = "s3"
|
|
)
|
|
|
|
type BaseDestination struct {
|
|
ID int `json:"id,omitempty"` // Auto filled with index, only for user
|
|
Type string `json:"type"`
|
|
Label string `json:"label"`
|
|
Region string `json:"region"`
|
|
IsBoost bool `json:"is_boost"`
|
|
}
|
|
|
|
type LocalDestination struct {
|
|
BaseDestination
|
|
|
|
Path string `json:"path"`
|
|
AccessBaseURL string `json:"access_baseurl"`
|
|
}
|
|
|
|
type S3Destination struct {
|
|
BaseDestination
|
|
|
|
Path string `json:"path"`
|
|
Bucket string `json:"bucket"`
|
|
Endpoint string `json:"endpoint"`
|
|
SecretID string `json:"secret_id"`
|
|
SecretKey string `json:"secret_key"`
|
|
AccessBaseURL string `json:"access_baseurl"`
|
|
ImageProxyURL string `json:"image_proxy_baseurl"`
|
|
EnableSSL bool `json:"enable_ssl"`
|
|
EnableSigned bool `json:"enable_signed"`
|
|
BucketLookup int `json:"bucket_lookup"`
|
|
}
|
|
|
|
func (v S3Destination) GetClient() (*minio.Client, error) {
|
|
client, err := minio.New(v.Endpoint, &minio.Options{
|
|
Creds: credentials.NewStaticV4(v.SecretID, v.SecretKey, ""),
|
|
Secure: v.EnableSSL,
|
|
BucketLookup: minio.BucketLookupType(v.BucketLookup),
|
|
})
|
|
if err == nil {
|
|
client.SetAppInfo("HyperNet.Paperclip", pkg.AppVersion)
|
|
}
|
|
return client, err
|
|
}
|