package service import ( "basic.com/pubsub/protomsg.git" "basic.com/valib/logger.git" "bytes" "encoding/json" "io/ioutil" "net/http" "time" ) func inCameraTree(id, rtsp string, isGB bool) bool { url := "http://127.0.0.1:7009/data/api-v/camera/show?id=" + id if isGB { url = "http://127.0.0.1:7009/data/api-v/gb28181/camera/show?cid=" + id } body, err := Get(url, nil) if err != nil { logger.Warn("[db]", err) return false } var res Result if err = json.Unmarshal(body, &res); err != nil { logger.Warn("[db]", err) return false } if !res.Success { logger.Warn("[db]http response:", res) return false } var camera protomsg.Camera var bytes []byte bytes, err = json.Marshal(res.Data) if err != nil { logger.Warn("[db]", err) return false } err = json.Unmarshal(bytes, &camera) if err != nil { logger.Warn("[db]", err) return false } return camera.Rtsp == rtsp } // hik 摄像机编码转rtsp // 参数 {"cameraIndexCode":"3d3edde85d364a15906cf316a58ee69f"} func rtspTranslation(cameraIndexCode string) (rtsp string) { url := "http://192.168.122.101:20886/getHikRtsp" param, _ := json.Marshal(map[string]string{"cameraIndexCode": cameraIndexCode}) logger.Debug("request hik api to get rtsp, camera index code:", cameraIndexCode) body, err := Post(url, param) if err != nil { logger.Warn("convert rtsp failed:", err) return } return string(body) } const ( token = "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjQ3NDUwMjU5MjMsInVzZXIiOiJ7XCJpZFwiOlwiZTZjY2QzNmQtNGYxNi00NmZjLTg4ZDUtMDczNjU4NjZkMjA1XCIsXCJwZXJtaXNzaW9uc1wiOltcInByb2R1Y3RNYW5nZTpwdWJsaXNoXCIsXCJjb2RlTWFuZ2U6dmlld1wiLFwiZGV2aWNlTWFuYWdlOmFkZFwiLFwiYWRtaW5NYW5hZ2VcIixcIm9yZGVyTWFuZ2VcIixcImRldmljZU1hbmFnZTp2aWV3XCIsXCJwcm9kdWN0TWFuZ2U6YWRkXCIsXCJhZG1pbk1hbmFnZTp2aWV3XCIsXCJjb2RlTWFuZ2U6YWRkXCIsXCJwcm9kdWN0TWFuZ2U6b2ZmU2FsZVwiLFwib3JkZXJNYW5nZTpjYW5jZWxcIixcInByb2R1Y3RDZW50ZXI6ZG93bmxvYWRcIixcInByb2R1Y3RDZW50ZXI6YnV5XCIsXCJwcm9kdWN0TWFuZ2U6dmlld1wiLFwiYXBpXCIsXCJob21lXCIsXCJvcmRlck1hbmdlOnBheVwiLFwiYWRtaW5NYW5hZ2U6YWRkXCIsXCJvcmRlck1hbmdlOmRvd25sb2FkXCIsXCJwcm9kdWN0Q2VudGVyXCIsXCJkZXZpY2VNYW5hZ2U6dW5iaW5kXCIsXCJvcmRlck1hbmdlOnZpZXdcIixcImFkbWluTWFuYWdlOmVkaXRcIixcImRldmljZU1hbmFnZVwiLFwidmlwTWFuYWdlOmFkZFwiLFwidmlwTWFuYWdlOnZpZXdcIixcInByb2R1Y3RDZW50ZXI6dmlld1wiLFwidmlwTWFuYWdlOmVkaXRcIixcInZpcE1hbmFnZVwiLFwicHJvZHVjdE1hbmdlOmVkaXRcIixcImNvZGVNYW5nZVwiLFwicHJvZHVjdE1hbmdlXCJdLFwidXNlcm5hbWVcIjpcImJhc2ljXCJ9In0.vwjAFkWuEyadRLvIOGK8LFE3MjpY3SQ7j6AlTXnQDG8" ) type Result struct { Code int `json:"code"` Data interface{} `json:"data"` Msg string `json:"msg"` Success bool `json:"success"` } func Get(url string, parama []byte) (body []byte, err error) { return request("GET", url, parama) } func Post(url string, parama []byte) (body []byte, err error) { return request("POST", url, parama) } func request(method string, url string, parama []byte) (body []byte, err error) { timeout := time.Duration(10 * time.Second) client := http.Client{ Timeout: timeout, } request, err := http.NewRequest(method, url, bytes.NewBuffer(parama)) request.Header.Set("Content-type", "application/json") request.Header.Add("Authorization", token) if err != nil { logger.Warn("build request fail !") return nil, err } resp, err := client.Do(request) if err != nil { logger.Warn("request error: ", err) return nil, err } defer resp.Body.Close() body, err = ioutil.ReadAll(resp.Body) if err != nil { logger.Warn(err) } return body, nil }