From f935458e3e30a8d9f47f37ad35fe9c546b841fa3 Mon Sep 17 00:00:00 2001 From: Matthew Holt Date: Thu, 12 Dec 2019 14:30:22 -0700 Subject: cmd: Fix validate command when JSON contains "@id" fields Also, don't run admin server when validating... --- admin.go | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'admin.go') diff --git a/admin.go b/admin.go index fcbb62e..570d94c 100644 --- a/admin.go +++ b/admin.go @@ -734,6 +734,20 @@ traverseLoop: return nil } +// RemoveMetaFields removes meta fields like "@id" from a JSON message. +func RemoveMetaFields(rawJSON []byte) []byte { + return idRegexp.ReplaceAllFunc(rawJSON, func(in []byte) []byte { + // matches with a comma on both sides (when "@id" property is + // not the first or last in the object) need to keep exactly + // one comma for correct JSON syntax + comma := []byte{','} + if bytes.HasPrefix(in, comma) && bytes.HasSuffix(in, comma) { + return comma + } + return []byte{} + }) +} + // AdminHandler is like http.Handler except ServeHTTP may return an error. // // If any handler encounters an error, it should be returned for proper -- cgit v1.2.3