Skip to content
Snippets Groups Projects
Commit 9ca365e5 authored by Anton Sattarov's avatar Anton Sattarov
Browse files

sip manager API

parent 4c594f5e
No related merge requests found
package extension
import (
"context"
"git.perx.ru/perxis/perxis-go/pkg/errors"
"git.perx.ru/perxis/perxis-go/pkg/operation"
pb "git.perx.ru/perxis/perxis-go/proto/extensions"
"google.golang.org/grpc"
)
type ManagerServer struct {
manager Manager
pb.UnimplementedExtensionServiceServer
}
func NewManagerServer(manager Manager) *ManagerServer {
return &ManagerServer{manager: manager}
}
func RegisterManagerServer(grpcSrv *grpc.Server, srv *ManagerServer) {
pb.RegisterExtensionServiceServer(grpcSrv, srv)
}
func (s *ManagerServer) Install(ctx context.Context, req *InstallRequest) (*operation.Proto, error) {
op, err := s.manager.InstallOperation(ctx, req)
if err != nil {
return nil, err
}
return op.Proto(), nil
}
func (s *ManagerServer) Uninstall(ctx context.Context, req *UninstallRequest) (*operation.Proto, error) {
op, err := s.manager.UninstallOperation(ctx, req)
if err != nil {
return nil, err
}
return op.Proto(), nil
}
func (s *ManagerServer) Check(ctx context.Context, req *CheckRequest) (*operation.Proto, error) {
op, err := s.manager.CheckOperation(ctx, req)
if err != nil {
return nil, err
}
return op.Proto(), nil
}
func (s *ManagerServer) Action(ctx context.Context, in *pb.ActionRequest) (*pb.ActionResponse, error) {
actionURL, err := NewActionURL(in.Action)
if err != nil {
return nil, ErrInvalidAction
}
ext := actionURL.Extension()
if ext == "" {
ext = in.Extension
}
if ext == "" {
return nil, ErrInvalidAction
}
out, err := s.manager.Action(ctx, ActionRequestFromPB(in))
if out == nil {
out = &ActionResponse{}
}
if err != nil {
out.State = ResponseError
out.Error = err.Error()
out.Msg += errors.GetDetail(err)
}
return ActionResponseToPB(out), nil
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment