|
|
|
@@ -0,0 +1,134 @@ |
|
|
|
package aisafety |
|
|
|
|
|
|
|
import ( |
|
|
|
"crypto/md5" |
|
|
|
"encoding/hex" |
|
|
|
"encoding/json" |
|
|
|
"fmt" |
|
|
|
"sort" |
|
|
|
"strings" |
|
|
|
|
|
|
|
"code.gitea.io/gitea/modules/log" |
|
|
|
|
|
|
|
"github.com/go-resty/resty/v2" |
|
|
|
) |
|
|
|
|
|
|
|
var ( |
|
|
|
restyClient *resty.Client |
|
|
|
HOST string |
|
|
|
TOKEN string |
|
|
|
) |
|
|
|
|
|
|
|
const ( |
|
|
|
JobHasBeenStopped = "S410" |
|
|
|
errInvalidToken = "S401" |
|
|
|
Public = "public" |
|
|
|
Custom = "custom" |
|
|
|
LogPageSize = 500 |
|
|
|
LogPageTokenExpired = "5m" |
|
|
|
pageSize = 15 |
|
|
|
Success = "S000" |
|
|
|
) |
|
|
|
|
|
|
|
func getRestyClient() *resty.Client { |
|
|
|
if restyClient == nil { |
|
|
|
restyClient = resty.New() |
|
|
|
} |
|
|
|
return restyClient |
|
|
|
} |
|
|
|
|
|
|
|
func checkSetting() { |
|
|
|
if len(HOST) != 0 && len(TOKEN) != 0 && restyClient != nil { |
|
|
|
return |
|
|
|
} |
|
|
|
_ = loginCloudbrain() |
|
|
|
} |
|
|
|
|
|
|
|
func loginCloudbrain() error { |
|
|
|
|
|
|
|
return nil |
|
|
|
} |
|
|
|
|
|
|
|
func createSign(params map[string]interface{}, signKey string) string { |
|
|
|
var sceneList []string |
|
|
|
for k := range params { |
|
|
|
sceneList = append(sceneList, k) |
|
|
|
} |
|
|
|
sort.Strings(sceneList) |
|
|
|
re := "" |
|
|
|
for _, key := range sceneList { |
|
|
|
if params[key] != nil { |
|
|
|
re += key + "=" + fmt.Sprint(params[key]) + "&" |
|
|
|
} |
|
|
|
} |
|
|
|
re += "key=" + signKey |
|
|
|
h := md5.New() |
|
|
|
h.Write([]byte(re)) |
|
|
|
return strings.ToUpper(hex.EncodeToString(h.Sum(nil))) |
|
|
|
} |
|
|
|
|
|
|
|
func CreateSafetyTask(jobName string, body interface{}) (string, error) { |
|
|
|
checkSetting() |
|
|
|
client := getRestyClient() |
|
|
|
var jobResult string |
|
|
|
|
|
|
|
reqPara, _ := json.Marshal(body) |
|
|
|
log.Warn("job req:", string(reqPara[:])) |
|
|
|
|
|
|
|
res, err := client.R(). |
|
|
|
SetHeader("Content-Type", "application/json"). |
|
|
|
//SetAuthToken(TOKEN). |
|
|
|
SetBody(body). |
|
|
|
SetResult(&jobResult). |
|
|
|
Post(HOST + "/v1/external/eval-standard/create") |
|
|
|
|
|
|
|
if err != nil { |
|
|
|
return "", fmt.Errorf("resty create job: %s", err) |
|
|
|
} else { |
|
|
|
log.Info("restult=" + jobResult) |
|
|
|
} |
|
|
|
|
|
|
|
responseStr := string(res.Body()) |
|
|
|
log.Info("responseStr=" + responseStr) |
|
|
|
|
|
|
|
return jobResult, nil |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
func GetAlgorithmList() error { |
|
|
|
checkSetting() |
|
|
|
client := getRestyClient() |
|
|
|
|
|
|
|
res, err := client.R(). |
|
|
|
SetHeader("Content-Type", "application/json"). |
|
|
|
SetAuthToken(TOKEN). |
|
|
|
Get(HOST + "/v1/external/eval-standard/algorithmList") |
|
|
|
|
|
|
|
if err != nil { |
|
|
|
return fmt.Errorf("resty GetJob: %v", err) |
|
|
|
} |
|
|
|
|
|
|
|
responseStr := string(res.Body()) |
|
|
|
log.Info("GetAlgorithmList responseStr=" + responseStr) |
|
|
|
|
|
|
|
return nil |
|
|
|
} |
|
|
|
|
|
|
|
func GetTaskStatus(jobID string) error { |
|
|
|
checkSetting() |
|
|
|
client := getRestyClient() |
|
|
|
|
|
|
|
res, err := client.R(). |
|
|
|
SetHeader("Content-Type", "application/json"). |
|
|
|
SetAuthToken(TOKEN). |
|
|
|
Get(HOST + "/v1/external/eval-standard/query") |
|
|
|
|
|
|
|
if err != nil { |
|
|
|
return fmt.Errorf("resty GetJob: %v", err) |
|
|
|
} |
|
|
|
|
|
|
|
responseStr := string(res.Body()) |
|
|
|
log.Info("GetTaskStatus responseStr=" + responseStr) |
|
|
|
|
|
|
|
return nil |
|
|
|
} |