// PushPrivate handle for push private message. func PushPrivate(w http.ResponseWriter, r *http.Request) { if r.Method != "POST" { http.Error(w, "Method Not Allowed", 405) return } body := "" res := map[string]interface{}{"ret": app.OK} defer app.RetPWrite(w, r, res, &body, time.Now()) // param bodyBytes, err := ioutil.ReadAll(r.Body) if err != nil { res["ret"] = app.ParamErr logger.Errorf("ioutil.ReadAll() failed (%s)", err.Error()) return } body = string(bodyBytes) params := r.URL.Query() key := params.Get("key") expireStr := params.Get("expire") if key == "" { res["ret"] = app.ParamErr return } expire, err := strconv.ParseUint(expireStr, 10, 32) if err != nil { res["ret"] = app.ParamErr logger.Errorf("strconv.ParseUint(\"%s\", 10, 32) error(%v)", expireStr, err) return } node := myrpc.GetComet(key) if node == nil || node.CometRPC == nil { res["ret"] = app.NotFoundServer return } client := node.CometRPC.Get() if client == nil { res["ret"] = app.NotFoundServer return } rm := json.RawMessage(bodyBytes) msg, err := rm.MarshalJSON() if err != nil { res["ret"] = app.ParamErr logger.Errorf("json.RawMessage(\"%s\").MarshalJSON() error(%v)", body, err) return } args := &myrpc.CometPushPrivateArgs{Msg: json.RawMessage(msg), Expire: uint(expire), Key: key} ret := 0 if err := client.Call(myrpc.CometServicePushPrivate, args, &ret); err != nil { logger.Errorf("client.Call(\"%s\", \"%v\", &ret) error(%v)", myrpc.CometServicePushPrivate, args, err) res["ret"] = app.InternalErr return } return }
// DelPrivate handle for push private message. func DelPrivate(w http.ResponseWriter, r *http.Request) { if r.Method != "POST" { http.Error(w, "Method Not Allowed", 405) return } body := "" res := map[string]interface{}{"ret": app.OK} defer app.RetPWrite(w, r, res, &body, time.Now()) // param bodyBytes, err := ioutil.ReadAll(r.Body) if err != nil { res["ret"] = app.ParamErr logger.Errorf("ioutil.ReadAll() failed (%s)", err.Error()) return } body = string(bodyBytes) params, err := url.ParseQuery(body) if err != nil { logger.Errorf("url.ParseQuery(\"%s\") error(%v)", body, err) res["ret"] = app.ParamErr return } key := params.Get("key") if key == "" { res["ret"] = app.ParamErr return } client := myrpc.MessageRPC.Get() if client == nil { logger.Warnf("user_key: \"%s\" can't not find message rpc node", key) res["ret"] = app.InternalErr return } ret := 0 if err := client.Call(myrpc.MessageServiceDelPrivate, key, &ret); err != nil { logger.Errorf("client.Call(\"%s\", \"%s\", &ret) error(%v)", myrpc.MessageServiceDelPrivate, key, err) res["ret"] = app.InternalErr return } return }