MCPcopy Index your code
hub / github.com/apache/devlake / testExistingConnection

Function testExistingConnection

backend/plugins/github/api/connection_api.go:332–383  ·  view source on GitHub ↗
(ctx context.Context, conn models.GithubConn)

Source from the content-addressed store, hash-verified

330}
331
332func testExistingConnection(ctx context.Context, conn models.GithubConn) (*GithubMultiTestConnResponse, errors.Error) {
333 if vld != nil {
334 if err := vld.StructExcept(conn, "GithubAppKey", "GithubAccessToken"); err != nil {
335 return nil, errors.Convert(err)
336 }
337 }
338 githubApiResponse := &GithubMultiTestConnResponse{}
339 if conn.AuthMethod == models.AppKey {
340 if tokenTestResult, err := testGithubConnAppKeyAuth(ctx, conn); err != nil {
341 return nil, errors.Convert(err)
342 } else {
343 githubApiResponse.Tokens = append(githubApiResponse.Tokens, tokenTestResult)
344 }
345 } else if conn.AuthMethod == models.AccessToken {
346 tokens := strings.Split(conn.Token, ",")
347 for _, token := range tokens {
348 testGithubConn := conn
349 testGithubConn.Token = token
350 tokenTestResult, err := testGithubConnAccessTokenAuth(ctx, testGithubConn)
351 if err != nil {
352 // generate a failed message for current token
353 tokenTestResult = &GitHubTestConnResult{
354 AuthMethod: models.AccessToken,
355 AppId: testGithubConn.AppId,
356 InstallationID: testGithubConn.InstallationID,
357 Token: testGithubConn.Sanitize().Token,
358 Success: false,
359 Message: err.Error(),
360 Login: "",
361 Warning: false,
362 Installations: nil,
363 }
364 }
365 githubApiResponse.Tokens = append(githubApiResponse.Tokens, tokenTestResult)
366 }
367 } else {
368 return nil, errors.BadInput.New("invalid authentication method")
369 }
370
371 // resp.success is true by default
372 githubApiResponse.Success = true
373 githubApiResponse.Message = "success"
374 for _, token := range githubApiResponse.Tokens {
375 if !token.Success {
376 githubApiResponse.Success = false
377 githubApiResponse.Message = token.Message
378 githubApiResponse.Causes = append(githubApiResponse.Causes, token.Message)
379 }
380 }
381
382 return githubApiResponse, nil
383}
384
385// TestExistingConnection test github connection options
386// @Summary test github connection

Callers 1

TestExistingConnectionFunction · 0.85

Calls 6

testGithubConnAppKeyAuthFunction · 0.85
ErrorMethod · 0.65
NewMethod · 0.65
ConvertMethod · 0.45
SanitizeMethod · 0.45

Tested by 1

TestExistingConnectionFunction · 0.68