// Package safe ...
//
// Description : 按需返回对外暴露的字段
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 2021-03-10 6:38 下午
package safe

import (
	"strings"

	"github.com/buger/jsonparser"
)

// Filter 按需输出数据
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 6:40 下午 2021/3/10
func Filter(source []byte, filter []string) ([]byte, error) {
	var (
		bt     []byte
		setErr error
	)
	for _, item := range filter {
		fieldList := strings.Split(item, ".")
		val, _, _, err := jsonparser.Get(source, fieldList...)
		if nil != err {
			return nil, err
		}
		if bt, setErr = jsonparser.Set(bt, val, fieldList...); nil != setErr {
			return nil, setErr
		}
	}
	return bt, nil
}