Ejemplo n.º 1
0
func (r rawUnaryHandler) Handle(ctx context.Context, treq *transport.Request, rw transport.ResponseWriter) error {
	if err := encoding.Expect(treq, Encoding); err != nil {
		return err
	}

	reqBody, err := ioutil.ReadAll(treq.Body)
	if err != nil {
		return err
	}

	reqMeta := meta.FromTransportRequest(treq)
	resBody, resMeta, err := r.UnaryHandler(ctx, reqMeta, reqBody)
	if err != nil {
		return err
	}

	if resMeta != nil {
		meta.ToTransportResponseWriter(resMeta, rw)
	}

	if _, err := rw.Write(resBody); err != nil {
		return err
	}

	return nil
}