func()

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
	}
}