@@ 20,9 20,12 @@ func handleCommit(ctx context.Context, event *giteaCommitEvent, installation *In
srhtClient := newSrhtClient(&oauth2.TokenResp{
AccessToken: installation.SrhtAccessToken,
})
- giteaClient := newGiteaClient(ctx, installation.GiteaEndpoint, &oauth2.TokenResp{
+ giteaClient, err := newGiteaClient(ctx, installation.GiteaEndpoint, &oauth2.TokenResp{
AccessToken: installation.GiteaAccessToken,
})
+ if err != nil {
+ return fmt.Errorf("failed to create Gitea client: %v", err)
+ }
manifest, err := fetchManifest(giteaClient, event.Repository.Owner.Username, event.Repository.Name, event.HeadCommit.ID)
if err != nil {
@@ 180,7 180,12 @@ func main() {
handleDashboard := func(w http.ResponseWriter, r *http.Request) {
sessionData := sessionFromContext(r.Context()).Load()
- giteaClient := newGiteaClient(r.Context(), sessionData.GiteaEndpoint, sessionData.GiteaToken)
+ giteaClient, err := newGiteaClient(r.Context(), sessionData.GiteaEndpoint, sessionData.GiteaToken)
+ if err != nil {
+ http.Error(w, fmt.Sprintf("failed to create Gitea client: %v", err), http.StatusInternalServerError)
+ return
+ }
+
repos, _, err := giteaClient.ListMyRepos(gitea.ListReposOptions{})
if err != nil {
http.Error(w, fmt.Sprintf("failed to list Gitea repositories: %v", err), http.StatusInternalServerError)
@@ 275,7 280,12 @@ func main() {
}
}
- giteaClient := newGiteaClient(r.Context(), endpoint, tokenResp)
+ giteaClient, err := newGiteaClient(r.Context(), endpoint, tokenResp)
+ if err != nil {
+ http.Error(w, fmt.Sprintf("failed to create Gitea client: %v", err), http.StatusInternalServerError)
+ return
+ }
+
user, _, err := giteaClient.GetMyUserInfo()
if err != nil {
http.Error(w, fmt.Sprintf("failed to fetch Gitea profile: %v", err), http.StatusBadRequest)
@@ 299,7 309,11 @@ func main() {
}
sessionData := sessionFromContext(r.Context()).Load()
- giteaClient := newGiteaClient(r.Context(), sessionData.GiteaEndpoint, sessionData.GiteaToken)
+ giteaClient, err := newGiteaClient(r.Context(), sessionData.GiteaEndpoint, sessionData.GiteaToken)
+ if err != nil {
+ http.Error(w, fmt.Sprintf("failed to create Gitea client: %v", err), http.StatusInternalServerError)
+ return
+ }
repo, _, err := giteaClient.GetRepoByID(repoID)
if err != nil {
@@ 442,13 456,15 @@ func newSrhtClient(tokenResp *oauth2.TokenResp) *gqlclient.Client {
return gqlclient.New(buildssrhtEndpoint+"/query", httpClient)
}
-func newGiteaClient(ctx context.Context, endpoint string, tokenResp *oauth2.TokenResp) *gitea.Client {
+func newGiteaClient(ctx context.Context, endpoint string, tokenResp *oauth2.TokenResp) (*gitea.Client, error) {
httpClient := giteaAuth.NewHTTPClient(tokenResp)
giteaClient, err := gitea.NewClient(endpoint, gitea.SetHTTPClient(httpClient), gitea.SetContext(ctx))
if err != nil {
- panic(fmt.Errorf("failed to create Gitea client: %v", err))
+ // This can happen on invalid token, because the library checks the
+ // server version
+ return nil, err
}
- return giteaClient
+ return giteaClient, nil
}
func listHooks(giteaClient *gitea.Client, owner, repo, origin string) ([]*gitea.Hook, error) {
@@ 471,7 487,10 @@ func listHooks(giteaClient *gitea.Client, owner, repo, origin string) ([]*gitea.
func enableRepo(ctx context.Context, db *DB, owner, repo, origin string) error {
sessionData := sessionFromContext(ctx).Load()
- giteaClient := newGiteaClient(ctx, sessionData.GiteaEndpoint, sessionData.GiteaToken)
+ giteaClient, err := newGiteaClient(ctx, sessionData.GiteaEndpoint, sessionData.GiteaToken)
+ if err != nil {
+ return fmt.Errorf("failed to create Gitea client: %v", err)
+ }
installation := &Installation{
SrhtUsername: sessionData.SrhtUsername,
@@ 484,7 503,7 @@ func enableRepo(ctx context.Context, db *DB, owner, repo, origin string) error {
return fmt.Errorf("failed to store installation into DB: %v", err)
}
- _, _, err := giteaClient.CreateRepoHook(owner, repo, gitea.CreateHookOption{
+ _, _, err = giteaClient.CreateRepoHook(owner, repo, gitea.CreateHookOption{
Type: gitea.HookTypeGitea,
Config: map[string]string{
"url": origin + "/webhook?installation_token=" + installation.WebhookToken,
@@ 504,7 523,10 @@ func enableRepo(ctx context.Context, db *DB, owner, repo, origin string) error {
func disableRepo(ctx context.Context, owner, repo, origin string) error {
sessionData := sessionFromContext(ctx).Load()
- giteaClient := newGiteaClient(ctx, sessionData.GiteaEndpoint, sessionData.GiteaToken)
+ giteaClient, err := newGiteaClient(ctx, sessionData.GiteaEndpoint, sessionData.GiteaToken)
+ if err != nil {
+ return fmt.Errorf("failed to create Gitea client: %v", err)
+ }
hooks, err := listHooks(giteaClient, owner, repo, origin)
if err != nil {