diff --git a/internal/config/config.go b/internal/config/config.go index 0df5ded..7ca9858 100644 --- a/internal/config/config.go +++ b/internal/config/config.go @@ -14,6 +14,7 @@ var global *Config // Config is configuration type Config struct { Space struct { + Enabled bool `json:"enabled"` Host string `json:"host"` AccessKey string `json:"accessKey"` SecretKey string `json:"secretKey"` diff --git a/internal/store/init.go b/internal/store/init.go index a76c7ad..976d5cc 100644 --- a/internal/store/init.go +++ b/internal/store/init.go @@ -26,9 +26,11 @@ func Init() error { } sconf := conf.Space - err = ConnectSpace(sconf.Host, sconf.AccessKey, sconf.SecretKey, sconf.Bucket, sconf.MaxSize, sconf.Root) - if err != nil { - return err + if sconf.Enabled { + err = ConnectSpace(sconf.Host, sconf.AccessKey, sconf.SecretKey, sconf.Bucket, sconf.MaxSize, sconf.Root) + if err != nil { + return err + } } hasInitialized = true diff --git a/internal/store/space.go b/internal/store/space.go index d057bb4..af8dd57 100644 --- a/internal/store/space.go +++ b/internal/store/space.go @@ -43,6 +43,10 @@ func ConnectSpace(host, accessKey, secretKey, bucket string, maxSize int64, root // UploadFile uploads the file to the space. This does not do any checks on it, so the endpoints should // ensure that's all okay. func UploadFile(ctx context.Context, folder string, name string, mimeType string, reader io.Reader, size int64) (string, error) { + if spaceClient == nil { + return "", errors.New("This functionality is not enabled") + } + path := folder + "/" + name if size > spaceMaxSize { @@ -69,6 +73,10 @@ func UploadFile(ctx context.Context, folder string, name string, mimeType string // RemoveFile removes a file from the space func RemoveFile(folder string, name string) error { + if spaceClient == nil { + return errors.New("This functionality is not enabled") + } + path := folder + "/" + name return spaceClient.RemoveObject(spaceBucket, spaceRoot+"/"+path) @@ -76,6 +84,10 @@ func RemoveFile(folder string, name string) error { // DownloadFile opens a file for download, using the same path format as the UploadFile function. Remember to Close it! func DownloadFile(ctx context.Context, path string) (io.ReadCloser, error) { + if spaceClient == nil { + return nil, errors.New("This functionality is not enabled") + } + return spaceClient.GetObjectWithContext(ctx, spaceBucket, spaceRoot+"/"+path, minio.GetObjectOptions{}) }