in step0/src/client/main.go [49:79]
func (cs *clientService) handler(w http.ResponseWriter, r *http.Request) {
// NOTE: do not pass the raw query in produxtion systems.
rawQuery := r.URL.Query().Get("q")
query, err := url.QueryUnescape(rawQuery)
if err != nil {
writeError(w, fmt.Sprintf("can't unescape the query: %s", rawQuery))
return
}
ctx := r.Context()
ctx, cancel := context.WithCancel(ctx)
defer cancel()
cli := shakesapp.NewShakespeareServiceClient(cs.serverSvcConn)
resp, err := cli.GetMatchCount(ctx, &shakesapp.ShakespeareRequest{
Query: query,
})
if err != nil {
writeError(w, fmt.Sprintf("error calling GetMatchCount: %v", err))
return
}
ret, err := json.Marshal(resp)
if err != nil {
writeError(w, fmt.Sprintf("error marshalling data: %v", err))
return
}
log.Println(string(ret))
if _, err = w.Write(ret); err != nil {
writeError(w, fmt.Sprintf("error on writing response: %v", err))
return
}
}