github.com/grokify/go-ringcentral-client@v0.3.31/engagedigital/v1/examples/role_create_update/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/errors/errorsutil" 11 "github.com/grokify/mogo/fmt/fmtutil" 12 "github.com/jessevdk/go-flags" 13 14 engagedigital "github.com/grokify/go-ringcentral-client/engagedigital/v1/client" 15 utils "github.com/grokify/go-ringcentral-client/engagedigital/v1/util" 16 ) 17 18 type options struct { 19 Site string `short:"s" long:"site" description:"A site" required:"true"` 20 Token string `short:"t" long:"token" description:"A token" required:"true"` 21 Action string `short:"a" long:"action" description:"A action(create|update)" required:"true"` 22 } 23 24 func GetRole(client *engagedigital.APIClient, roleName string) (engagedigital.Role, error) { 25 info, resp, err := client.RolesApi.GetAllRoles(context.Background(), nil) 26 if err != nil { 27 err = errorsutil.Wrap(err, "E_GET_ALL_ROLES") 28 return engagedigital.Role{}, err 29 } else if resp.StatusCode != 200 { 30 return engagedigital.Role{}, fmt.Errorf("E_STATUS_CODE [%v]", resp.StatusCode) 31 } 32 for _, role := range info.Records { 33 if role.Label == roleName { 34 return role, nil 35 } 36 } 37 return engagedigital.Role{}, fmt.Errorf("E_ROLE_NOT_FOUND [%v]", roleName) 38 } 39 40 func main() { 41 opts := options{} 42 _, err := flags.Parse(&opts) 43 if err != nil { 44 log.Fatal(err) 45 } 46 47 client := utils.NewApiClient(opts.Site, opts.Token) 48 49 switch opts.Action { 50 case "create": 51 dt := time.Now() 52 roleLabel := "TestRole+" + dt.Format(time.RFC3339) 53 apiOpts := &engagedigital.CreateRoleOpts{ 54 UseEmoji: optional.NewBool(true)} 55 info, resp, err := client.RolesApi.CreateRole( 56 context.Background(), roleLabel, apiOpts) 57 if err != nil { 58 log.Fatal(err) 59 } else if resp.StatusCode != 200 { 60 log.Fatal(resp.StatusCode) 61 } 62 fmtutil.PrintJSON(info) 63 case "update": 64 roleName := "Agent" 65 role, err := GetRole(client, roleName) 66 if err != nil { 67 log.Fatal(err) 68 } 69 70 apiOpts := &engagedigital.UpdateRoleOpts{} 71 if role.UseEmoji { 72 apiOpts.UseEmoji = optional.NewBool(false) 73 } else { 74 apiOpts.UseEmoji = optional.NewBool(true) 75 } 76 77 info, resp, err := client.RolesApi.UpdateRole( 78 context.Background(), role.Id, apiOpts) 79 if err != nil { 80 log.Fatal(err) 81 } else if resp.StatusCode != 200 { 82 log.Fatal(resp.StatusCode) 83 } 84 fmtutil.PrintJSON(info) 85 } 86 fmt.Println("DONE") 87 }