From eb1a00ef5f93b19c2d49b26de057ee2c51c09e45 Mon Sep 17 00:00:00 2001 From: Chris Date: Thu, 16 Nov 2017 15:04:27 -0600 Subject: Reorganize file util functionality (#7848) * reorganize file util functionality * fix api test compilation * fix rebase issue --- utils/file_backend.go | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 utils/file_backend.go (limited to 'utils/file_backend.go') diff --git a/utils/file_backend.go b/utils/file_backend.go new file mode 100644 index 000000000..3469a63fb --- /dev/null +++ b/utils/file_backend.go @@ -0,0 +1,44 @@ +// Copyright (c) 2017-present Mattermost, Inc. All Rights Reserved. +// See License.txt for license information. + +package utils + +import ( + "net/http" + + "github.com/mattermost/mattermost-server/model" +) + +type FileBackend interface { + TestConnection() *model.AppError + + ReadFile(path string) ([]byte, *model.AppError) + MoveFile(oldPath, newPath string) *model.AppError + WriteFile(f []byte, path string) *model.AppError + RemoveFile(path string) *model.AppError + + ListDirectory(path string) (*[]string, *model.AppError) + RemoveDirectory(path string) *model.AppError +} + +func NewFileBackend(settings *model.FileSettings) (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 && IsLicensed() && *License().Features.Compliance, + trace: settings.AmazonS3Trace != nil && *settings.AmazonS3Trace, + }, nil + case model.IMAGE_DRIVER_LOCAL: + return &LocalFileBackend{ + directory: settings.Directory, + }, nil + } + return nil, model.NewAppError("NewFileBackend", "No file driver selected.", nil, "", http.StatusInternalServerError) +} -- cgit v1.2.3-1-g7c22