feat(formatconverter): add formatconverter method using inkscape
This commit is contained in:
@@ -9,47 +9,18 @@ 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)
|
||||
Get(id string) (io.ReadCloser, error)
|
||||
CreatePublic(data io.Reader, filetype string) (string, error)
|
||||
GetPublic(path string) (io.ReadCloser, error)
|
||||
}
|
||||
|
||||
var _ SvgStorage = FileSvgStorage{}
|
||||
var TempDir string = ""
|
||||
|
||||
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 {
|
||||
@@ -76,10 +47,47 @@ func (f FileSvgStorage) Create(id string, svg io.Reader) (string, error) {
|
||||
return file.Name(), nil
|
||||
}
|
||||
|
||||
func (f FileSvgStorage) Get(id string) (io.Reader, error) {
|
||||
file, err := os.Open(filepath.Join(f.basepath, "svg", id+".svg"))
|
||||
func (f FileSvgStorage) Get(id string) (io.ReadCloser, error) {
|
||||
file, err := os.Open(filepath.Join(f.basepath, id+".svg"))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return file, nil
|
||||
}
|
||||
|
||||
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) GetPublic(path string) (io.ReadCloser, error) {
|
||||
file, err := os.Open(filepath.Join(f.basepath, "public", path))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return file, nil
|
||||
}
|
||||
|
||||
func CreateTemp(data io.Reader, filetype string) (string, error) {
|
||||
file, err := os.CreateTemp(TempDir, "*."+filetype)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
defer file.Close()
|
||||
_, err = io.Copy(file, data)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
return file.Name(), nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user