func DPPutByKey(w http.ResponseWriter, r *http.Request, ps httprouter.Params) { defer r.Body.Close() dpKey := ps.ByName("key") if dpKey == "" { fmt.Fprintf(w, `{"ok":%d,"err":"%v"}`, 0, "params err") return } hid := ps.ByName("hid") if hid == "" { fmt.Fprintf(w, `{"ok":%d,"err":"%v"}`, 0, "params err") return } nid := ps.ByName("nid") if nid == "" { fmt.Fprintf(w, `{"ok":%d,"err":"%v"}`, 0, "params err") return } ukey := r.Header.Get("U-ApiKey") if ukey == "" { fmt.Fprintf(w, `{"ok":%d,"err":"%v"}`, 0, "ukey not post") return } _, err := Account.GetUkeyFromDb(ukey) if err != nil { fmt.Fprintf(w, `{"ok":%d,"err":"%v"}`, 0, "ukey not ext") return } key := ukey + ":" + hid + ":" + nid dpkey := ukey + "," + hid + "," + nid n, err := Nodes.NodeGetOne(key) if err != nil { fmt.Fprintf(w, `{"ok":%d,"err":"%v"}`, 0, "hub not ext or node not in hub") return } if n.Type == Nodes.NodeTypeEnum.Value { decoder := json.NewDecoder(r.Body) var v Values.ValueDP err = decoder.Decode(&v) if err != nil { fmt.Fprintf(w, `{"ok":%d,"err":"%v"}`, 0, err) return } errs := validate.Struct(v) if errs != nil { fmt.Fprintf(w, `{"ok":%d,"err":"%v"}`, 0, "invalid") return } c, err := Values.GetOneByKey(dpkey + "," + dpKey) if err != nil { fmt.Fprintf(w, `{"ok":%d,"err":"%v"}`, 0, err) return } c.Value = v.Value err = Values.Replace(dpkey+","+dpKey, c) if err != nil { fmt.Fprintf(w, `{"ok":%d,"err":"%v"}`, 0, err) return } pStr, _ := json.Marshal(&c) fmt.Fprintf(w, `{"ok":%d,"data":%v}`, 1, string(pStr)) } else if n.Type == Nodes.NodeTypeEnum.Gps { decoder := json.NewDecoder(r.Body) var v Gpss.GpsDP err = decoder.Decode(&v) if err != nil { fmt.Fprintf(w, `{"ok":%d,"err":"%v"}`, 0, err) return } errs := validate.Struct(v) if errs != nil { fmt.Fprintf(w, `{"ok":%d,"err":"%v"}`, 0, "invalid") return } c, err := Gpss.GetOneByKey(dpkey + "," + dpKey) if err != nil { fmt.Fprintf(w, `{"ok":%d,"err":"%v"}`, 0, err) return } c.Lat = v.Lat c.Lng = v.Lng c.Offset = v.Offset c.Speed = v.Speed err = Gpss.Replace(dpkey+","+dpKey, c) if err != nil { fmt.Fprintf(w, `{"ok":%d,"err":"%v"}`, 0, err) return } pStr, _ := json.Marshal(&c) fmt.Fprintf(w, `{"ok":%d,"data":%v}`, 1, string(pStr)) } else if n.Type == Nodes.NodeTypeEnum.Gen { decoder := json.NewDecoder(r.Body) var v Gens.GenDP err = decoder.Decode(&v) if err != nil { fmt.Fprintf(w, `{"ok":%d,"err":"%v"}`, 0, err) return } errs := validate.Struct(v) if errs != nil { fmt.Fprintf(w, `{"ok":%d,"err":"%v"}`, 0, "invalid") return } c, err := Gens.GetOneByKey(dpkey + "," + dpKey) if err != nil { fmt.Fprintf(w, `{"ok":%d,"err":"%v"}`, 0, err) return } c.Value = v.Value err = Gens.Replace(dpkey+","+dpKey, c) if err != nil { fmt.Fprintf(w, `{"ok":%d,"err":"%v"}`, 0, err) return } pStr, _ := json.Marshal(&c) fmt.Fprintf(w, `{"ok":%d,"data":%v}`, 1, string(pStr)) } else { fmt.Fprintf(w, `{"ok":%d,"err":"%v"}`, 0, "unkown type") } }
func DPDelByKey(w http.ResponseWriter, r *http.Request, ps httprouter.Params) { defer r.Body.Close() dpKey := ps.ByName("key") if dpKey == "" { fmt.Fprintf(w, `{"ok":%d,"err":"%v"}`, 0, "params err") return } hid := ps.ByName("hid") if hid == "" { fmt.Fprintf(w, `{"ok":%d,"err":"%v"}`, 0, "params err") return } nid := ps.ByName("nid") if nid == "" { fmt.Fprintf(w, `{"ok":%d,"err":"%v"}`, 0, "params err") return } ukey := r.Header.Get("U-ApiKey") if ukey == "" { fmt.Fprintf(w, `{"ok":%d,"err":"%v"}`, 0, "ukey not post") return } _, err := Account.GetUkeyFromDb(ukey) if err != nil { fmt.Fprintf(w, `{"ok":%d,"err":"%v"}`, 0, "ukey not ext") return } key := ukey + ":" + hid + ":" + nid dpkey := ukey + "," + hid + "," + nid n, err := Nodes.NodeGetOne(key) if err != nil { fmt.Fprintf(w, `{"ok":%d,"err":"%v"}`, 0, "hub not ext or node not in hub") return } if n.Type == Nodes.NodeTypeEnum.Value { c, err := Values.GetOneByKey(dpkey + "," + dpKey) if err != nil { fmt.Fprintf(w, `{"ok":%d,"err":"%v"}`, 0, err) return } err = Values.Del(dpkey + "," + dpKey) if err != nil { fmt.Fprintf(w, `{"ok":%d,"err":"%v"}`, 0, err) return } pStr, _ := json.Marshal(&c) fmt.Fprintf(w, `{"ok":%d,"data":%v}`, 1, string(pStr)) } else if n.Type == Nodes.NodeTypeEnum.Gps { c, err := Gpss.GetOneByKey(dpkey + "," + dpKey) if err != nil { fmt.Fprintf(w, `{"ok":%d,"err":"%v"}`, 0, err) return } err = Gpss.Del(dpkey + "," + dpKey) if err != nil { fmt.Fprintf(w, `{"ok":%d,"err":"%v"}`, 0, err) return } pStr, _ := json.Marshal(&c) fmt.Fprintf(w, `{"ok":%d,"data":%v}`, 1, string(pStr)) } else if n.Type == Nodes.NodeTypeEnum.Gen { c, err := Gens.GetOneByKey(dpkey + "," + dpKey) if err != nil { fmt.Fprintf(w, `{"ok":%d,"err":"%v"}`, 0, err) return } err = Gens.Del(dpkey + "," + dpKey) if err != nil { fmt.Fprintf(w, `{"ok":%d,"err":"%v"}`, 0, err) return } pStr, _ := json.Marshal(&c) fmt.Fprintf(w, `{"ok":%d,"data":%v}`, 1, string(pStr)) } else { fmt.Fprintf(w, `{"ok":%d,"err":"%v"}`, 0, "unkown type") } }
func DPGetByKey(w http.ResponseWriter, r *http.Request, ps httprouter.Params) { defer r.Body.Close() //get接口允许模拟delete提交 //模拟控制器put api/hub/:hid/node/:nid/datapoint/:key?method=delete qs := r.URL.Query() if qs.Get("method") == "delete" { DPDelByKey(w, r, ps) return } dpKey := ps.ByName("key") if dpKey == "" { fmt.Fprintf(w, `{"ok":%d,"err":"%v"}`, 0, "params err") return } hid := ps.ByName("hid") if hid == "" { fmt.Fprintf(w, `{"ok":%d,"err":"%v"}`, 0, "params err") return } nid := ps.ByName("nid") if nid == "" { fmt.Fprintf(w, `{"ok":%d,"err":"%v"}`, 0, "params err") return } ukey := r.Header.Get("U-ApiKey") if ukey == "" { fmt.Fprintf(w, `{"ok":%d,"err":"%v"}`, 0, "ukey not post") return } _, err := Account.GetUkeyFromDb(ukey) if err != nil { fmt.Fprintf(w, `{"ok":%d,"err":"%v"}`, 0, "ukey not ext") return } key := ukey + ":" + hid + ":" + nid dpkey := ukey + "," + hid + "," + nid n, err := Nodes.NodeGetOne(key) if err != nil { fmt.Fprintf(w, `{"ok":%d,"err":"%v"}`, 0, "hub not ext or node not in hub") return } if n.Type == Nodes.NodeTypeEnum.Value { one, err := Values.GetOneByKey(dpkey + "," + dpKey) if err != nil { fmt.Fprintf(w, `{"ok":%d,"err":"%v"}`, 0, err) return } pStr, _ := json.Marshal(&one) fmt.Fprintf(w, `{"ok":%d,"data":%v}`, 1, string(pStr)) } else if n.Type == Nodes.NodeTypeEnum.Gps { one, err := Gpss.GetOneByKey(dpkey + "," + dpKey) if err != nil { fmt.Fprintf(w, `{"ok":%d,"err":"%v"}`, 0, err) return } pStr, _ := json.Marshal(&one) fmt.Fprintf(w, `{"ok":%d,"data":%v}`, 1, string(pStr)) } else if n.Type == Nodes.NodeTypeEnum.Gen { one, err := Gens.GetOneByKey(dpkey + "," + dpKey) if err != nil { fmt.Fprintf(w, `{"ok":%d,"err":"%v"}`, 0, err) return } pStr, _ := json.Marshal(&one) fmt.Fprintf(w, `{"ok":%d,"data":%v}`, 1, string(pStr)) } else { fmt.Fprintf(w, `{"ok":%d,"err":"%v"}`, 0, "unkown type") } }