2019-12-11 09:45:22 -08:00
|
|
|
package context
|
|
|
|
|
|
|
|
import (
|
|
|
|
"github.com/golang/glog"
|
2019-12-12 18:25:54 -08:00
|
|
|
"github.com/jmespath/go-jmespath"
|
2019-12-11 09:45:22 -08:00
|
|
|
)
|
|
|
|
|
|
|
|
//Query searches for query in the context
|
|
|
|
func (ctx *Context) Query(query string) (interface{}, error) {
|
|
|
|
var emptyResult interface{}
|
|
|
|
// compile the query
|
|
|
|
queryPath, err := jmespath.Compile(query)
|
|
|
|
if err != nil {
|
|
|
|
glog.V(4).Infof("incorrect query %s: %v", query, err)
|
|
|
|
return emptyResult, err
|
|
|
|
}
|
|
|
|
|
|
|
|
// search
|
|
|
|
result, err := queryPath.Search(ctx.getData())
|
|
|
|
if err != nil {
|
|
|
|
glog.V(4).Infof("failed to search query %s: %v", query, err)
|
|
|
|
return emptyResult, err
|
|
|
|
}
|
|
|
|
return result, nil
|
|
|
|
}
|