image-storage/internal/utils/handler.go

51 lines
992 B
Go
Raw Normal View History

2025-10-25 17:39:17 +03:00
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()
}