Files
terminal/server/api/logo.go
T

59 lines
1.2 KiB
Go

package api
import (
"context"
"encoding/base64"
"strings"
"github.com/google/uuid"
"github.com/labstack/echo/v4"
"next-terminal/server/model"
"next-terminal/server/repository"
)
type LogoApi struct{}
func (api LogoApi) LogosEndpoint(c echo.Context) error {
logos := repository.LogoRepository.FindAll(context.TODO())
return Success(c, logos)
}
func (api LogoApi) UploadEndpoint(c echo.Context) error {
file, err := c.FormFile("file")
if err != nil {
return err
}
src, err := file.Open()
if err != nil {
return err
}
defer src.Close()
buf := make([]byte, file.Size)
n, _ := src.Read(buf)
data := base64.StdEncoding.EncodeToString(buf[:n])
ext := strings.ToLower(file.Filename[strings.LastIndex(file.Filename, "."):])
name := uuid.New().String() + ext
logo := model.Logo{
ID: uuid.New().String(),
Name: name,
Data: "data:image/" + ext + ";base64," + data,
Deletable: true,
}
if err := repository.LogoRepository.Create(context.TODO(), &logo); err != nil {
return err
}
return Success(c, logo)
}
func (api LogoApi) DeleteEndpoint(c echo.Context) error {
name := c.Param("name")
if err := repository.LogoRepository.DeleteByName(context.TODO(), name); err != nil {
return err
}
return Success(c, nil)
}