func (h *HttpRpcHandler) ServeHTTP(out http.ResponseWriter, req *http.Request) { if req.Method == "POST" { var in *thrift.TMemoryBuffer size := int(req.ContentLength) if size > 0 { in = thrift.NewTMemoryBufferLen(size) } else { in = thrift.NewTMemoryBuffer() } in.ReadFrom(req.Body) defer req.Body.Close() iprot := thrift.NewTBinaryProtocol(in, true, true) outbuf := thrift.NewTMemoryBuffer() oprot := thrift.NewTBinaryProtocol(outbuf, true, true) ok, err := h.Process(iprot, oprot) if ok { outbuf.WriteTo(out) } else { http.Error(out, err.Error(), 500) } } else { http.Error(out, "Must POST TBinary encoded thrift RPC", 401) } }
func (h ThriftOverHTTPHandler) ServeHTTP(out http.ResponseWriter, req *http.Request) { if req.Method == "POST" { var in *thrift.TMemoryBuffer size := int(req.ContentLength) if size > 0 { in = thrift.NewTMemoryBufferLen(size) } else { in = thrift.NewTMemoryBuffer() } in.ReadFrom(req.Body) defer req.Body.Close() compact := false if in.Len() > 0 && in.Bytes()[0] == thrift.COMPACT_PROTOCOL_ID { compact = true } outbuf := thrift.NewTMemoryBuffer() var iprot thrift.TProtocol var oprot thrift.TProtocol if compact { iprot = thrift.NewTCompactProtocol(in) oprot = thrift.NewTCompactProtocol(outbuf) } else { iprot = thrift.NewTBinaryProtocol(in, true, true) oprot = thrift.NewTBinaryProtocol(outbuf, true, true) } ok, err := h.handle(iprot, oprot) if ok { outbuf.WriteTo(out) } else { http.Error(out, err.Error(), 500) } } else { http.Error(out, "Must POST TBinary encoded thrift RPC", 401) } }