github.com/grokify/go-ringcentral-client@v0.3.31/engagedigital/v1/examples/user_create_update_invite/main.go (about) 1 package main 2 3 import ( 4 "context" 5 "fmt" 6 "log" 7 8 "github.com/antihax/optional" 9 "github.com/grokify/mogo/errors/errorsutil" 10 "github.com/grokify/mogo/fmt/fmtutil" 11 "github.com/grokify/mogo/net/smtputil" 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|invite)" 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 roleName := "Agent" 50 userEmail, err := smtputil.GmailAddressPlusTime("bb8.ringforce") 51 if err != nil { 52 log.Fatal(err) 53 } 54 55 switch opts.Action { 56 case "create": 57 //userEmail = "joe@example.com" 58 userFirstName := "Test" 59 userLastName := "User" 60 61 role, err := GetRole(client, roleName) 62 if err != nil { 63 log.Fatal(err) 64 } 65 66 info, resp, err := client.UsersApi.CreateUser( 67 context.Background(), 68 userEmail, 69 userFirstName, 70 userLastName, 71 "MyPasswordU*OQ@#4uo", 72 role.Id, nil) 73 if err != nil { 74 log.Fatal(err) 75 } else if resp.StatusCode != 200 { 76 log.Fatal(resp.StatusCode) 77 } 78 fmtutil.PrintJSON(info) 79 case "update": 80 users, resp, err := client.UsersApi.GetAllUsers(context.Background(), nil) 81 if err != nil { 82 log.Fatal(err) 83 } else if resp.StatusCode != 200 { 84 log.Fatal(resp.StatusCode) 85 } 86 87 user := users.Records[0] 88 89 apiOpts := &engagedigital.UpdateUserOpts{} 90 if user.Locale == "en" { 91 apiOpts.Locale = optional.NewString("fr") 92 } else { 93 apiOpts.Locale = optional.NewString("en") 94 } 95 96 info, resp, err := client.UsersApi.UpdateUser( 97 context.Background(), user.Id, apiOpts) 98 if err != nil { 99 log.Fatal(err) 100 } else if resp.StatusCode != 200 { 101 log.Fatal(resp.StatusCode) 102 } 103 fmtutil.PrintJSON(info) 104 case "invite": 105 userEmail = "joe@example.com" 106 userFirstName := "Test" 107 userLastName := "User" 108 109 role, err := GetRole(client, roleName) 110 if err != nil { 111 log.Fatal(err) 112 } 113 114 info, resp, err := client.UsersApi.InviteUser( 115 context.Background(), 116 userEmail, 117 userFirstName, 118 userLastName, 119 role.Id, nil) 120 if err != nil { 121 log.Fatal(err) 122 } else if resp.StatusCode != 200 { 123 log.Fatal(resp.StatusCode) 124 } 125 fmtutil.PrintJSON(info) 126 } 127 128 fmt.Println("DONE") 129 }