// Package resourceview contains the stable client-facing projection rules for wallet resources.
package resourceview

import (
	"encoding/json"
	"strings"
)

// FormatFromMetadata returns only an explicitly configured renderer identifier. format is the
// current contract and animation_format remains a legacy fallback; URL suffixes are intentionally
// never inspected because signed/CDN URLs are not a trustworthy media-format fact.
func FormatFromMetadata(raw string) string {
	var metadata struct {
		Format          string `json:"format"`
		AnimationFormat string `json:"animation_format"`
	}
	if json.Unmarshal([]byte(strings.TrimSpace(raw)), &metadata) != nil {
		return ""
	}
	if format := strings.ToLower(strings.TrimSpace(metadata.Format)); format != "" {
		return format
	}
	return strings.ToLower(strings.TrimSpace(metadata.AnimationFormat))
}
