Documentation
¶
Index ¶
- type BucketExistsRequest
- type BucketInfo
- type CopyObjectRequest
- type CopyObjectResponse
- type CreateBucketRequest
- type DeleteBucketRequest
- type DeleteError
- type DeleteObjectRequest
- type DeleteObjectsRequest
- type DeleteObjectsResponse
- type DeletedObject
- type EncryptionConfig
- type GetObjectInfoRequest
- type GetObjectRequest
- type GetObjectResponse
- type ListObjectsRequest
- type ListObjectsResponse
- type ManagerConfig
- type MoveObjectRequest
- type MoveObjectResponse
- type ObjectExistsRequest
- type ObjectInfo
- type PresignedURLRequest
- type PublicURLRequest
- type PutObjectRequest
- type PutObjectResponse
- type RangeSpec
- type StorageFeature
- type StorageManager
- func (sm *StorageManager) BucketExists(ctx context.Context, providerName string, request *BucketExistsRequest) (bool, error)
- func (sm *StorageManager) CopyObject(ctx context.Context, providerName string, request *CopyObjectRequest) (*CopyObjectResponse, error)
- func (sm *StorageManager) CreateBucket(ctx context.Context, providerName string, request *CreateBucketRequest) error
- func (sm *StorageManager) DeleteBucket(ctx context.Context, providerName string, request *DeleteBucketRequest) error
- func (sm *StorageManager) DeleteObject(ctx context.Context, providerName string, request *DeleteObjectRequest) error
- func (sm *StorageManager) DeleteObjects(ctx context.Context, providerName string, request *DeleteObjectsRequest) (*DeleteObjectsResponse, error)
- func (sm *StorageManager) GeneratePresignedURL(ctx context.Context, providerName string, request *PresignedURLRequest) (string, error)
- func (sm *StorageManager) GeneratePublicURL(ctx context.Context, providerName string, request *PublicURLRequest) (string, error)
- func (sm *StorageManager) GetDefaultProvider() (StorageProvider, error)
- func (sm *StorageManager) GetObject(ctx context.Context, providerName string, request *GetObjectRequest) (*GetObjectResponse, error)
- func (sm *StorageManager) GetObjectInfo(ctx context.Context, providerName string, request *GetObjectInfoRequest) (*ObjectInfo, error)
- func (sm *StorageManager) GetProvider(name string) (StorageProvider, error)
- func (sm *StorageManager) GetProviderCapabilities(providerName string) ([]StorageFeature, int64, []string, error)
- func (sm *StorageManager) GetSupportedProviders() []string
- func (sm *StorageManager) HealthCheck(ctx context.Context) map[string]error
- func (sm *StorageManager) ListBuckets(ctx context.Context, providerName string) ([]BucketInfo, error)
- func (sm *StorageManager) ListObjects(ctx context.Context, providerName string, request *ListObjectsRequest) (*ListObjectsResponse, error)
- func (sm *StorageManager) MoveObject(ctx context.Context, providerName string, request *MoveObjectRequest) (*MoveObjectResponse, error)
- func (sm *StorageManager) ObjectExists(ctx context.Context, providerName string, request *ObjectExistsRequest) (bool, error)
- func (sm *StorageManager) PutObject(ctx context.Context, providerName string, request *PutObjectRequest) (*PutObjectResponse, error)
- func (sm *StorageManager) RegisterProvider(provider StorageProvider) error
- type StorageProvider
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type BucketExistsRequest ¶
type BucketExistsRequest struct {
Bucket string `json:"bucket"`
}
BucketExistsRequest represents a bucket exists request
type BucketInfo ¶
type BucketInfo struct {
Name string `json:"name"`
CreationDate time.Time `json:"creation_date"`
Region string `json:"region,omitempty"`
ProviderData map[string]interface{} `json:"provider_data"`
}
BucketInfo represents bucket information
type CopyObjectRequest ¶
type CopyObjectRequest struct {
SourceBucket string `json:"source_bucket"`
SourceKey string `json:"source_key"`
DestBucket string `json:"dest_bucket"`
DestKey string `json:"dest_key"`
Metadata map[string]string `json:"metadata,omitempty"`
ACL string `json:"acl,omitempty"`
Options map[string]interface{} `json:"options,omitempty"`
}
CopyObjectRequest represents a copy object request
type CopyObjectResponse ¶
type CopyObjectResponse struct {
Key string `json:"key"`
ETag string `json:"etag"`
LastModified time.Time `json:"last_modified"`
Size int64 `json:"size"`
ProviderData map[string]interface{} `json:"provider_data"`
}
CopyObjectResponse represents a copy object response
type CreateBucketRequest ¶
type CreateBucketRequest struct {
Bucket string `json:"bucket"`
Region string `json:"region,omitempty"`
ACL string `json:"acl,omitempty"`
Options map[string]interface{} `json:"options,omitempty"`
}
CreateBucketRequest represents a create bucket request
type DeleteBucketRequest ¶
type DeleteBucketRequest struct {
Bucket string `json:"bucket"`
}
DeleteBucketRequest represents a delete bucket request
type DeleteError ¶
type DeleteError struct {
Key string `json:"key"`
Code string `json:"code"`
Message string `json:"message"`
}
DeleteError represents a delete error
type DeleteObjectRequest ¶
type DeleteObjectRequest struct {
Bucket string `json:"bucket"`
Key string `json:"key"`
VersionID string `json:"version_id,omitempty"`
}
DeleteObjectRequest represents a delete object request
type DeleteObjectsRequest ¶
DeleteObjectsRequest represents a delete objects request
type DeleteObjectsResponse ¶
type DeleteObjectsResponse struct {
Deleted []DeletedObject `json:"deleted"`
Errors []DeleteError `json:"errors"`
}
DeleteObjectsResponse represents a delete objects response
type DeletedObject ¶
type DeletedObject struct {
Key string `json:"key"`
VersionID string `json:"version_id,omitempty"`
ETag string `json:"etag,omitempty"`
}
DeletedObject represents a deleted object
type EncryptionConfig ¶
type EncryptionConfig struct {
Algorithm string `json:"algorithm"`
KeyID string `json:"key_id,omitempty"`
Context map[string]string `json:"context,omitempty"`
}
EncryptionConfig represents encryption configuration
type GetObjectInfoRequest ¶
type GetObjectInfoRequest struct {
Bucket string `json:"bucket"`
Key string `json:"key"`
VersionID string `json:"version_id,omitempty"`
}
GetObjectInfoRequest represents a get object info request
type GetObjectRequest ¶
type GetObjectRequest struct {
Bucket string `json:"bucket"`
Key string `json:"key"`
VersionID string `json:"version_id,omitempty"`
Range *RangeSpec `json:"range,omitempty"`
Options map[string]interface{} `json:"options,omitempty"`
}
GetObjectRequest represents a get object request
type GetObjectResponse ¶
type GetObjectResponse struct {
Content io.ReadCloser `json:"-"`
Size int64 `json:"size"`
ContentType string `json:"content_type"`
ETag string `json:"etag"`
LastModified time.Time `json:"last_modified"`
Metadata map[string]string `json:"metadata"`
ProviderData map[string]interface{} `json:"provider_data"`
}
GetObjectResponse represents a get object response
type ListObjectsRequest ¶
type ListObjectsRequest struct {
Bucket string `json:"bucket"`
Prefix string `json:"prefix,omitempty"`
Delimiter string `json:"delimiter,omitempty"`
MaxKeys int `json:"max_keys,omitempty"`
ContinuationToken string `json:"continuation_token,omitempty"`
StartAfter string `json:"start_after,omitempty"`
}
ListObjectsRequest represents a list objects request
type ListObjectsResponse ¶
type ListObjectsResponse struct {
Objects []ObjectInfo `json:"objects"`
CommonPrefixes []string `json:"common_prefixes"`
IsTruncated bool `json:"is_truncated"`
NextContinuationToken string `json:"next_continuation_token,omitempty"`
ProviderData map[string]interface{} `json:"provider_data"`
}
ListObjectsResponse represents a list objects response
type ManagerConfig ¶
type ManagerConfig struct {
DefaultProvider string `json:"default_provider"`
RetryAttempts int `json:"retry_attempts"`
RetryDelay time.Duration `json:"retry_delay"`
Timeout time.Duration `json:"timeout"`
MaxFileSize int64 `json:"max_file_size"`
AllowedTypes []string `json:"allowed_types"`
Metadata map[string]string `json:"metadata"`
}
ManagerConfig holds storage manager configuration
func DefaultManagerConfig ¶
func DefaultManagerConfig() *ManagerConfig
DefaultManagerConfig returns default storage manager configuration
type MoveObjectRequest ¶
type MoveObjectRequest struct {
SourceBucket string `json:"source_bucket"`
SourceKey string `json:"source_key"`
DestBucket string `json:"dest_bucket"`
DestKey string `json:"dest_key"`
}
MoveObjectRequest represents a move object request
type MoveObjectResponse ¶
type MoveObjectResponse struct {
Key string `json:"key"`
ETag string `json:"etag"`
LastModified time.Time `json:"last_modified"`
Size int64 `json:"size"`
ProviderData map[string]interface{} `json:"provider_data"`
}
MoveObjectResponse represents a move object response
type ObjectExistsRequest ¶
type ObjectExistsRequest struct {
Bucket string `json:"bucket"`
Key string `json:"key"`
VersionID string `json:"version_id,omitempty"`
}
ObjectExistsRequest represents an object exists request
type ObjectInfo ¶
type ObjectInfo struct {
Key string `json:"key"`
Size int64 `json:"size"`
LastModified time.Time `json:"last_modified"`
ETag string `json:"etag"`
ContentType string `json:"content_type"`
Metadata map[string]string `json:"metadata"`
VersionID string `json:"version_id,omitempty"`
StorageClass string `json:"storage_class,omitempty"`
ProviderData map[string]interface{} `json:"provider_data"`
}
ObjectInfo represents object information
type PresignedURLRequest ¶
type PresignedURLRequest struct {
Bucket string `json:"bucket"`
Key string `json:"key"`
Method string `json:"method"` // GET, PUT, POST, DELETE
Expires time.Duration `json:"expires"`
Headers map[string]string `json:"headers,omitempty"`
Options map[string]interface{} `json:"options,omitempty"`
}
PresignedURLRequest represents a presigned URL request
type PublicURLRequest ¶
PublicURLRequest represents a public URL request
type PutObjectRequest ¶
type PutObjectRequest struct {
Bucket string `json:"bucket"`
Key string `json:"key"`
Content io.Reader `json:"-"`
Size int64 `json:"size"`
ContentType string `json:"content_type"`
Metadata map[string]string `json:"metadata"`
Tags map[string]string `json:"tags"`
ACL string `json:"acl,omitempty"`
Encryption *EncryptionConfig `json:"encryption,omitempty"`
Options map[string]interface{} `json:"options,omitempty"`
}
PutObjectRequest represents a put object request
type PutObjectResponse ¶
type PutObjectResponse struct {
Key string `json:"key"`
ETag string `json:"etag"`
VersionID string `json:"version_id,omitempty"`
Size int64 `json:"size"`
LastModified time.Time `json:"last_modified"`
Metadata map[string]string `json:"metadata"`
ProviderData map[string]interface{} `json:"provider_data"`
}
PutObjectResponse represents a put object response
type StorageFeature ¶
type StorageFeature string
StorageFeature represents a storage feature
const ( FeaturePresignedURLs StorageFeature = "presigned_urls" FeaturePublicURLs StorageFeature = "public_urls" FeatureMultipart StorageFeature = "multipart_upload" FeatureVersioning StorageFeature = "versioning" FeatureEncryption StorageFeature = "encryption" FeatureLifecycle StorageFeature = "lifecycle" FeatureCORS StorageFeature = "cors" FeatureCDN StorageFeature = "cdn" )
type StorageManager ¶
type StorageManager struct {
// contains filtered or unexported fields
}
StorageManager manages multiple storage providers
func NewStorageManager ¶
func NewStorageManager(config *ManagerConfig, logger *logrus.Logger) *StorageManager
NewStorageManager creates a new storage manager
func (*StorageManager) BucketExists ¶
func (sm *StorageManager) BucketExists(ctx context.Context, providerName string, request *BucketExistsRequest) (bool, error)
BucketExists checks if a bucket exists using the specified provider
func (*StorageManager) CopyObject ¶
func (sm *StorageManager) CopyObject(ctx context.Context, providerName string, request *CopyObjectRequest) (*CopyObjectResponse, error)
CopyObject copies an object using the specified provider
func (*StorageManager) CreateBucket ¶
func (sm *StorageManager) CreateBucket(ctx context.Context, providerName string, request *CreateBucketRequest) error
CreateBucket creates a bucket using the specified provider
func (*StorageManager) DeleteBucket ¶
func (sm *StorageManager) DeleteBucket(ctx context.Context, providerName string, request *DeleteBucketRequest) error
DeleteBucket deletes a bucket using the specified provider
func (*StorageManager) DeleteObject ¶
func (sm *StorageManager) DeleteObject(ctx context.Context, providerName string, request *DeleteObjectRequest) error
DeleteObject deletes an object using the specified provider
func (*StorageManager) DeleteObjects ¶
func (sm *StorageManager) DeleteObjects(ctx context.Context, providerName string, request *DeleteObjectsRequest) (*DeleteObjectsResponse, error)
DeleteObjects deletes multiple objects using the specified provider
func (*StorageManager) GeneratePresignedURL ¶
func (sm *StorageManager) GeneratePresignedURL(ctx context.Context, providerName string, request *PresignedURLRequest) (string, error)
GeneratePresignedURL generates a presigned URL using the specified provider
func (*StorageManager) GeneratePublicURL ¶
func (sm *StorageManager) GeneratePublicURL(ctx context.Context, providerName string, request *PublicURLRequest) (string, error)
GeneratePublicURL generates a public URL using the specified provider
func (*StorageManager) GetDefaultProvider ¶
func (sm *StorageManager) GetDefaultProvider() (StorageProvider, error)
GetDefaultProvider returns the default storage provider
func (*StorageManager) GetObject ¶
func (sm *StorageManager) GetObject(ctx context.Context, providerName string, request *GetObjectRequest) (*GetObjectResponse, error)
GetObject downloads an object using the specified provider
func (*StorageManager) GetObjectInfo ¶
func (sm *StorageManager) GetObjectInfo(ctx context.Context, providerName string, request *GetObjectInfoRequest) (*ObjectInfo, error)
GetObjectInfo gets object information using the specified provider
func (*StorageManager) GetProvider ¶
func (sm *StorageManager) GetProvider(name string) (StorageProvider, error)
GetProvider returns a storage provider by name
func (*StorageManager) GetProviderCapabilities ¶
func (sm *StorageManager) GetProviderCapabilities(providerName string) ([]StorageFeature, int64, []string, error)
GetProviderCapabilities returns capabilities of a provider
func (*StorageManager) GetSupportedProviders ¶
func (sm *StorageManager) GetSupportedProviders() []string
GetSupportedProviders returns a list of registered providers
func (*StorageManager) HealthCheck ¶
func (sm *StorageManager) HealthCheck(ctx context.Context) map[string]error
HealthCheck performs health check on all providers
func (*StorageManager) ListBuckets ¶
func (sm *StorageManager) ListBuckets(ctx context.Context, providerName string) ([]BucketInfo, error)
ListBuckets lists buckets using the specified provider
func (*StorageManager) ListObjects ¶
func (sm *StorageManager) ListObjects(ctx context.Context, providerName string, request *ListObjectsRequest) (*ListObjectsResponse, error)
ListObjects lists objects using the specified provider
func (*StorageManager) MoveObject ¶
func (sm *StorageManager) MoveObject(ctx context.Context, providerName string, request *MoveObjectRequest) (*MoveObjectResponse, error)
MoveObject moves an object using the specified provider
func (*StorageManager) ObjectExists ¶
func (sm *StorageManager) ObjectExists(ctx context.Context, providerName string, request *ObjectExistsRequest) (bool, error)
ObjectExists checks if an object exists using the specified provider
func (*StorageManager) PutObject ¶
func (sm *StorageManager) PutObject(ctx context.Context, providerName string, request *PutObjectRequest) (*PutObjectResponse, error)
PutObject uploads an object using the specified provider
func (*StorageManager) RegisterProvider ¶
func (sm *StorageManager) RegisterProvider(provider StorageProvider) error
RegisterProvider registers a storage provider
type StorageProvider ¶
type StorageProvider interface {
// Provider information
GetName() string
GetSupportedFeatures() []StorageFeature
GetMaxFileSize() int64
GetAllowedTypes() []string
// Basic operations
PutObject(ctx context.Context, request *PutObjectRequest) (*PutObjectResponse, error)
GetObject(ctx context.Context, request *GetObjectRequest) (*GetObjectResponse, error)
DeleteObject(ctx context.Context, request *DeleteObjectRequest) error
DeleteObjects(ctx context.Context, request *DeleteObjectsRequest) (*DeleteObjectsResponse, error)
ListObjects(ctx context.Context, request *ListObjectsRequest) (*ListObjectsResponse, error)
ObjectExists(ctx context.Context, request *ObjectExistsRequest) (bool, error)
// Advanced operations
CopyObject(ctx context.Context, request *CopyObjectRequest) (*CopyObjectResponse, error)
MoveObject(ctx context.Context, request *MoveObjectRequest) (*MoveObjectResponse, error)
GetObjectInfo(ctx context.Context, request *GetObjectInfoRequest) (*ObjectInfo, error)
// URL operations
GeneratePresignedURL(ctx context.Context, request *PresignedURLRequest) (string, error)
GeneratePublicURL(ctx context.Context, request *PublicURLRequest) (string, error)
// Bucket operations
CreateBucket(ctx context.Context, request *CreateBucketRequest) error
DeleteBucket(ctx context.Context, request *DeleteBucketRequest) error
BucketExists(ctx context.Context, request *BucketExistsRequest) (bool, error)
ListBuckets(ctx context.Context) ([]BucketInfo, error)
// Configuration
Configure(config map[string]interface{}) error
IsConfigured() bool
HealthCheck(ctx context.Context) error
Close() error
}
StorageProvider interface for storage backends