🚚 Expose the models to public
This commit is contained in:
53
pkg/filekit/models/destination.go
Normal file
53
pkg/filekit/models/destination.go
Normal file
@@ -0,0 +1,53 @@
|
||||
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"`
|
||||
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
|
||||
}
|
Reference in New Issue
Block a user