From 4b9f06b14245d904e0154423df754f96d4a0c8af Mon Sep 17 00:00:00 2001 From: florindragos Date: Mon, 18 Mar 2024 13:57:42 +0200 Subject: [PATCH] Fix lint --- plugins/auth0/pkg/fetch/fetch.go | 83 ++++++++++++++++++-------------- plugins/okta/pkg/fetch/fetch.go | 78 ++++++++++++++++-------------- 2 files changed, 91 insertions(+), 70 deletions(-) diff --git a/plugins/auth0/pkg/fetch/fetch.go b/plugins/auth0/pkg/fetch/fetch.go index 6eb334d..c71bbb1 100644 --- a/plugins/auth0/pkg/fetch/fetch.go +++ b/plugins/auth0/pkg/fetch/fetch.go @@ -62,43 +62,16 @@ func (f *Fetcher) Fetch(ctx context.Context, outputWriter, errorWriter io.Writer defer writer.Close() if f.Roles { - page := 0 - - for f.Roles { - opts := []management.RequestOption{management.Page(page)} - if f.ConnectionName != "" { - opts = append(opts, management.Query(`identities.connection:"`+f.ConnectionName+`"`)) - } - - roles, more, err := f.getRoles(ctx, opts) - if err != nil { - _, _ = errorWriter.Write([]byte(err.Error())) - common.SetExitCode(1) - return err - } - - for _, role := range roles { - res := role.String() - var obj map[string]interface{} - err = json.Unmarshal([]byte(res), &obj) - if err != nil { - _, _ = errorWriter.Write([]byte(err.Error())) - common.SetExitCode(1) - continue - } - obj["object_type"] = "role" - err = writer.Write(obj) - if err != nil { - return err - } - } - if !more { - break - } - page++ + err := f.fetchGroups(ctx, writer, errorWriter) + if err != nil { + return err } } + return f.fetchUsers(ctx, writer, errorWriter) +} + +func (f *Fetcher) fetchUsers(ctx context.Context, outputWriter *js.JSONArrayWriter, errorWriter io.Writer) error { page := 0 for { @@ -149,7 +122,47 @@ func (f *Fetcher) Fetch(ctx context.Context, outputWriter, errorWriter io.Writer } } - err = writer.Write(obj) + err = outputWriter.Write(obj) + if err != nil { + return err + } + } + if !more { + break + } + page++ + } + + return nil +} + +func (f *Fetcher) fetchGroups(ctx context.Context, outputWriter *js.JSONArrayWriter, errorWriter io.Writer) error { + page := 0 + + for f.Roles { + opts := []management.RequestOption{management.Page(page)} + if f.ConnectionName != "" { + opts = append(opts, management.Query(`identities.connection:"`+f.ConnectionName+`"`)) + } + + roles, more, err := f.getRoles(ctx, opts) + if err != nil { + _, _ = errorWriter.Write([]byte(err.Error())) + common.SetExitCode(1) + return err + } + + for _, role := range roles { + res := role.String() + var obj map[string]interface{} + err = json.Unmarshal([]byte(res), &obj) + if err != nil { + _, _ = errorWriter.Write([]byte(err.Error())) + common.SetExitCode(1) + continue + } + obj["object_type"] = "role" + err = outputWriter.Write(obj) if err != nil { return err } diff --git a/plugins/okta/pkg/fetch/fetch.go b/plugins/okta/pkg/fetch/fetch.go index 336ed10..3bb3c38 100644 --- a/plugins/okta/pkg/fetch/fetch.go +++ b/plugins/okta/pkg/fetch/fetch.go @@ -19,7 +19,6 @@ type Fetcher struct { } func New(ctx context.Context, client *oktaclient.OktaClient) (*Fetcher, error) { - return &Fetcher{ oktaClient: client, }, nil @@ -36,49 +35,58 @@ func (fetcher *Fetcher) WithRoles(roles bool) *Fetcher { } func (fetcher *Fetcher) Fetch(ctx context.Context, outputWriter, errorWriter io.Writer) error { - var response *okta.Response - var users []*okta.User - var err error - writer := js.NewJSONArrayWriter(outputWriter) defer writer.Close() - if fetcher.Groups { - groups, response, err := fetcher.oktaClient.Group.ListGroups(ctx, nil) + if fetcher.Roles { + err := fetcher.fetchGroups(ctx, writer, errorWriter) if err != nil { - _, _ = errorWriter.Write([]byte(err.Error())) - common.SetExitCode(1) return err } + } + + return fetcher.fetchUsers(ctx, writer, errorWriter) +} - for { - logIfRateLimitExceeded(response, errorWriter) - - for _, group := range groups { - groupResult, err := fetcher.processGroup(ctx, group, errorWriter) - if err != nil { - _, _ = errorWriter.Write([]byte(err.Error())) - common.SetExitCode(1) - } - err = writer.Write(groupResult) - if err != nil { - _, _ = errorWriter.Write([]byte(err.Error())) - } +func (fetcher *Fetcher) fetchUsers(ctx context.Context, writer *js.JSONArrayWriter, errorWriter io.Writer) error { + users, response, err := fetcher.oktaClient.User.ListUsers(ctx, nil) + if err != nil { + _, _ = errorWriter.Write([]byte(err.Error())) + common.SetExitCode(1) + return err + } + + for { + logIfRateLimitExceeded(response, errorWriter) + + for _, user := range users { + userResult, err := fetcher.processUser(ctx, user, errorWriter) + if err != nil { + _, _ = errorWriter.Write([]byte(err.Error())) + common.SetExitCode(1) + } + err = writer.Write(userResult) + if err != nil { + _, _ = errorWriter.Write([]byte(err.Error())) } + } - if response != nil && response.HasNextPage() { - response, err = response.Next(ctx, &users) - if err != nil { - _, _ = errorWriter.Write([]byte(err.Error())) - common.SetExitCode(1) - } - } else { - break + if response != nil && response.HasNextPage() { + response, err = response.Next(ctx, &users) + if err != nil { + _, _ = errorWriter.Write([]byte(err.Error())) + common.SetExitCode(1) } + } else { + break } } - users, response, err = fetcher.oktaClient.User.ListUsers(ctx, nil) + return nil +} + +func (fetcher *Fetcher) fetchGroups(ctx context.Context, writer *js.JSONArrayWriter, errorWriter io.Writer) error { + groups, response, err := fetcher.oktaClient.Group.ListGroups(ctx, nil) if err != nil { _, _ = errorWriter.Write([]byte(err.Error())) common.SetExitCode(1) @@ -88,20 +96,20 @@ func (fetcher *Fetcher) Fetch(ctx context.Context, outputWriter, errorWriter io. for { logIfRateLimitExceeded(response, errorWriter) - for _, user := range users { - userResult, err := fetcher.processUser(ctx, user, errorWriter) + for _, group := range groups { + groupResult, err := fetcher.processGroup(ctx, group, errorWriter) if err != nil { _, _ = errorWriter.Write([]byte(err.Error())) common.SetExitCode(1) } - err = writer.Write(userResult) + err = writer.Write(groupResult) if err != nil { _, _ = errorWriter.Write([]byte(err.Error())) } } if response != nil && response.HasNextPage() { - response, err = response.Next(ctx, &users) + response, err = response.Next(ctx, &groups) if err != nil { _, _ = errorWriter.Write([]byte(err.Error())) common.SetExitCode(1)