func()

in lib/notifiers/jsonpath.go [58:88]


func (j *jpResolver) Resolve(ctx context.Context, sg SecretGetter, build *cbpb.Build) (map[string]string, error) {
	j.mtx.RLock()
	defer j.mtx.RUnlock()

	// Use a "JSON" payload here since a struct would have export-field issues
	// based on the lowercase names.
	pld := map[string]interface{}{
		"build": build,
	}

	ret := map[string]string{}
	for name, jp := range j.jps {
		fullResults, err := jp.j.FindResults(pld)
		if err != nil {
			return nil, fmt.Errorf("failed to parse %q with path %q from payload: %v", name, jp.p, err)
		}

		if len(fullResults) == 0 {
			return nil, fmt.Errorf("failed to get JSONPath query results for %q with path %q", name, jp.p)
		}

		buf := new(bytes.Buffer)
		for _, r := range fullResults {
			if err := printResults(buf, r); err != nil {
				return nil, err
			}
		}
		ret[name] = buf.String()
	}
	return ret, nil
}