Skip to content

Commit

Permalink
chore: logs internal error in handler
Browse files Browse the repository at this point in the history
  • Loading branch information
rahmatrhd committed Nov 29, 2023
1 parent 336b288 commit 77683a6
Show file tree
Hide file tree
Showing 9 changed files with 76 additions and 71 deletions.
12 changes: 6 additions & 6 deletions api/handler/v1beta1/activity.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,12 @@ func (s *GRPCServer) GetActivity(ctx context.Context, req *guardianv1beta1.GetAc
if errors.Is(err, activity.ErrNotFound) {
return nil, status.Errorf(codes.NotFound, "activity not found")
}
return nil, status.Errorf(codes.Internal, "failed to get activity: %v", err)
return nil, s.internalError(ctx, "failed to get activity: %v", err)
}

activityProto, err := s.adapter.ToActivityProto(a)
if err != nil {
return nil, status.Errorf(codes.Internal, "failed to parse proto: %v", err)
return nil, s.internalError(ctx, "failed to parse proto: %v", err)
}

return &guardianv1beta1.GetActivityResponse{
Expand All @@ -48,14 +48,14 @@ func (s *GRPCServer) ListActivities(ctx context.Context, req *guardianv1beta1.Li

activities, err := s.activityService.Find(ctx, filter)
if err != nil {
return nil, status.Errorf(codes.Internal, "failed to list activities: %v", err)
return nil, s.internalError(ctx, "failed to list activities: %v", err)
}

activityProtos := []*guardianv1beta1.ProviderActivity{}
for _, a := range activities {
activityProto, err := s.adapter.ToActivityProto(a)
if err != nil {
return nil, status.Errorf(codes.Internal, "failed to parse proto: %v", err)
return nil, s.internalError(ctx, "failed to parse proto: %v", err)
}
activityProtos = append(activityProtos, activityProto)
}
Expand All @@ -82,14 +82,14 @@ func (s *GRPCServer) ImportActivities(ctx context.Context, req *guardianv1beta1.

activities, err := s.activityService.Import(ctx, filter)
if err != nil {
return nil, status.Errorf(codes.Internal, "failed to import activities: %v", err)
return nil, s.internalError(ctx, "failed to import activities: %v", err)
}

activityProtos := []*guardianv1beta1.ProviderActivity{}
for _, a := range activities {
activity, err := s.adapter.ToActivityProto(a)
if err != nil {
return nil, status.Errorf(codes.Internal, "failed to parse proto: %v", err)
return nil, s.internalError(ctx, "failed to parse proto: %v", err)
}

activityProtos = append(activityProtos, activity)
Expand Down
20 changes: 10 additions & 10 deletions api/handler/v1beta1/appeal.go
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@ func (s *GRPCServer) CreateAppeal(ctx context.Context, req *guardianv1beta1.Crea

appeals, err := s.adapter.FromCreateAppealProto(req, authenticatedUser)
if err != nil {
return nil, status.Errorf(codes.Internal, "cannot deserialize payload: %v", err)
return nil, s.internalError(ctx, "cannot deserialize payload: %v", err)
}

if err := s.appealService.Create(ctx, appeals); err != nil {
Expand Down Expand Up @@ -127,15 +127,15 @@ func (s *GRPCServer) CreateAppeal(ctx context.Context, req *guardianv1beta1.Crea
errors.Is(err, domain.ErrInvalidApproverValue):
return nil, status.Errorf(codes.FailedPrecondition, err.Error())
default:
return nil, status.Errorf(codes.Internal, "failed to create appeal(s): %v", err)
return nil, s.internalError(ctx, "failed to create appeal(s): %v", err)
}
}

appealProtos := []*guardianv1beta1.Appeal{}
for _, appeal := range appeals {
appealProto, err := s.adapter.ToAppealProto(appeal)
if err != nil {
return nil, status.Errorf(codes.Internal, "failed to parse appeal: %v", err)
return nil, s.internalError(ctx, "failed to parse appeal: %v", err)
}
appealProtos = append(appealProtos, appealProto)
}
Expand All @@ -153,7 +153,7 @@ func (s *GRPCServer) GetAppeal(ctx context.Context, req *guardianv1beta1.GetAppe
if errors.As(err, new(appeal.InvalidError)) || errors.Is(err, appeal.ErrAppealIDEmptyParam) {
return nil, status.Errorf(codes.InvalidArgument, err.Error())
}
return nil, status.Errorf(codes.Internal, "failed to retrieve appeal: %v", err)
return nil, s.internalError(ctx, "failed to retrieve appeal: %v", err)
}

if a == nil {
Expand All @@ -162,7 +162,7 @@ func (s *GRPCServer) GetAppeal(ctx context.Context, req *guardianv1beta1.GetAppe

appealProto, err := s.adapter.ToAppealProto(a)
if err != nil {
return nil, status.Errorf(codes.Internal, "failed to parse appeal: %v", err)
return nil, s.internalError(ctx, "failed to parse appeal: %v", err)
}

return &guardianv1beta1.GetAppealResponse{
Expand All @@ -188,13 +188,13 @@ func (s *GRPCServer) CancelAppeal(ctx context.Context, req *guardianv1beta1.Canc
appeal.ErrAppealStatusUnrecognized:
return nil, status.Errorf(codes.InvalidArgument, "unable to process the request: %v", err)
default:
return nil, status.Errorf(codes.Internal, "failed to cancel appeal: %v", err)
return nil, s.internalError(ctx, "failed to cancel appeal: %v", err)
}
}

appealProto, err := s.adapter.ToAppealProto(a)
if err != nil {
return nil, status.Errorf(codes.Internal, "failed to parse appeal: %v", err)
return nil, s.internalError(ctx, "failed to parse appeal: %v", err)
}

return &guardianv1beta1.CancelAppealResponse{
Expand All @@ -210,15 +210,15 @@ func (s *GRPCServer) listAppeals(ctx context.Context, filters *domain.ListAppeal
eg.Go(func() error {
appealRecords, err := s.appealService.Find(ctx, filters)
if err != nil {
return status.Errorf(codes.Internal, "failed to get appeal list: %s", err)
return s.internalError(ctx, "failed to get appeal list: %s", err)
}
appeals = appealRecords
return nil
})
eg.Go(func() error {
totalRecord, err := s.appealService.GetAppealsTotalCount(ctx, filters)
if err != nil {
return status.Errorf(codes.Internal, "failed to get appeal total count: %s", err)
return s.internalError(ctx, "failed to get appeal total count: %s", err)
}
total = totalRecord
return nil
Expand All @@ -232,7 +232,7 @@ func (s *GRPCServer) listAppeals(ctx context.Context, filters *domain.ListAppeal
for _, a := range appeals {
appealProto, err := s.adapter.ToAppealProto(a)
if err != nil {
return nil, 0, status.Errorf(codes.Internal, "failed to parse appeal: %s", err)
return nil, 0, s.internalError(ctx, "failed to parse appeal: %s", err)
}
appealProtos = append(appealProtos, appealProto)
}
Expand Down
18 changes: 9 additions & 9 deletions api/handler/v1beta1/approval.go
Original file line number Diff line number Diff line change
Expand Up @@ -95,13 +95,13 @@ func (s *GRPCServer) UpdateApproval(ctx context.Context, req *guardianv1beta1.Up
case appeal.ErrApprovalNotFound:
return nil, status.Errorf(codes.NotFound, "approval not found: %v", id)
default:
return nil, status.Errorf(codes.Internal, "failed to update approval: %v", err)
return nil, s.internalError(ctx, "failed to update approval: %v", err)
}
}

appealProto, err := s.adapter.ToAppealProto(a)
if err != nil {
return nil, status.Errorf(codes.Internal, "failed to parse appeal: %v", err)
return nil, s.internalError(ctx, "failed to parse appeal: %v", err)
}

return &guardianv1beta1.UpdateApprovalResponse{
Expand All @@ -121,12 +121,12 @@ func (s *GRPCServer) AddApprover(ctx context.Context, req *guardianv1beta1.AddAp
errors.Is(err, appeal.ErrApprovalNotFound):
return nil, status.Errorf(codes.NotFound, "resource not found: %s", err)
case err != nil:
return nil, status.Errorf(codes.Internal, "failed to add approver: %s", err)
return nil, s.internalError(ctx, "failed to add approver: %s", err)
}

appealProto, err := s.adapter.ToAppealProto(a)
if err != nil {
return nil, status.Errorf(codes.Internal, "failed to parse appeal: %s", err)
return nil, s.internalError(ctx, "failed to parse appeal: %s", err)
}

return &guardianv1beta1.AddApproverResponse{
Expand All @@ -146,12 +146,12 @@ func (s *GRPCServer) DeleteApprover(ctx context.Context, req *guardianv1beta1.De
errors.Is(err, appeal.ErrApprovalNotFound):
return nil, status.Errorf(codes.NotFound, "resource not found: %s", err)
case err != nil:
return nil, status.Errorf(codes.Internal, "failed to delete approver: %s", err)
return nil, s.internalError(ctx, "failed to delete approver: %s", err)
}

appealProto, err := s.adapter.ToAppealProto(a)
if err != nil {
return nil, status.Errorf(codes.Internal, "failed to parse appeal: %s", err)
return nil, s.internalError(ctx, "failed to parse appeal: %s", err)
}

return &guardianv1beta1.DeleteApproverResponse{
Expand All @@ -167,7 +167,7 @@ func (s *GRPCServer) listApprovals(ctx context.Context, filters *domain.ListAppr
eg.Go(func() error {
approvalRecords, err := s.approvalService.ListApprovals(ctx, filters)
if err != nil {
return status.Errorf(codes.Internal, "failed to get approval list: %s", err)
return s.internalError(ctx, "failed to get approval list: %s", err)
}
approvals = approvalRecords
return nil
Expand All @@ -176,7 +176,7 @@ func (s *GRPCServer) listApprovals(ctx context.Context, filters *domain.ListAppr
eg.Go(func() error {
totalRecord, err := s.approvalService.GetApprovalsTotalCount(ctx, filters)
if err != nil {
return status.Errorf(codes.Internal, "failed to get approval list: %v", err)
return s.internalError(ctx, "failed to get approval list: %v", err)
}
total = totalRecord
return nil
Expand All @@ -190,7 +190,7 @@ func (s *GRPCServer) listApprovals(ctx context.Context, filters *domain.ListAppr
for _, a := range approvals {
approvalProto, err := s.adapter.ToApprovalProto(a)
if err != nil {
return nil, 0, status.Errorf(codes.Internal, "failed to parse approval: %v: %s", a.ID, err)
return nil, 0, s.internalError(ctx, "failed to parse approval: %v: %s", a.ID, err)
}
approvalProtos = append(approvalProtos, approvalProto)
}
Expand Down
28 changes: 14 additions & 14 deletions api/handler/v1beta1/grant.go
Original file line number Diff line number Diff line change
Expand Up @@ -82,12 +82,12 @@ func (s *GRPCServer) GetGrant(ctx context.Context, req *guardianv1beta1.GetGrant
if errors.Is(err, grant.ErrGrantNotFound) {
return nil, status.Errorf(codes.NotFound, "grant %q not found: %v", req.GetId(), err)
}
return nil, status.Errorf(codes.Internal, "failed to get grant details: %v", err)
return nil, s.internalError(ctx, "failed to get grant details: %v", err)
}

grantProto, err := s.adapter.ToGrantProto(a)
if err != nil {
return nil, status.Errorf(codes.Internal, "failed to parse grant: %v", err)
return nil, s.internalError(ctx, "failed to parse grant: %v", err)
}

return &guardianv1beta1.GetGrantResponse{
Expand All @@ -106,12 +106,12 @@ func (s *GRPCServer) RevokeGrant(ctx context.Context, req *guardianv1beta1.Revok
if errors.Is(err, grant.ErrGrantNotFound) {
return nil, status.Error(codes.NotFound, "grant not found")
}
return nil, status.Errorf(codes.Internal, "failed to revoke grant: %v", err)
return nil, s.internalError(ctx, "failed to revoke grant: %v", err)
}

grantProto, err := s.adapter.ToGrantProto(a)
if err != nil {
return nil, status.Errorf(codes.Internal, "failed to parse grant: %v", err)
return nil, s.internalError(ctx, "failed to parse grant: %v", err)
}

return &guardianv1beta1.RevokeGrantResponse{
Expand All @@ -131,13 +131,13 @@ func (s *GRPCServer) UpdateGrant(ctx context.Context, req *guardianv1beta1.Updat
case errors.Is(err, grant.ErrEmptyOwner):
return nil, status.Error(codes.InvalidArgument, err.Error())
default:
return nil, status.Errorf(codes.Internal, "failed to update grant: %v", err)
return nil, s.internalError(ctx, "failed to update grant: %v", err)
}
}

grantProto, err := s.adapter.ToGrantProto(g)
if err != nil {
return nil, status.Errorf(codes.Internal, "failed to parse grant: %v", err)
return nil, s.internalError(ctx, "failed to parse grant: %v", err)
}

return &guardianv1beta1.UpdateGrantResponse{
Expand All @@ -160,14 +160,14 @@ func (s *GRPCServer) RevokeGrants(ctx context.Context, req *guardianv1beta1.Revo
}
grants, err := s.grantService.BulkRevoke(ctx, filter, actor, req.GetReason())
if err != nil {
return nil, status.Error(codes.Internal, "failed to revoke grants in bulk")
return nil, s.internalError(ctx, "failed to revoke grants in bulk")
}

var grantsProto []*guardianv1beta1.Grant
for _, a := range grants {
grantProto, err := s.adapter.ToGrantProto(a)
if err != nil {
return nil, status.Errorf(codes.Internal, "failed to parse grant: %v", err)
return nil, s.internalError(ctx, "failed to parse grant: %v", err)
}
grantsProto = append(grantsProto, grantProto)
}
Expand All @@ -185,15 +185,15 @@ func (s *GRPCServer) listGrants(ctx context.Context, filter domain.ListGrantsFil
eg.Go(func() error {
grantRecords, err := s.grantService.List(ctx, filter)
if err != nil {
return status.Errorf(codes.Internal, "failed to get grant list: %s", err)
return s.internalError(ctx, "failed to get grant list: %s", err)
}
grants = grantRecords
return nil
})
eg.Go(func() error {
totalRecord, err := s.grantService.GetGrantsTotalCount(ctx, filter)
if err != nil {
return status.Errorf(codes.Internal, "failed to get grant total count: %s", err)
return s.internalError(ctx, "failed to get grant total count: %s", err)
}
total = totalRecord
return nil
Expand All @@ -207,7 +207,7 @@ func (s *GRPCServer) listGrants(ctx context.Context, filter domain.ListGrantsFil
for i, a := range grants {
grantProto, err := s.adapter.ToGrantProto(&grants[i])
if err != nil {
return nil, 0, status.Errorf(codes.Internal, "failed to parse grant %q: %v", a.ID, err)
return nil, 0, s.internalError(ctx, "failed to parse grant %q: %v", a.ID, err)
}
grantProtos = append(grantProtos, grantProto)
}
Expand All @@ -230,14 +230,14 @@ func (s *GRPCServer) ImportGrantsFromProvider(ctx context.Context, req *guardian
return nil, status.Error(codes.InvalidArgument, err.Error())
}

return nil, status.Errorf(codes.Internal, "failed to import access: %v", err)
return nil, s.internalError(ctx, "failed to import access: %v", err)
}

grantsProto := []*guardianv1beta1.Grant{}
for _, g := range grants {
grantProto, err := s.adapter.ToGrantProto(g)
if err != nil {
return nil, status.Errorf(codes.Internal, "failed to parse appeal proto %q: %v", g.ID, err)
return nil, s.internalError(ctx, "failed to parse appeal proto %q: %v", g.ID, err)
}
grantsProto = append(grantsProto, grantProto)
}
Expand All @@ -255,7 +255,7 @@ func (s *GRPCServer) ListUserRoles(ctx context.Context, req *guardianv1beta1.Lis

roles, err := s.grantService.ListUserRoles(ctx, user)
if err != nil {
return nil, status.Error(codes.Internal, "Internal Error")
return nil, s.internalError(ctx, "Internal Error")
}
return &guardianv1beta1.ListUserRolesResponse{
Roles: roles,
Expand Down
6 changes: 6 additions & 0 deletions api/handler/v1beta1/grpc.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package v1beta1

import (
"context"
"fmt"
"strings"

"github.com/goto/guardian/pkg/log"
Expand Down Expand Up @@ -169,3 +170,8 @@ func (s *GRPCServer) getUser(ctx context.Context) (string, error) {

return authenticatedEmail, nil
}

func (s *GRPCServer) internalError(ctx context.Context, format string, a ...interface{}) error {
s.logger.Error(ctx, fmt.Sprintf(format, a...))
return status.Errorf(codes.Internal, format, a...)
}
Loading

0 comments on commit 77683a6

Please sign in to comment.