diff options
Diffstat (limited to 'services/filesstore/filesstore.go')
-rw-r--r-- | services/filesstore/filesstore.go | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/services/filesstore/filesstore.go b/services/filesstore/filesstore.go new file mode 100644 index 000000000..59b3121ff --- /dev/null +++ b/services/filesstore/filesstore.go @@ -0,0 +1,48 @@ +// Copyright (c) 2017-present Mattermost, Inc. All Rights Reserved. +// See License.txt for license information. + +package filesstore + +import ( + "io" + "net/http" + + "github.com/mattermost/mattermost-server/model" +) + +type FileBackend interface { + TestConnection() *model.AppError + + Reader(path string) (io.ReadCloser, *model.AppError) + ReadFile(path string) ([]byte, *model.AppError) + FileExists(path string) (bool, *model.AppError) + CopyFile(oldPath, newPath string) *model.AppError + MoveFile(oldPath, newPath string) *model.AppError + WriteFile(fr io.Reader, path string) (int64, *model.AppError) + RemoveFile(path string) *model.AppError + + ListDirectory(path string) (*[]string, *model.AppError) + RemoveDirectory(path string) *model.AppError +} + +func NewFileBackend(settings *model.FileSettings, enableComplianceFeatures bool) (FileBackend, *model.AppError) { + switch *settings.DriverName { + case model.IMAGE_DRIVER_S3: + return &S3FileBackend{ + endpoint: settings.AmazonS3Endpoint, + accessKey: settings.AmazonS3AccessKeyId, + secretKey: settings.AmazonS3SecretAccessKey, + secure: settings.AmazonS3SSL == nil || *settings.AmazonS3SSL, + signV2: settings.AmazonS3SignV2 != nil && *settings.AmazonS3SignV2, + region: settings.AmazonS3Region, + bucket: settings.AmazonS3Bucket, + encrypt: settings.AmazonS3SSE != nil && *settings.AmazonS3SSE && enableComplianceFeatures, + trace: settings.AmazonS3Trace != nil && *settings.AmazonS3Trace, + }, nil + case model.IMAGE_DRIVER_LOCAL: + return &LocalFileBackend{ + directory: settings.Directory, + }, nil + } + return nil, model.NewAppError("NewFileBackend", "api.file.no_driver.app_error", nil, "", http.StatusInternalServerError) +} |