From 8e821b5039bd6983814a6b1d11894a649c44f74a Mon Sep 17 00:00:00 2001 From: Matthew Holt Date: Mon, 2 Sep 2019 12:21:41 -0600 Subject: caddyconfig: Add JSON5 and JSON-C adapters (closes #2735) --- caddyconfig/json5/json5.go | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 caddyconfig/json5/json5.go (limited to 'caddyconfig/json5') diff --git a/caddyconfig/json5/json5.go b/caddyconfig/json5/json5.go new file mode 100644 index 0000000..2c86301 --- /dev/null +++ b/caddyconfig/json5/json5.go @@ -0,0 +1,43 @@ +// Copyright 2015 Matthew Holt and The Caddy Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package json5adapter + +import ( + "encoding/json" + + "github.com/caddyserver/caddy/v2/caddyconfig" + "github.com/ilibs/json5" +) + +func init() { + caddyconfig.RegisterAdapter("json5", Adapter{}) +} + +// Adapter adapts JSON5 to Caddy JSON. +type Adapter struct{} + +// Adapt converts the JSON5 config in body to Caddy JSON. +func (a Adapter) Adapt(body []byte, options map[string]interface{}) (result []byte, warnings []caddyconfig.Warning, err error) { + var decoded interface{} + err = json5.Unmarshal(body, &decoded) + if err != nil { + return + } + result, err = json.Marshal(decoded) + return +} + +// Interface guard +var _ caddyconfig.Adapter = (*Adapter)(nil) -- cgit v1.2.3