diff --git a/pkg/svg/storage.go b/pkg/svg/storage.go index 0531469..b3349f7 100644 --- a/pkg/svg/storage.go +++ b/pkg/svg/storage.go @@ -10,12 +10,46 @@ import ( type SvgStorage interface { Create(id string, svg io.Reader) (string, error) Get(id string) (io.Reader, error) + CreateTemp(data io.Reader, filetype string) (string, error) + CreatePublic(data io.Reader, filetype string) (string, error) } +var _ SvgStorage = FileSvgStorage{} + type FileSvgStorage struct { basepath string } +func (f FileSvgStorage) CreatePublic(data io.Reader, filetype string) (string, error) { + path := filepath.Join(f.basepath, "public") + if err := os.Mkdir(path, 0755); err != nil { + return "", err + } + + file, err := os.CreateTemp(path, "*."+filetype) + if err != nil { + return "", err + } + defer file.Close() + + return file.Name(), nil +} + +func (f FileSvgStorage) CreateTemp(data io.Reader, filetype string) (string, error) { + path := filepath.Join(f.basepath, "temp") + if err := os.Mkdir(path, 0755); err != nil { + return "", err + } + + file, err := os.CreateTemp(path, "*."+filetype) + if err != nil { + return "", err + } + defer file.Close() + + return file.Name(), nil +} + func NewFileStorage(path string) *FileSvgStorage { err := os.MkdirAll(path, 0755) if err != nil {