File: server.go

package info (click to toggle)
gitlab-agent 16.11.5-1
  • links: PTS, VCS
  • area: contrib
  • in suites: experimental
  • size: 7,072 kB
  • sloc: makefile: 193; sh: 55; ruby: 3
file content (34 lines) | stat: -rw-r--r-- 1,069 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
package server

import (
	"context"

	"gitlab.com/gitlab-org/cluster-integration/gitlab-agent/v16/internal/module/modshared"
	"gitlab.com/gitlab-org/cluster-integration/gitlab-agent/v16/internal/module/notifications/rpc"
	"google.golang.org/grpc/codes"
	"google.golang.org/grpc/status"
	"google.golang.org/protobuf/proto"
)

type PublishEvent func(ctx context.Context, e proto.Message) error

func newServer(publishEvent PublishEvent) *server {
	return &server{
		publishEvent: publishEvent,
	}
}

type server struct {
	rpc.UnimplementedNotificationsServer
	publishEvent PublishEvent
}

func (s *server) GitPushEvent(ctx context.Context, req *rpc.GitPushEventRequest) (*rpc.GitPushEventResponse, error) {
	err := s.publishEvent(ctx, req.Event)
	if err != nil {
		rpcAPI := modshared.RPCAPIFromContext(ctx)
		rpcAPI.HandleProcessingError(rpcAPI.Log(), modshared.NoAgentID, "Failed to publish received git push event", err)
		return nil, status.Errorf(codes.Unavailable, "failed to publish received git push event: %v", err)
	}
	return &rpc.GitPushEventResponse{}, nil
}