github.com/grokify/go-ringcentral-client@v0.3.31/engagedigital/v1/examples/team_create/main.go (about) 1 package main 2 3 import ( 4 "context" 5 "fmt" 6 "log" 7 "time" 8 9 "github.com/antihax/optional" 10 "github.com/grokify/mogo/fmt/fmtutil" 11 "github.com/jessevdk/go-flags" 12 13 engagedigital "github.com/grokify/go-ringcentral-client/engagedigital/v1/client" 14 utils "github.com/grokify/go-ringcentral-client/engagedigital/v1/util" 15 ) 16 17 type options struct { 18 Site string `short:"s" long:"site" description:"A site" required:"true"` 19 Token string `short:"t" long:"token" description:"A token" required:"true"` 20 Update []bool `short:"u" long:"update" description:"Update team"` 21 //Object string `short:"o" long:"object" description:"An object" required:"true"` 22 //Id string `short:"i" long:"id" description:"An object id" required:"false"` 23 } 24 25 func getUsers(client *engagedigital.APIClient) (engagedigital.GetAllUsersResponse, error) { 26 apiResp := engagedigital.GetAllUsersResponse{} 27 info, resp, err := client.UsersApi.GetAllUsers(context.Background(), nil) 28 if err != nil { 29 log.Fatal(err) 30 return apiResp, err 31 } else if resp.StatusCode != 200 { 32 return apiResp, fmt.Errorf("API Response [%v]", resp.StatusCode) 33 } 34 return info, nil 35 } 36 37 func getTeams(client *engagedigital.APIClient) (engagedigital.GetAllTeamsResponse, error) { 38 apiResp := engagedigital.GetAllTeamsResponse{} 39 info, resp, err := client.TeamsApi.GetAllTeams(context.Background(), nil) 40 if err != nil { 41 log.Fatal(err) 42 return apiResp, err 43 } else if resp.StatusCode != 200 { 44 return apiResp, fmt.Errorf("API Response [%v]", resp.StatusCode) 45 } 46 return info, nil 47 } 48 49 func main() { 50 opts := options{} 51 _, err := flags.Parse(&opts) 52 if err != nil { 53 log.Fatal(err) 54 } 55 56 client := utils.NewApiClient(opts.Site, opts.Token) 57 58 usersApiResp, err := getUsers(client) 59 if err != nil { 60 log.Fatal(err) 61 } 62 63 t := time.Now() 64 teamName := fmt.Sprintf("TestTeam:%s", t.Format(time.RFC3339)) 65 66 leaderIds := []string{} 67 userIds := []string{} 68 69 for i, user := range usersApiResp.Records { 70 if i == 0 { 71 leaderIds = append(leaderIds, user.Id) 72 } else { 73 userIds = append(userIds, user.Id) 74 } 75 } 76 77 if len(opts.Update) == 0 { 78 apiOpts := engagedigital.CreateTeamOpts{ 79 Name: optional.NewString(teamName), 80 LeaderIds: optional.NewInterface(leaderIds)} 81 if len(userIds) > 0 { 82 apiOpts.UserIds = optional.NewInterface(userIds) 83 } 84 85 info, resp, err := client.TeamsApi.CreateTeam(context.Background(), &apiOpts) 86 if err != nil { 87 log.Fatal(err) 88 } else if resp.StatusCode != 200 { 89 log.Fatal(resp.StatusCode) 90 } 91 fmt.Println("CREATE_TEAM") 92 fmtutil.PrintJSON(info) 93 } else { 94 teamsApiResp, err := getTeams(client) 95 if err != nil { 96 log.Fatal(err) 97 } 98 if len(teamsApiResp.Records) == 0 { 99 log.Fatal("E_NO_TEAMS_TO_UPDATE") 100 } 101 team1 := teamsApiResp.Records[0] 102 teamId := team1.Id 103 apiOpts := engagedigital.UpdateTeamOpts{ 104 Name: optional.NewString(teamName), 105 LeaderIds: optional.NewInterface(leaderIds)} 106 if len(userIds) > 0 { 107 apiOpts.UserIds = optional.NewInterface(userIds) 108 } 109 110 info, resp, err := client.TeamsApi.UpdateTeam(context.Background(), teamId, &apiOpts) 111 if err != nil { 112 log.Fatal(err) 113 } else if resp.StatusCode != 200 { 114 log.Fatal(resp.StatusCode) 115 } 116 fmt.Println("UPDATE_TEAM") 117 fmtutil.PrintJSON(info) 118 } 119 120 fmt.Println("DONE") 121 }