本文整理匯總了Golang中github.com/google/cayley/query.HTTP類的典型用法代碼示例。如果您正苦於以下問題:Golang HTTP類的具體用法?Golang HTTP怎麽用?Golang HTTP使用的例子?那麽, 這裏精選的類代碼示例或許可以為您提供幫助。
在下文中一共展示了HTTP類的8個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。
示例1: runQuery
func runQuery(queryLang, code string) (interface{}, error) {
qs := &QuadStore{}
var ses query.HTTP
switch queryLang {
case "gremlin":
ses = gremlin.NewSession(qs, 100*time.Second, false)
case "mql":
ses = mql.NewSession(qs)
default:
}
result, err := ses.Parse(code)
switch result {
case query.Parsed:
output, err := Run(code, ses)
if err != nil {
return nil, err
}
return output, nil
case query.ParseFail:
ses = nil
return nil, err
default:
ses = nil
return nil, fmt.Errorf("Incomplete data?")
}
}
示例2: ServeV1Shape
func (api *API) ServeV1Shape(w http.ResponseWriter, r *http.Request, params httprouter.Params) int {
var ses query.HTTP
switch params.ByName("query_lang") {
case "gremlin":
ses = gremlin.NewSession(api.handle.QuadStore, api.config.Timeout, false)
case "mql":
ses = mql.NewSession(api.handle.QuadStore)
default:
return jsonResponse(w, 400, "Need a query language.")
}
bodyBytes, err := ioutil.ReadAll(r.Body)
if err != nil {
return jsonResponse(w, 400, err)
}
code := string(bodyBytes)
result, err := ses.InputParses(code)
switch result {
case query.Parsed:
var output []byte
var err error
output, err = GetQueryShape(code, ses)
if err != nil {
return jsonResponse(w, 400, err)
}
fmt.Fprint(w, string(output))
return 200
case query.ParseFail:
return jsonResponse(w, 400, err)
default:
return jsonResponse(w, 500, "Incomplete data?")
}
}
示例3: GetQueryShape
func GetQueryShape(q string, ses query.HTTP) ([]byte, error) {
s, err := ses.ShapeOf(q)
if err != nil {
return nil, err
}
return json.Marshal(s)
}
示例4: GetQueryShape
func GetQueryShape(q string, ses query.HTTP) ([]byte, error) {
c := make(chan map[string]interface{}, 5)
go ses.GetQuery(q, c)
var data map[string]interface{}
for res := range c {
data = res
}
return json.Marshal(data)
}
示例5: ServeV1Query
// TODO(barakmich): Turn this into proper middleware.
func (api *API) ServeV1Query(w http.ResponseWriter, r *http.Request, params httprouter.Params) int {
h, err := api.GetHandleForRequest(r)
var ses query.HTTP
switch params.ByName("query_lang") {
case "gremlin":
ses = gremlin.NewSession(h.QuadStore, api.config.Timeout, false)
case "mql":
ses = mql.NewSession(h.QuadStore)
default:
return jsonResponse(w, 400, "Need a query language.")
}
bodyBytes, err := ioutil.ReadAll(r.Body)
if err != nil {
return jsonResponse(w, 400, err)
}
code := string(bodyBytes)
result, err := ses.Parse(code)
switch result {
case query.Parsed:
var output interface{}
var bytes []byte
var err error
output, err = Run(code, ses)
if err != nil {
bytes, err = WrapErrResult(err)
http.Error(w, string(bytes), 400)
ses = nil
return 400
}
bytes, err = WrapResult(output)
if err != nil {
ses = nil
return jsonResponse(w, 400, err)
}
fmt.Fprint(w, string(bytes))
ses = nil
return 200
case query.ParseFail:
ses = nil
return jsonResponse(w, 400, err)
default:
ses = nil
return jsonResponse(w, 500, "Incomplete data?")
}
}
示例6: Run
func Run(q string, ses query.HTTP) (interface{}, error) {
c := make(chan interface{}, 5)
go ses.ExecInput(q, c, 100)
for res := range c {
ses.BuildJSON(res)
}
return ses.GetJSON()
}
示例7: Run
func Run(q string, ses query.HTTP) (interface{}, error) {
c := make(chan interface{}, 5)
go ses.Execute(q, c, 100)
for res := range c {
ses.Collate(res)
}
return ses.Results()
}
示例8: runGremlinQuery
func runGremlinQuery(q string, session cayleyQuery.HTTP) (interface{}, error) {
c := make(chan interface{}, 5)
go session.Execute(q, c, 100)
for result := range c {
session.Collate(result)
}
return session.Results()
}