You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

resty.go 3.5 kB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
  1. package aisafety
  2. import (
  3. "crypto/md5"
  4. "encoding/hex"
  5. "encoding/json"
  6. "fmt"
  7. "sort"
  8. "strings"
  9. "code.gitea.io/gitea/modules/log"
  10. "github.com/go-resty/resty/v2"
  11. )
  12. var (
  13. restyClient *resty.Client
  14. HOST string
  15. KEY string
  16. )
  17. const (
  18. APPID = "1"
  19. LogPageSize = 500
  20. LogPageTokenExpired = "5m"
  21. pageSize = 15
  22. Success = "S000"
  23. )
  24. func getRestyClient() *resty.Client {
  25. if restyClient == nil {
  26. restyClient = resty.New()
  27. }
  28. return restyClient
  29. }
  30. func checkSetting() {
  31. if len(HOST) != 0 && len(KEY) != 0 {
  32. return
  33. }
  34. _ = loginCloudbrain()
  35. }
  36. func loginCloudbrain() error {
  37. HOST = "http://221.122.70.196:8081/atp-api"
  38. KEY = "1"
  39. return nil
  40. }
  41. func createSign(params map[string]interface{}, signKey string) string {
  42. var sceneList []string
  43. for k := range params {
  44. sceneList = append(sceneList, k)
  45. }
  46. sort.Strings(sceneList)
  47. re := ""
  48. for _, key := range sceneList {
  49. if params[key] != nil {
  50. re += key + "=" + fmt.Sprint(params[key]) + "&"
  51. }
  52. }
  53. re += "key=" + signKey
  54. log.Info("sign key:" + re)
  55. h := md5.New()
  56. h.Write([]byte(re))
  57. return strings.ToUpper(hex.EncodeToString(h.Sum(nil)))
  58. }
  59. func CreateSafetyTask(jobName string, body interface{}) (string, error) {
  60. checkSetting()
  61. client := getRestyClient()
  62. var jobResult string
  63. reqPara, _ := json.Marshal(body)
  64. log.Warn("job req:", string(reqPara[:]))
  65. params := make(map[string]interface{})
  66. //params["appId"] = APPID
  67. res, err := client.R().
  68. SetHeader("Content-Type", "application/json").
  69. SetHeader("sign", createSign(params, KEY)).
  70. //SetAuthToken(TOKEN).
  71. SetBody(body).
  72. SetResult(&jobResult).
  73. Post(HOST + "/v1/external/eval-standard/create")
  74. log.Info("url=" + HOST + "/v1/external/eval-standard/create")
  75. if err != nil {
  76. return "", fmt.Errorf("resty create job: %s", err)
  77. } else {
  78. log.Info("result string=" + jobResult + " res code=" + fmt.Sprint(res.StatusCode()))
  79. }
  80. responseStr := string(res.Body())
  81. log.Info("responseStr=" + responseStr)
  82. return jobResult, nil
  83. }
  84. func GetAlgorithmList() error {
  85. checkSetting()
  86. client := getRestyClient()
  87. var taskResult string
  88. params := make(map[string]interface{})
  89. //params["appId"] = APPID
  90. sign := createSign(params, KEY)
  91. res, err := client.R().
  92. SetHeader("Content-Type", "application/json").
  93. SetHeader("appId", APPID).
  94. SetHeader("sign", sign).
  95. SetResult(&taskResult).
  96. Get(HOST + "/v1/external/eval-standard/algorithmList")
  97. log.Info("url=" + HOST + "/v1/external/eval-standard/algorithmList" + " sign=" + sign + " appId=" + APPID)
  98. if err != nil {
  99. log.Info("error =" + err.Error())
  100. return fmt.Errorf("resty GetJob: %v", err)
  101. }
  102. log.Info("taskResult=" + taskResult)
  103. responseStr := string(res.Body())
  104. log.Info("GetAlgorithmList responseStr=" + responseStr + " res code=" + fmt.Sprint(res.StatusCode()))
  105. return nil
  106. }
  107. func GetTaskStatus(jobID string) error {
  108. checkSetting()
  109. client := getRestyClient()
  110. var taskResult string
  111. params := make(map[string]interface{})
  112. //params["appId"] = APPID
  113. res, err := client.R().
  114. SetHeader("Content-Type", "application/json").
  115. SetHeader("appId", APPID).
  116. SetHeader("sign", createSign(params, KEY)).
  117. SetResult(&taskResult).
  118. Get(HOST + "/v1/external/eval-standard/query")
  119. log.Info("url=" + HOST + "/v1/external/eval-standard/query")
  120. if err != nil {
  121. return fmt.Errorf("resty GetJob: %v", err)
  122. }
  123. responseStr := string(res.Body())
  124. log.Info("GetTaskStatus responseStr=" + responseStr + " res code=" + fmt.Sprint(res.StatusCode()))
  125. return nil
  126. }