diff --git a/appview/state/pull.go b/appview/state/pull.go index 80810302..e949dfa6 100644 --- a/appview/state/pull.go +++ b/appview/state/pull.go @@ -639,25 +639,12 @@ func (s *State) NewPull(w http.ResponseWriter, r *http.Request) { return } - resp, err := us.Branches(f.OwnerDid(), f.RepoName) + result, err := us.Branches(f.OwnerDid(), f.RepoName) if err != nil { log.Println("failed to reach knotserver", err) return } - body, err := io.ReadAll(resp.Body) - if err != nil { - log.Printf("Error reading response body: %v", err) - return - } - - var result types.RepoBranchesResponse - err = json.Unmarshal(body, &result) - if err != nil { - log.Println("failed to parse response:", err) - return - } - s.pages.RepoNewPull(w, pages.RepoNewPullParams{ LoggedInUser: user, RepoInfo: f.RepoInfo(s, user), @@ -1162,25 +1149,12 @@ func (s *State) CompareBranchesFragment(w http.ResponseWriter, r *http.Request) return } - resp, err := us.Branches(f.OwnerDid(), f.RepoName) + result, err := us.Branches(f.OwnerDid(), f.RepoName) if err != nil { log.Println("failed to reach knotserver", err) return } - body, err := io.ReadAll(resp.Body) - if err != nil { - log.Printf("Error reading response body: %v", err) - return - } - - var result types.RepoBranchesResponse - err = json.Unmarshal(body, &result) - if err != nil { - log.Println("failed to parse response:", err) - return - } - branches := result.Branches sort.Slice(branches, func(i int, j int) bool { return branches[i].Commit.Committer.When.After(branches[j].Commit.Committer.When) @@ -1245,26 +1219,12 @@ func (s *State) CompareForksBranchesFragment(w http.ResponseWriter, r *http.Requ return } - sourceResp, err := sourceBranchesClient.Branches(user.Did, repo.Name) + sourceResult, err := sourceBranchesClient.Branches(user.Did, repo.Name) if err != nil { log.Println("failed to reach knotserver for source branches", err) return } - sourceBody, err := io.ReadAll(sourceResp.Body) - if err != nil { - log.Println("failed to read source response body", err) - return - } - defer sourceResp.Body.Close() - - var sourceResult types.RepoBranchesResponse - err = json.Unmarshal(sourceBody, &sourceResult) - if err != nil { - log.Println("failed to parse source branches response:", err) - return - } - targetBranchesClient, err := knotclient.NewUnsignedClient(f.Knot, s.config.Core.Dev) if err != nil { log.Printf("failed to create unsigned client for target knot %s", f.Knot) @@ -1272,26 +1232,12 @@ func (s *State) CompareForksBranchesFragment(w http.ResponseWriter, r *http.Requ return } - targetResp, err := targetBranchesClient.Branches(f.OwnerDid(), f.RepoName) + targetResult, err := targetBranchesClient.Branches(f.OwnerDid(), f.RepoName) if err != nil { log.Println("failed to reach knotserver for target branches", err) return } - targetBody, err := io.ReadAll(targetResp.Body) - if err != nil { - log.Println("failed to read target response body", err) - return - } - defer targetResp.Body.Close() - - var targetResult types.RepoBranchesResponse - err = json.Unmarshal(targetBody, &targetResult) - if err != nil { - log.Println("failed to parse target branches response:", err) - return - } - sourceBranches := sourceResult.Branches sort.Slice(sourceBranches, func(i int, j int) bool { return sourceBranches[i].Commit.Committer.When.After(sourceBranches[j].Commit.Committer.When) diff --git a/appview/state/repo.go b/appview/state/repo.go index 28c2065e..069ad5aa 100644 --- a/appview/state/repo.go +++ b/appview/state/repo.go @@ -179,25 +179,12 @@ func getForkInfo( return nil, err } - resp, err := us.Branches(repoInfo.Source.Did, repoInfo.Source.Name) + result, err := us.Branches(repoInfo.Source.Did, repoInfo.Source.Name) if err != nil { log.Println("failed to reach knotserver", err) return nil, err } - body, err := io.ReadAll(resp.Body) - if err != nil { - log.Printf("Error reading forkResponse forkBody: %v", err) - return nil, err - } - - var result types.RepoBranchesResponse - err = json.Unmarshal(body, &result) - if err != nil { - log.Println("failed to parse forkResponse:", err) - return nil, err - } - if !slices.ContainsFunc(result.Branches, func(branch types.Branch) bool { return branch.Name == f.Ref }) { @@ -563,25 +550,12 @@ func (s *State) RepoBranches(w http.ResponseWriter, r *http.Request) { return } - resp, err := us.Branches(f.OwnerDid(), f.RepoName) + result, err := us.Branches(f.OwnerDid(), f.RepoName) if err != nil { log.Println("failed to reach knotserver", err) return } - body, err := io.ReadAll(resp.Body) - if err != nil { - log.Printf("Error reading response body: %v", err) - return - } - - var result types.RepoBranchesResponse - err = json.Unmarshal(body, &result) - if err != nil { - log.Println("failed to parse response:", err) - return - } - slices.SortFunc(result.Branches, func(a, b types.Branch) int { if a.IsDefault { return -1 @@ -603,7 +577,7 @@ func (s *State) RepoBranches(w http.ResponseWriter, r *http.Request) { s.pages.RepoBranches(w, pages.RepoBranchesParams{ LoggedInUser: user, RepoInfo: f.RepoInfo(s, user), - RepoBranchesResponse: result, + RepoBranchesResponse: *result, }) return } @@ -980,23 +954,11 @@ func (s *State) RepoSettings(w http.ResponseWriter, r *http.Request) { return } - resp, err := us.Branches(f.OwnerDid(), f.RepoName) + result, err := us.Branches(f.OwnerDid(), f.RepoName) if err != nil { log.Println("failed to reach knotserver", err) return } - defer resp.Body.Close() - - body, err := io.ReadAll(resp.Body) - if err != nil { - log.Printf("Error reading response body: %v", err) - } - - var result types.RepoBranchesResponse - err = json.Unmarshal(body, &result) - if err != nil { - log.Println("failed to parse response:", err) - } s.pages.RepoSettings(w, pages.RepoSettingsParams{ LoggedInUser: user, @@ -1136,26 +1098,13 @@ func (f *FullyResolvedRepo) RepoInfo(s *State, u *oauth.User) repoinfo.RepoInfo if err != nil { log.Printf("failed to create unsigned client for %s: %v", knot, err) } else { - resp, err := us.Branches(f.OwnerDid(), f.RepoName) + result, err := us.Branches(f.OwnerDid(), f.RepoName) if err != nil { log.Printf("failed to get branches for %s/%s: %v", f.OwnerDid(), f.RepoName, err) - } else { - defer resp.Body.Close() - body, err := io.ReadAll(resp.Body) - if err != nil { - log.Printf("error reading branch response body: %v", err) - } else { - var branchesResp types.RepoBranchesResponse - if err := json.Unmarshal(body, &branchesResp); err != nil { - log.Printf("error parsing branch response: %v", err) - } else { - disableFork = false - } + } - if len(branchesResp.Branches) == 0 { - disableFork = true - } - } + if len(result.Branches) == 0 { + disableFork = true } } diff --git a/knotclient/unsigned.go b/knotclient/unsigned.go index a09363e0..9a67e7ce 100644 --- a/knotclient/unsigned.go +++ b/knotclient/unsigned.go @@ -112,7 +112,7 @@ func (us *UnsignedClient) Log(ownerDid, repoName, ref string, page int) (*types. return do[types.RepoLogResponse](us, req) } -func (us *UnsignedClient) Branches(ownerDid, repoName string) (*http.Response, error) { +func (us *UnsignedClient) Branches(ownerDid, repoName string) (*types.RepoBranchesResponse, error) { const ( Method = "GET" ) @@ -124,7 +124,7 @@ func (us *UnsignedClient) Branches(ownerDid, repoName string) (*http.Response, e return nil, err } - return us.client.Do(req) + return do[types.RepoBranchesResponse](us, req) } func (us *UnsignedClient) Tags(ownerDid, repoName string) (*types.RepoTagsResponse, error) {