package main import ( "flag" "fmt" "net/http" "strconv" "strings" "git.algo.com.cn/public/saasapi" "git.algo.com.cn/public/saasapi/pkg/saashttp" "google.golang.org/protobuf/encoding/protojson" ) type bindDeleteParams struct { idType int ids []int64 saasHttp *saashttp.SaasClient } func RunBindDelete(args ...string) error { fs := flag.NewFlagSet("delete", flag.ExitOnError) cfgFile := paramConfig(fs) idtype := paramIdType(fs) ids := paramIDs(fs) if err := fs.Parse(args); err != nil { return fmt.Errorf("Command line parse error: %w", err) } // 切割字符串 idsSlice := strings.Split(*ids, ",") if len(idsSlice) == 1 && idsSlice[0] == "" { idsSlice = []string{} } if fs.NArg() > 0 || len(idsSlice) == 0 || (len(idsSlice) == 1 && idsSlice[0] == "") { fs.PrintDefaults() return nil } numIds := []int64{} for _, v := range idsSlice { n, err := strconv.ParseInt(v, 10, 64) if err != nil { return fmt.Errorf("Id parse error. value: %v. %w", v, err) } numIds = append(numIds, n) } cfg, err := LoadConfigFile(*cfgFile) if err != nil { return fmt.Errorf("LoadConfigFile error: %w", err) } bindDeleteParams := bindDeleteParams{ idType: *idtype, ids: numIds, saasHttp: &saashttp.SaasClient{ Client: &http.Client{}, ApiUrls: saashttp.InitAPIUrl(&cfg.ApiUrls), Auth: &cfg.Auth, }, } return doBindDeleteAccount(bindDeleteParams) } func doBindDeleteAccount(p bindDeleteParams) error { bindDelete := &saasapi.BindDelete{} saasReq := &saasapi.SaasReq{ Cmd: &saasapi.SaasReq_BindDelete{ BindDelete: bindDelete, }, } for _, v := range p.ids { bindDelete.Binds = append(bindDelete.Binds, &saasapi.Bind{ BindId: v, BindType: saasapi.BindType(p.idType), }) } res, err := p.saasHttp.BindDelete(saasReq) if err != nil { return fmt.Errorf("Submit Command error: %w", err) } if res.Code != saasapi.ErrorCode_SUCC { return fmt.Errorf("Command failed. code:%v, status:%v", res.Code, res.Status) } bindRes := res.GetBindDeleteRes() fmt.Printf("bind res: %v\n", protojson.Format(bindRes)) return nil }