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
|
}
|