package gatcaddyfile import ( "encoding/json" "fmt" "strings" "github.com/caddyserver/caddy/v2" "github.com/caddyserver/caddy/v2/caddyconfig" "github.com/caddyserver/caddy/v2/caddyconfig/caddyfile" ) type Unmarshaller func(*caddyfile.Dispenser, *[]caddyconfig.Warning) (caddy.Module, error) func (T Unmarshaller) JSONModuleObject( d *caddyfile.Dispenser, namespace string, inlineKey string, warnings *[]caddyconfig.Warning, ) (json.RawMessage, error) { module, err := T(d, warnings) if err != nil { return nil, err } return JSONModuleObject( module, namespace, inlineKey, warnings, ), nil } func JSONModuleObject( module caddy.Module, namespace string, inlineKey string, warnings *[]caddyconfig.Warning, ) json.RawMessage { rawModuleID := string(module.CaddyModule().ID) dotModuleID := strings.TrimPrefix(rawModuleID, namespace) moduleID := strings.TrimPrefix(dotModuleID, ".") if rawModuleID == dotModuleID || dotModuleID == moduleID { if warnings != nil { *warnings = append(*warnings, caddyconfig.Warning{ Message: fmt.Sprintf(`expected item in namespace "%s" but got "%s"`, namespace, rawModuleID), }) } return nil } return caddyconfig.JSONModuleObject( module, inlineKey, moduleID, warnings, ) }