MCPcopy
hub / github.com/darjun/go-daily-lib / serveSayJSON

Method serveSayJSON

twirp/get-started/proto/echo.twirp.go:224–277  ·  view source on GitHub ↗
(ctx context.Context, resp http.ResponseWriter, req *http.Request)

Source from the content-addressed store, hash-verified

222}
223
224func (s *echoServer) serveSayJSON(ctx context.Context, resp http.ResponseWriter, req *http.Request) {
225 var err error
226 ctx = ctxsetters.WithMethodName(ctx, "Say")
227 ctx, err = callRequestRouted(ctx, s.hooks)
228 if err != nil {
229 s.writeError(ctx, resp, err)
230 return
231 }
232
233 reqContent := new(Request)
234 unmarshaler := jsonpb.Unmarshaler{AllowUnknownFields: true}
235 if err = unmarshaler.Unmarshal(req.Body, reqContent); err != nil {
236 s.writeError(ctx, resp, malformedRequestError("the json request could not be decoded"))
237 return
238 }
239
240 // Call service method
241 var respContent *Response
242 func() {
243 defer ensurePanicResponses(ctx, resp, s.hooks)
244 respContent, err = s.Echo.Say(ctx, reqContent)
245 }()
246
247 if err != nil {
248 s.writeError(ctx, resp, err)
249 return
250 }
251 if respContent == nil {
252 s.writeError(ctx, resp, twirp.InternalError("received a nil *Response and nil error while calling Say. nil responses are not supported"))
253 return
254 }
255
256 ctx = callResponsePrepared(ctx, s.hooks)
257
258 var buf bytes.Buffer
259 marshaler := &jsonpb.Marshaler{OrigName: true}
260 if err = marshaler.Marshal(&buf, respContent); err != nil {
261 s.writeError(ctx, resp, wrapInternal(err, "failed to marshal json response"))
262 return
263 }
264
265 ctx = ctxsetters.WithStatusCode(ctx, http.StatusOK)
266 respBytes := buf.Bytes()
267 resp.Header().Set("Content-Type", "application/json")
268 resp.Header().Set("Content-Length", strconv.Itoa(len(respBytes)))
269 resp.WriteHeader(http.StatusOK)
270
271 if n, err := resp.Write(respBytes); err != nil {
272 msg := fmt.Sprintf("failed to write response, %d of %d bytes written: %s", n, len(respBytes), err.Error())
273 twerr := twirp.NewError(twirp.Unknown, msg)
274 callError(ctx, s.hooks, twerr)
275 }
276 callResponseSent(ctx, s.hooks)
277}
278
279func (s *echoServer) serveSayProtobuf(ctx context.Context, resp http.ResponseWriter, req *http.Request) {
280 var err error

Callers 1

serveSayMethod · 0.95

Calls 11

writeErrorMethod · 0.95
callRequestRoutedFunction · 0.85
malformedRequestErrorFunction · 0.85
ensurePanicResponsesFunction · 0.85
callResponsePreparedFunction · 0.85
wrapInternalFunction · 0.85
callErrorFunction · 0.85
callResponseSentFunction · 0.85
SetMethod · 0.80
SayMethod · 0.65
ErrorMethod · 0.45

Tested by

no test coverage detected