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
}