MCPcopy
hub / github.com/silenceper/wechat / buildResponse

Method buildResponse

officialaccount/server/server.go:226–274  ·  view source on GitHub ↗
(reply *message.Reply)

Source from the content-addressed store, hash-verified

224}
225
226func (srv *Server) buildResponse(reply *message.Reply) (err error) {
227 defer func() {
228 if e := recover(); e != nil {
229 err = fmt.Errorf("panic error: %v\n%s", e, debug.Stack())
230 }
231 }()
232 if reply == nil {
233 // do nothing
234 return nil
235 }
236 msgType := reply.MsgType
237 switch msgType {
238 case message.MsgTypeText:
239 case message.MsgTypeImage:
240 case message.MsgTypeVoice:
241 case message.MsgTypeVideo:
242 case message.MsgTypeMusic:
243 case message.MsgTypeNews:
244 case message.MsgTypeTransfer:
245 default:
246 err = message.ErrUnsupportReply
247 return
248 }
249
250 msgData := reply.MsgData
251 value := reflect.ValueOf(msgData)
252 // msgData must be a ptr
253 kind := value.Kind().String()
254 if kind != "ptr" {
255 return message.ErrUnsupportReply
256 }
257
258 params := make([]reflect.Value, 1)
259 params[0] = reflect.ValueOf(srv.RequestMsg.FromUserName)
260 value.MethodByName("SetToUserName").Call(params)
261
262 params[0] = reflect.ValueOf(srv.RequestMsg.ToUserName)
263 value.MethodByName("SetFromUserName").Call(params)
264
265 params[0] = reflect.ValueOf(msgType)
266 value.MethodByName("SetMsgType").Call(params)
267
268 params[0] = reflect.ValueOf(util.GetCurrTS())
269 value.MethodByName("SetCreateTime").Call(params)
270
271 srv.ResponseMsg = msgData
272 srv.ResponseRawXMLMsg, err = xml.Marshal(msgData)
273 return
274}
275
276// Send 将自定义的消息发送
277func (srv *Server) Send() (err error) {

Callers 1

ServeMethod · 0.95

Calls 2

GetCurrTSFunction · 0.92
StringMethod · 0.45

Tested by

no test coverage detected