Enver Bisevac 578dd13d8d [maint] eb/gitrpc refactor (#51)
* pull/push impl done

* Basic auth for harness

* gitrpc as top level package

* New ctor for package

* gitrpcserver instead of server2
2022-11-03 13:17:03 +01:00

69 lines
1.9 KiB
Go

// Copyright 2022 Harness Inc. All rights reserved.
// Use of this source code is governed by the Polyform Free Trial License
// that can be found in the LICENSE.md file for this repository.
package service
import (
"context"
"github.com/harness/gitness/gitrpc/rpc"
"github.com/rs/zerolog/log"
"google.golang.org/grpc/codes"
"google.golang.org/grpc/status"
)
func (s RepositoryService) ListCommits(request *rpc.ListCommitsRequest,
stream rpc.RepositoryService_ListCommitsServer) error {
repoPath := s.getFullPathForRepo(request.GetRepoUid())
gitCommits, totalCount, err := s.adapter.ListCommits(stream.Context(), repoPath, request.GetGitRef(),
int(request.GetPage()), int(request.GetPageSize()))
if err != nil {
return status.Errorf(codes.Internal, "failed to list commits: %v", err)
}
log.Trace().Msgf("git adapter returned %d commits (total: %d)", len(gitCommits), totalCount)
// send info about total number of commits first
err = stream.Send(&rpc.ListCommitsResponse{
Data: &rpc.ListCommitsResponse_Header{
Header: &rpc.ListCommitsResponseHeader{
TotalCount: totalCount,
},
},
})
if err != nil {
return status.Errorf(codes.Internal, "failed to send response header: %v", err)
}
for i := range gitCommits {
var commit *rpc.Commit
commit, err = mapGitCommit(&gitCommits[i])
if err != nil {
return status.Errorf(codes.Internal, "failed to map git commit: %v", err)
}
err = stream.Send(&rpc.ListCommitsResponse{
Data: &rpc.ListCommitsResponse_Commit{
Commit: commit,
},
})
if err != nil {
return status.Errorf(codes.Internal, "failed to send commit: %v", err)
}
}
return nil
}
func (s RepositoryService) getLatestCommit(ctx context.Context, repoPath string,
ref string, path string) (*rpc.Commit, error) {
gitCommit, err := s.adapter.GetLatestCommit(ctx, repoPath, ref, path)
if err != nil {
return nil, err
}
return mapGitCommit(gitCommit)
}