@@ -3,9 +3,7 @@ package cmd
33import (
44 "context"
55 "log/slog"
6- "time"
76
8- "github.com/slashdevops/httpx"
97 "github.com/slashdevops/idp-scim-sync/internal/version"
108 "github.com/slashdevops/idp-scim-sync/pkg/aws"
119 "github.com/spf13/cobra"
6664 Use : "list" ,
6765 Aliases : []string {"l" },
6866 Short : "return available users" ,
69- Long : `list available usrs in AWS SSO SCIM` ,
67+ Long : `list available users in AWS SSO SCIM` ,
7068 RunE : runAWSUsersList ,
7169 }
7270)
@@ -87,95 +85,65 @@ func init() {
8785 awsUsersCmd .Flags ().StringVarP (& filter , "filter" , "q" , "" , "AWS SSO SCIM API Filter, example: --filter 'displayName eq \" User Bar\" and id eq \" 12324\" '" )
8886}
8987
88+ // newAWSSCIMService creates an AWS SCIM service with the configured HTTP client.
89+ func newAWSSCIMService () (* aws.SCIMService , error ) {
90+ svc , err := aws .NewSCIMService (newSCIMHTTPClient (), cfg .AWSSCIMEndpoint , cfg .AWSSCIMAccessToken )
91+ if err != nil {
92+ return nil , err
93+ }
94+ svc .UserAgent = "idp-scim-sync/" + version .Version
95+ return svc , nil
96+ }
97+
9098func runAWSServiceConfig (_ * cobra.Command , _ []string ) error {
9199 ctx , cancel := context .WithTimeout (context .Background (), reqTimeout )
92100 defer cancel ()
93101
94- httpRetryClient := httpx .NewClientBuilder ().
95- WithMaxRetries (10 ).
96- WithRetryStrategy (httpx .JitterBackoffStrategy ).
97- WithRetryBaseDelay (500 * time .Millisecond ).
98- WithRetryMaxDelay (10 * time .Second ).
99- Build ()
100-
101- awsSCIMService , err := aws .NewSCIMService (httpRetryClient , cfg .AWSSCIMEndpoint , cfg .AWSSCIMAccessToken )
102+ svc , err := newAWSSCIMService ()
102103 if err != nil {
103- slog .Error ("error creating SCIM service" , "error" , err .Error ())
104104 return err
105105 }
106- awsSCIMService .UserAgent = "idp-scim-sync/" + version .Version
107106
108- awsServiceConfig , err := awsSCIMService .ServiceProviderConfig (ctx )
107+ result , err := svc .ServiceProviderConfig (ctx )
109108 if err != nil {
110- slog .Error ("error getting service provider config" , "error" , err .Error ())
111109 return err
112110 }
113111
114- show (outFormat , awsServiceConfig )
115-
116- return nil
112+ return show (outFormat , result )
117113}
118114
119115func runAWSGroupsList (_ * cobra.Command , _ []string ) error {
120116 ctx , cancel := context .WithTimeout (context .Background (), reqTimeout )
121117 defer cancel ()
122118
123- httpClient := httpx .NewClientBuilder ().
124- WithMaxRetries (10 ).
125- WithRetryStrategy (httpx .JitterBackoffStrategy ).
126- WithRetryBaseDelay (500 * time .Millisecond ).
127- WithRetryMaxDelay (10 * time .Second ).
128- WithMaxIdleConns (100 ).
129- WithMaxIdleConnsPerHost (100 ).
130- Build ()
131-
132- awsSCIMService , err := aws .NewSCIMService (httpClient , cfg .AWSSCIMEndpoint , cfg .AWSSCIMAccessToken )
119+ svc , err := newAWSSCIMService ()
133120 if err != nil {
134- slog .Error ("error creating SCIM service" , "error" , err .Error ())
135121 return err
136122 }
137- awsSCIMService .UserAgent = "idp-scim-sync/" + version .Version
138123
139- awsGroupsResponse , err := awsSCIMService .ListGroups (ctx , filter )
124+ result , err := svc .ListGroups (ctx , filter )
140125 if err != nil {
141- slog .Error ("error listing groups" , "error" , err .Error ())
142126 return err
143127 }
144- slog .Info ("groups found" , "groups" , awsGroupsResponse .TotalResults )
145-
146- show (outFormat , awsGroupsResponse )
128+ slog .Info ("groups found" , "groups" , result .TotalResults )
147129
148- return nil
130+ return show ( outFormat , result )
149131}
150132
151133func runAWSUsersList (_ * cobra.Command , _ []string ) error {
152134 ctx , cancel := context .WithTimeout (context .Background (), reqTimeout )
153135 defer cancel ()
154136
155- httpClient := httpx .NewClientBuilder ().
156- WithMaxRetries (10 ).
157- WithRetryStrategy (httpx .JitterBackoffStrategy ).
158- WithRetryBaseDelay (500 * time .Millisecond ).
159- WithRetryMaxDelay (10 * time .Second ).
160- WithMaxIdleConns (100 ).
161- WithMaxIdleConnsPerHost (100 ).
162- Build ()
163-
164- awsSCIMService , err := aws .NewSCIMService (httpClient , cfg .AWSSCIMEndpoint , cfg .AWSSCIMAccessToken )
137+ svc , err := newAWSSCIMService ()
165138 if err != nil {
166- slog .Error ("error creating SCIM service" , "error" , err .Error ())
167139 return err
168140 }
169- awsSCIMService .UserAgent = "idp-scim-sync/" + version .Version
170141
171- awsUsersResponse , err := awsSCIMService .ListUsers (ctx , filter )
142+ result , err := svc .ListUsers (ctx , filter )
172143 if err != nil {
173- slog .Error ("error listing users" , "error" , err .Error ())
174144 return err
175145 }
176- slog .Info ("users found" , "users" , awsUsersResponse .TotalResults )
177-
178- show (outFormat , awsUsersResponse )
146+ slog .Info ("users found" , "users" , result .TotalResults )
179147
180- return nil
148+ return show ( outFormat , result )
181149}
0 commit comments