package main import ( "flag" "fmt" "net/http" "os" "e.coding.net/rta/public/saasapi" "e.coding.net/rta/public/saasapi/pkg/saashttp" "google.golang.org/protobuf/encoding/protojson" ) type infoTaskParams struct { taskSha256 string saasHttp *saashttp.SaasClient } func RunTaskInfo(args ...string) error { fs := flag.NewFlagSet("create", flag.ExitOnError) cfgFile := paramConfig(fs) sha256 := paramSha256(fs) if err := fs.Parse(args); err != nil { fmt.Fprintln(os.Stderr, "command line parse error", "err", err) return err } if fs.NArg() > 0 || len(*sha256) == 0 { fs.PrintDefaults() return nil } cfg, err := LoadConfigFile(*cfgFile) if err != nil { fmt.Fprintln(os.Stderr, "LoadConfigFile error", "err", err) return err } infoTaskParams := infoTaskParams{ taskSha256: *sha256, saasHttp: &saashttp.SaasClient{ Client: &http.Client{}, ApiUrls: saashttp.InitAPIUrl(&cfg.ApiUrls), Auth: &cfg.Auth, }, } taskRes, err := doTaskInfo(infoTaskParams) if err != nil { fmt.Printf("task res: %v\n", protojson.Format(taskRes)) } return err } func doTaskInfo(infoTaskParams infoTaskParams) (*saasapi.Task, error) { saasReq := &saasapi.SaasReq{ Cmd: &saasapi.SaasReq_TaskInfo{ TaskInfo: &saasapi.TaskInfo{ TaskSha256: infoTaskParams.taskSha256, }, }, } res, err := infoTaskParams.saasHttp.TaskInfo(saasReq) if err != nil { fmt.Fprintln(os.Stderr, "submit Task info error", "err", err) return nil, err } if res.Code != saasapi.ErrorCode_SUCC { err = fmt.Errorf("task info failed. code:%v, status:%v", res.Code, res.Status) fmt.Fprintln(os.Stderr, err) return nil, err } taskRes := res.GetTaskInfoRes() fmt.Println(protojson.Format(taskRes)) return taskRes, nil }