From d690b2c16276f4768531f5285cb21a06137c1a9e Mon Sep 17 00:00:00 2001 From: nquidox Date: Sat, 25 Oct 2025 17:39:17 +0300 Subject: [PATCH] utils created --- internal/interfaces/utils.go | 7 +++++ internal/utils/handler.go | 50 ++++++++++++++++++++++++++++++++++++ 2 files changed, 57 insertions(+) create mode 100644 internal/interfaces/utils.go create mode 100644 internal/utils/handler.go diff --git a/internal/interfaces/utils.go b/internal/interfaces/utils.go new file mode 100644 index 0000000..8c339d9 --- /dev/null +++ b/internal/interfaces/utils.go @@ -0,0 +1,7 @@ +package interfaces + +type Utils interface { + MerchImageVolumePath(u, m string) string + FilenameFromType(imgType string) string + MerchImageURL(u, m, t string) string +} diff --git a/internal/utils/handler.go b/internal/utils/handler.go new file mode 100644 index 0000000..22bd1e0 --- /dev/null +++ b/internal/utils/handler.go @@ -0,0 +1,50 @@ +package utils + +import ( + "fmt" + "net/url" +) + +type Handler struct { + domain string + volume string +} + +func NewHandler(domain, volume string) *Handler { + return &Handler{ + domain: domain, + volume: volume, + } +} + +// MerchImageVolumePath +// Returns a string like volume/merchImages/userUuid/merchUuid/filename.jpg +func (h *Handler) MerchImageVolumePath(u, m string) string { + return fmt.Sprintf("%s/merchImages/%s/%s", h.volume, u, m) +} + +func (h *Handler) FilenameFromType(imgType string) string { + switch imgType { + case "thumbnail": + return "thumbnail.jpg" + case "full": + return "full.jpg" + default: + return "unknown" + } +} + +func (h *Handler) MerchImageURL(u, m, t string) string { + base, err := url.Parse(h.domain) + if err != nil { + panic(fmt.Errorf("invalid domain in MerchImageURL: %w", err)) + } + + base.Path = fmt.Sprintf("/merchImages/%s/%s", url.PathEscape(u), url.PathEscape(m)) + + params := url.Values{} + params.Set("type", t) + base.RawQuery = params.Encode() + + return base.String() +}