1
0
mirror of https://github.com/imgproxy/imgproxy.git synced 2025-12-23 22:11:10 +02:00
Files
imgproxy/monitoring/meta.go

43 lines
1010 B
Go

package monitoring
import (
"net/url"
"strings"
)
// Metadata key names
const (
MetaPrefix = "imgproxy."
MetaSourceImageURL = MetaPrefix + "source_image_url"
MetaSourceImageOrigin = MetaPrefix + "source_image_origin"
MetaOptions = MetaPrefix + "options"
)
// Meta represents a set of metadata key-value pairs.
type Meta map[string]any
// Filter creates a copy of Meta with only the specified keys.
func (m Meta) Filter(only ...string) Meta {
filtered := make(Meta)
for _, key := range only {
if value, ok := m[key]; ok {
filtered[key] = value
}
}
return filtered
}
// MetaKey formats a metadata key with the standard prefix.
func MetaKey(key string) string {
return MetaPrefix + strings.ToLower(strings.ReplaceAll(key, " ", "_"))
}
// MetaURLOrigin extracts the origin (scheme + host) from a URL for metadata purposes.
func MetaURLOrigin(fullURL string) string {
if u, err := url.Parse(fullURL); err == nil {
return u.Scheme + "://" + u.Host
}
return ""
}