Skip to content

Commit 9a35539

Browse files
authored
feat(api): improve error for callback repo manager (#5732)
1 parent 6e2b3e7 commit 9a35539

File tree

1 file changed

+26
-26
lines changed

1 file changed

+26
-26
lines changed

engine/api/repositories_manager.go

Lines changed: 26 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -97,8 +97,8 @@ func (api *API) repositoriesManagerAuthorizeHandler() service.Handler {
9797
}
9898

9999
keyr := cache.Key("reposmanager", "oauth", token)
100-
if err := api.Cache.Set(keyr, data); err != nil {
101-
log.Error(ctx, "unable to cache set %v: %v", keyr, err)
100+
if err := api.Cache.SetWithTTL(keyr, data, int(time.Duration(5*time.Minute).Seconds())); err != nil {
101+
return sdk.WrapError(err, "unable to store oauth state in cache")
102102
}
103103
return service.WriteJSON(w, data, http.StatusOK)
104104
}
@@ -126,8 +126,9 @@ func (api *API) repositoriesManagerOAuthCallbackHandler() service.Handler {
126126
log.Error(ctx, "cannot get from cache %s: %v", key, err)
127127
}
128128
if !find {
129-
return sdk.WrapError(sdk.ErrForbidden, "repositoriesManagerAuthorizeCallback> Error")
129+
return sdk.WrapError(sdk.ErrForbidden, "no matching oauth state in cache")
130130
}
131+
131132
projectKey := data["project_key"]
132133
rmName := data["repositories_manager"]
133134
username := data["username"]
@@ -136,12 +137,12 @@ func (api *API) repositoriesManagerOAuthCallbackHandler() service.Handler {
136137
authConsumer, err := authentication.LoadConsumerByID(ctx, api.mustDB(), consumerID,
137138
authentication.LoadConsumerOptions.WithAuthentifiedUser)
138139
if err != nil {
139-
return sdk.WrapError(sdk.ErrForbidden, "repositoriesManagerAuthorizeCallback> Error")
140+
return sdk.WrapError(sdk.ErrForbidden, "cannot load consumer with id: %s", consumerID)
140141
}
141142

142-
proj, errP := project.Load(ctx, api.mustDB(), projectKey)
143-
if errP != nil {
144-
return sdk.WrapError(errP, "repositoriesManagerAuthorizeCallback> Cannot load project")
143+
proj, err := project.Load(ctx, api.mustDB(), projectKey)
144+
if err != nil {
145+
return sdk.WrapError(err, "cannot load project")
145146
}
146147

147148
// initialize a tx, but this tx is only used to READ.
@@ -152,23 +153,23 @@ func (api *API) repositoriesManagerOAuthCallbackHandler() service.Handler {
152153
}
153154
defer txRead.Rollback() // nolint
154155

155-
vcsServer, errVCSServer := repositoriesmanager.NewVCSServerConsumer(txRead, api.Cache, rmName)
156-
if errVCSServer != nil {
157-
return sdk.WrapError(errVCSServer, "repositoriesManagerAuthorizeCallback> Cannot load project")
156+
vcsServer, err := repositoriesmanager.NewVCSServerConsumer(txRead, api.Cache, rmName)
157+
if err != nil {
158+
return sdk.WrapError(err, "cannot load vcs server with name %s", rmName)
158159
}
159160

160161
token, secret, err := vcsServer.AuthorizeToken(ctx, state, code)
161162
if err != nil {
162-
return sdk.WrapError(sdk.ErrNoReposManagerClientAuth, "repositoriesManagerAuthorizeCallback> Error with AuthorizeToken: %s", err)
163+
return sdk.NewErrorWithStack(err, sdk.ErrNoReposManagerClientAuth)
163164
}
164165

165166
if token == "" || secret == "" {
166-
return sdk.WrapError(sdk.ErrNoReposManagerClientAuth, "repositoriesManagerAuthorizeCallback> token or secret is empty")
167+
return sdk.WrapError(sdk.ErrNoReposManagerClientAuth, "token or secret is empty")
167168
}
168169

169-
tx, errT := api.mustDB().Begin()
170-
if errT != nil {
171-
return sdk.WrapError(errT, "repositoriesManagerAuthorizeCallback> Cannot start transaction")
170+
tx, err := api.mustDB().Begin()
171+
if err != nil {
172+
return sdk.WrapError(err, "cannot start transaction")
172173
}
173174
defer tx.Rollback() // nolint
174175

@@ -182,11 +183,11 @@ func (api *API) repositoriesManagerOAuthCallbackHandler() service.Handler {
182183
vcsServerForProject.Set("created", strconv.FormatInt(time.Now().Unix(), 10))
183184

184185
if err := repositoriesmanager.InsertProjectVCSServerLink(ctx, tx, vcsServerForProject); err != nil {
185-
return sdk.WrapError(err, "Error with InsertForProject")
186+
return sdk.WrapError(err, "error inserting vcs server link")
186187
}
187188

188189
if err := tx.Commit(); err != nil {
189-
return sdk.WrapError(errT, "repositoriesManagerAuthorizeCallback> Cannot commit transaction")
190+
return sdk.WrapError(err, "cannot commit transaction")
190191
}
191192

192193
event.PublishAddVCSServer(ctx, proj, vcsServerForProject.Name, authConsumer)
@@ -222,14 +223,14 @@ func (api *API) repositoriesManagerAuthorizeBasicHandler() service.Handler {
222223
return sdk.WrapError(sdk.ErrWrongRequest, "cannot get token nor verifier from data")
223224
}
224225

225-
proj, errP := project.Load(ctx, api.mustDB(), projectKey)
226-
if errP != nil {
227-
return sdk.WrapError(errP, "cannot load project %s", projectKey)
226+
proj, err := project.Load(ctx, api.mustDB(), projectKey)
227+
if err != nil {
228+
return sdk.WrapError(err, "cannot load project %s", projectKey)
228229
}
229230

230-
tx, errT := api.mustDB().Begin()
231-
if errT != nil {
232-
return sdk.WrapError(errT, "cannot start transaction")
231+
tx, err := api.mustDB().Begin()
232+
if err != nil {
233+
return sdk.WrapError(err, "cannot start transaction")
233234
}
234235
defer tx.Rollback() // nolint
235236

@@ -243,12 +244,12 @@ func (api *API) repositoriesManagerAuthorizeBasicHandler() service.Handler {
243244
vcsServerForProject.Set("created", strconv.FormatInt(time.Now().Unix(), 10))
244245

245246
if err := repositoriesmanager.InsertProjectVCSServerLink(ctx, tx, vcsServerForProject); err != nil {
246-
return sdk.WrapError(err, "Error with InsertForProject")
247+
return sdk.WrapError(err, "error inserting vcs server link")
247248
}
248249

249250
client, err := repositoriesmanager.AuthorizedClient(ctx, tx, api.Cache, proj.Key, *vcsServerForProject)
250251
if err != nil {
251-
return sdk.WrapError(sdk.ErrNoReposManagerClientAuth, "cannot get client for project %s: %v", proj.Key, err)
252+
return sdk.NewErrorWithStack(sdk.WrapError(err, "cannot get client for project %s", proj.Key), sdk.ErrNoReposManagerClientAuth)
252253
}
253254

254255
if _, err = client.Repos(ctx); err != nil {
@@ -262,7 +263,6 @@ func (api *API) repositoriesManagerAuthorizeBasicHandler() service.Handler {
262263
event.PublishAddVCSServer(ctx, proj, vcsServerForProject.Name, getAPIConsumer(ctx))
263264

264265
return service.WriteJSON(w, proj, http.StatusOK)
265-
266266
}
267267
}
268268

0 commit comments

Comments
 (0)