Files
ai-agent/internal/services/storage/provider.go
T
mlogclub 0b4a1b4594 Refactor error handling in services to use internationalized error messages
- Updated OSSStorage validation errors to use internationalized messages.
- Changed error messages in provider.go for unsupported file storage types.
- Refactored tag_service.go to replace hardcoded error messages with internationalized versions.
- Updated ticket_service.go to use internationalized error messages for various validation checks.
- Refactored ticket_tag_service.go to use internationalized error messages for tag validation.
- Changed ticket_view_service.go to use internationalized error messages for view validation.
- Updated tool_catalog_service.go to use internationalized error messages for tool code validation.
- Refactored user_service.go to replace error messages with internationalized versions.
- Updated ws_service.go to use internationalized error messages for WebSocket handling.
- Refactored wxwork_kf_inbound_service.go to use internationalized error messages for message handling.
- Updated wxwork_kf_outbound_service.go to use internationalized error messages for outbound message handling.
- Refactored wxwork_login_service.go to use internationalized error messages for login handling.
- Updated login.go in wxwork package to use internationalized error messages for login state and ticket validation.
2026-06-02 20:51:13 +08:00

51 lines
1.2 KiB
Go

package storage
import (
"agent-desk/internal/pkg/config"
"agent-desk/internal/pkg/enums"
"agent-desk/internal/pkg/errorsx"
"io"
)
var providers = make(map[enums.AssetProvider]FileStorageProvider)
type FileStorageProvider interface {
ProviderType() enums.AssetProvider
Upload(reader io.Reader, key string, info UploadInfo) (*StoredFile, error)
GetURL(key string) string
GetSignedURL(key string) string
Delete(key string) error
Read(key string) (io.ReadCloser, error)
}
func GetDefault() (FileStorageProvider, error) {
return NewProvider(config.Current().Storage.Default)
}
func GetProvider(providerType enums.AssetProvider) (FileStorageProvider, error) {
if provider, exists := providers[providerType]; exists {
return provider, nil
}
provider, err := NewProvider(providerType)
if err != nil {
return nil, err
}
providers[providerType] = provider
return provider, nil
}
func NewProvider(provider enums.AssetProvider) (FileStorageProvider, error) {
cfg := config.Current().Storage
switch provider {
case "", enums.AssetProviderLocal:
return NewLocalStorage(cfg.Local), nil
case enums.AssetProviderOSS:
return NewOSSStorage(cfg.OSS), nil
default:
return nil, errorsx.InvalidParamI18n("error.e0082")
}
}