liuxiaolong
2019-08-22 f4e8f206a6760bdc31734dfcb1c65916b5b76311
extend/esutil/EsClient.go
@@ -9,7 +9,6 @@
   "log"
   "mime/multipart"
   "net/http"
   "strconv"
   "strings"
   "time"
@@ -45,12 +44,12 @@
      sources := []interface{}{}
      for _, value := range dat["hits"].([]interface{}) {
         source := value.(map[string]interface{})["_source"].(map[string]interface{})
         source["id"] = value.(map[string]interface{})["_id"]
         sdkType := source["sdkType"]
         //source["id"] = source["id"]
         /*sdkType := source["sdkType"]
         if sdkType != nil {
            sdk, _ := strconv.Atoi(sdkType.(string))
            source["sdkType"] = sdkTypeToValue(sdk)
         }
         }*/
         sources = append(sources, source)
      }
      data["datalist"] = sources
@@ -62,10 +61,10 @@
}
//sdk类型
func sdkTypeToValue(i int) string {
/*func sdkTypeToValue(i int) string {
   value := []string{"人脸", "车辆", "人体", "入侵", "拥挤", "靠右行", "人员异常", "个体静止"}
   return value[i-1]
}
}*/
func PutEsDataReq(url string, parama string) (map[string]interface{}, error) {
   //fmt.Println("es 查询请求路径" + url) //  配置信息 获取
@@ -99,7 +98,7 @@
   return dat, nil
}
func PostFormData(uri string, filename, paramName string, file multipart.File) (maps map[string]interface{}, err0 error) {
func PostFormData(uri string, filename, paramName string, fileBytes []byte) (maps map[string]interface{}, err0 error) {
   body := &bytes.Buffer{}
   writer := multipart.NewWriter(body)
   _, err := writer.CreateFormFile(paramName, filename)
@@ -107,11 +106,11 @@
      return nil, err
   }
   boundary := writer.Boundary()
   //close_string := fmt.Sprintf("\r\n--%s--\r\n", boundary)
   close_buf := bytes.NewBufferString(fmt.Sprintf("\r\n--%s--\r\n", boundary))
   fmt.Println("PostFormData.fileLen:", len(fileBytes))
   file := bytes.NewBuffer(fileBytes)
   request_reader := io.MultiReader(body, file, close_buf)
   //_, err = io.Copy(part, file)
   //writer.WriteField(key, val)
   request, err := http.NewRequest("POST", uri, request_reader)
   request.Header.Add("Content-Type", writer.FormDataContentType())
   timeout := time.Duration(5 * time.Second) //超时时间50ms
@@ -246,3 +245,61 @@
      return dat
   }
}
//解析http
func EsReq(method string, url string, parama []byte) (buf []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")
   if err != nil {
      fmt.Println("build request fail !")
      return nil, err
   }
   resp, err := client.Do(request)
   if err != nil {
      fmt.Println("request error: ", err)
      return nil, err
   }
   defer resp.Body.Close()
   body, err := ioutil.ReadAll(resp.Body)
   if err != nil {
      fmt.Println(err)
      return nil, err
   }
   return body, nil
}
//解析json
func Sourcelist(buf []byte) (sources []map[string]interface{}, err error) {
   var info interface{}
   json.Unmarshal(buf, &info)
   out, ok := info.(map[string]interface{})
   if !ok {
      return nil, errors.New("http response interface can not change map[string]interface{}")
   }
   middle, ok := out["hits"].(map[string]interface{})
   if !ok {
      return nil, errors.New("first hits change error!")
   }
   for _, in := range middle["hits"].([]interface{}) {
      tmpbuf, ok := in.(map[string]interface{})
      if !ok {
         fmt.Println("change to source error!")
         continue
      }
      source, ok := tmpbuf["_source"].(map[string]interface{})
      if !ok {
         fmt.Println("change _source error!")
         continue
      }
      sources = append(sources, source)
   }
   return sources, nil
}