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