package storage import ( "os" "path/filepath" "github.com/spf13/afero" ) type IStorageProvider interface { store(bucketName string, objectName string, data []byte) } type FileSystemStorageProvider struct { fileSystem afero.Fs basePath string } func (sp FileSystemStorageProvider) store(bucketName string, objectName string, data []byte) { directoryPath := filepath.Join(sp.basePath, bucketName) sp.fileSystem.MkdirAll(directoryPath, os.ModePerm) filePath := filepath.Join(directoryPath, objectName) afero.WriteFile(sp.fileSystem, filePath, data, os.ModePerm) }