diff --git a/handlers/card.go b/handlers/card.go index 28e37c6..aecdf44 100644 --- a/handlers/card.go +++ b/handlers/card.go @@ -5,7 +5,6 @@ import ( "slices" "git.odit.services/lfk/document-server/models" - "git.odit.services/lfk/document-server/services" "github.com/gofiber/fiber/v2" ) @@ -32,7 +31,7 @@ func (h *DefaultHandler) GenerateCard(c *fiber.Ctx) error { }) } - templateString, err := services.GetTemplate(cardRequest.Locale, "card") + templateString, err := h.StaticService.GetTemplate(cardRequest.Locale, "card") if err != nil { log.Println(err) return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{ diff --git a/handlers/certificate.go b/handlers/certificate.go index 557eff5..8cd4995 100644 --- a/handlers/certificate.go +++ b/handlers/certificate.go @@ -5,7 +5,6 @@ import ( "slices" "git.odit.services/lfk/document-server/models" - "git.odit.services/lfk/document-server/services" "github.com/gofiber/fiber/v2" ) @@ -32,7 +31,7 @@ func (h *DefaultHandler) GenerateCertificate(c *fiber.Ctx) error { }) } - templateString, err := services.GetTemplate(certificateRequest.Locale, "certificate") + templateString, err := h.StaticService.GetTemplate(certificateRequest.Locale, "certificate") if err != nil { log.Println(err) return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{ diff --git a/handlers/contract.go b/handlers/contract.go index f697a62..bad0a9f 100644 --- a/handlers/contract.go +++ b/handlers/contract.go @@ -5,7 +5,6 @@ import ( "slices" "git.odit.services/lfk/document-server/models" - "git.odit.services/lfk/document-server/services" "github.com/gofiber/fiber/v2" ) @@ -34,7 +33,7 @@ func (h *DefaultHandler) GenerateContract(c *fiber.Ctx) error { contract.Runners = repeatRunnerArrayItems(contract.Runners, 2) - templateString, err := services.GetTemplate(contract.Locale, "contract") + templateString, err := h.StaticService.GetTemplate(contract.Locale, "contract") if err != nil { log.Println(err) return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{ diff --git a/handlers/handlers.go b/handlers/handlers.go index 00f1270..54ce596 100644 --- a/handlers/handlers.go +++ b/handlers/handlers.go @@ -18,4 +18,5 @@ type DefaultHandler struct { BarcodeService services.BarcodeService Templater services.Templater Converter services.Converter + StaticService services.StaticService } diff --git a/main.go b/main.go index f4fa441..fbbd306 100644 --- a/main.go +++ b/main.go @@ -74,11 +74,14 @@ func main() { } barcodeGenerator := &services.DefaultBarcodeService{} + staticService := &services.DefaultStaticService{} handler := handlers.DefaultHandler{ Config: config, BarcodeService: barcodeGenerator, + StaticService: staticService, Templater: &services.DefaultTemplater{ BarcodeService: barcodeGenerator, + StaticService: staticService, }, Converter: &services.GotenbergConverter{ BaseUrl: config.GotenbergBaseUrl, diff --git a/services/templater.go b/services/templater.go index 141b1ab..46cfa0d 100644 --- a/services/templater.go +++ b/services/templater.go @@ -16,6 +16,7 @@ type Templater interface { type DefaultTemplater struct { BarcodeService BarcodeService + StaticService StaticService } func idToEan13(id string, prefix string) (string, error) { @@ -47,15 +48,15 @@ func (t *DefaultTemplater) GenerateBarcode(code string, format string, prefix st } func (t *DefaultTemplater) SelectSponsorImage(id int) (string, error) { - sponsors, err := ListFilesInStaticSubFolder("images/sponsors") + sponsors, err := t.StaticService.ListFilesInStaticSubFolder("images/sponsors") if err != nil { return "", err } - return GetImage("sponsors/" + strings.TrimSuffix(sponsors[id%len(sponsors)], ".base64")), nil + return t.StaticService.GetImage("sponsors/" + strings.TrimSuffix(sponsors[id%len(sponsors)], ".base64")), nil } func (t *DefaultTemplater) LoadImage(name string) (string, error) { - return GetImage(name), nil + return t.StaticService.GetImage(name), nil } func (t *DefaultTemplater) FormatUnit(unit string, locale string, amount int) (string, error) { diff --git a/services/templates.go b/services/templates.go index d318371..92230b6 100644 --- a/services/templates.go +++ b/services/templates.go @@ -7,7 +7,16 @@ import ( "os" ) -func GetTemplate(locale, templateName string) (string, error) { +type StaticService interface { + GetTemplate(locale, templateName string) (string, error) + ListFilesInStaticSubFolder(folderName string) ([]string, error) + GetImage(imageName string) string +} + +type DefaultStaticService struct { +} + +func (s *DefaultStaticService) GetTemplate(locale, templateName string) (string, error) { content, err := os.ReadFile(fmt.Sprintf("static/templates/%s/%s.html", templateName, locale)) if content == nil || err != nil { log.Printf("error reading template %s with locale %s: %v", templateName, locale, err) @@ -16,7 +25,7 @@ func GetTemplate(locale, templateName string) (string, error) { return string(content), nil } -func ListFilesInStaticSubFolder(folderName string) ([]string, error) { +func (s *DefaultStaticService) ListFilesInStaticSubFolder(folderName string) ([]string, error) { files, err := os.ReadDir(fmt.Sprintf("static/%s", folderName)) if err != nil { log.Printf("error reading files from folder %s: %v", folderName, err) @@ -32,7 +41,7 @@ func ListFilesInStaticSubFolder(folderName string) ([]string, error) { return images, nil } -func GetImage(imageName string) string { +func (s *DefaultStaticService) GetImage(imageName string) string { content, err := os.ReadFile("static/images/" + imageName + ".base64") if content == nil || err != nil { log.Printf("error reading image %s: %v", imageName, err)