51 lines
992 B
Go
51 lines
992 B
Go
|
|
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()
|
||
|
|
}
|