mirror of
https://github.com/mitchell/selfpass.git
synced 2025-12-13 21:07:22 +00:00
Implemented remaining transport layer methods; added logging middleware;
added Dockerfile; added gen cert Makefile cmds; added Redis repo
This commit is contained in:
parent
719a462048
commit
c289eecd54
20 changed files with 1977 additions and 143 deletions
|
|
@ -16,6 +16,13 @@ func decodeGetAllMetadataRequest(ctx context.Context, request interface{}) (inte
|
|||
}, nil
|
||||
}
|
||||
|
||||
func encodeDumpResponse(ctx context.Context, response interface{}) (interface{}, error) {
|
||||
r := response.(endpoints.DumpResponse)
|
||||
return protobuf.DumpResponse{
|
||||
Contents: r.Contents,
|
||||
}, nil
|
||||
}
|
||||
|
||||
func encodeMetadataStreamResponse(ctx context.Context, response interface{}) (interface{}, error) {
|
||||
r := response.(endpoints.MetadataStream)
|
||||
pbmdch := make(chan protobuf.Metadata, 1)
|
||||
|
|
@ -122,6 +129,6 @@ func decodeIdRequest(ctx context.Context, request interface{}) (interface{}, err
|
|||
}, nil
|
||||
}
|
||||
|
||||
func noOpEncode(ctx context.Context, request interface{}) (interface{}, error) {
|
||||
func noOp(ctx context.Context, request interface{}) (interface{}, error) {
|
||||
return nil, nil
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,7 +2,6 @@ package transport
|
|||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"strings"
|
||||
|
||||
"github.com/go-kit/kit/log"
|
||||
|
|
@ -15,7 +14,6 @@ import (
|
|||
"github.com/mitchell/selfpass/credentials/types"
|
||||
)
|
||||
|
||||
// NewGRPCServer TODO
|
||||
func NewGRPCServer(svc types.Service, logger log.Logger) GRPCServer {
|
||||
return GRPCServer{
|
||||
getAllMetadata: grpc.NewServer(
|
||||
|
|
@ -24,6 +22,12 @@ func NewGRPCServer(svc types.Service, logger log.Logger) GRPCServer {
|
|||
encodeMetadataStreamResponse,
|
||||
grpc.ServerErrorLogger(logger),
|
||||
),
|
||||
get: grpc.NewServer(
|
||||
endpoints.MakeGetEndpoint(svc),
|
||||
decodeIdRequest,
|
||||
encodeCredentialResponse,
|
||||
grpc.ServerErrorLogger(logger),
|
||||
),
|
||||
create: grpc.NewServer(
|
||||
endpoints.MakeCreateEndpoint(svc),
|
||||
decodeCredentialRequest,
|
||||
|
|
@ -39,25 +43,29 @@ func NewGRPCServer(svc types.Service, logger log.Logger) GRPCServer {
|
|||
delete: grpc.NewServer(
|
||||
endpoints.MakeDeleteEndpoint(svc),
|
||||
decodeIdRequest,
|
||||
noOpEncode,
|
||||
noOp,
|
||||
grpc.ServerErrorLogger(logger),
|
||||
),
|
||||
dump: grpc.NewServer(
|
||||
endpoints.MakeDumpEndpoint(svc),
|
||||
noOp,
|
||||
encodeDumpResponse,
|
||||
grpc.ServerErrorLogger(logger),
|
||||
),
|
||||
}
|
||||
}
|
||||
|
||||
// GRPCServer TODO
|
||||
type GRPCServer struct {
|
||||
getAllMetadata *grpc.Server
|
||||
get *grpc.Server
|
||||
create *grpc.Server
|
||||
update *grpc.Server
|
||||
delete *grpc.Server
|
||||
dump *grpc.Server
|
||||
}
|
||||
|
||||
// GetAllMetadata TODO
|
||||
func (s GRPCServer) GetAllMetadata(r *protobuf.GetAllMetadataRequest, srv protobuf.CredentialService_GetAllMetadataServer) (err error) {
|
||||
defer func() {
|
||||
err = handlerGRPCError(err)
|
||||
}()
|
||||
defer func() { err = handlerGRPCError(err) }()
|
||||
|
||||
var i interface{}
|
||||
ctx := srv.Context()
|
||||
|
|
@ -80,7 +88,6 @@ receiveLoop:
|
|||
if !ok {
|
||||
break receiveLoop
|
||||
}
|
||||
fmt.Println(md)
|
||||
if err = srv.Send(&md); err != nil {
|
||||
break receiveLoop
|
||||
}
|
||||
|
|
@ -90,14 +97,20 @@ receiveLoop:
|
|||
return err
|
||||
}
|
||||
|
||||
// Get TODO
|
||||
func (s GRPCServer) Get(context.Context, *protobuf.IdRequest) (*protobuf.Credential, error) {
|
||||
panic("implement me")
|
||||
}
|
||||
|
||||
// Create TODO
|
||||
func (s GRPCServer) Create(ctx context.Context, ci *protobuf.CredentialRequest) (*protobuf.Credential, error) {
|
||||
ctx, i, err := s.create.ServeGRPC(ctx, *ci)
|
||||
func (s GRPCServer) Get(ctx context.Context, r *protobuf.IdRequest) (*protobuf.Credential, error) {
|
||||
ctx, i, err := s.get.ServeGRPC(ctx, *r)
|
||||
if err != nil {
|
||||
err = handlerGRPCError(err)
|
||||
return nil, err
|
||||
}
|
||||
|
||||
c := &protobuf.Credential{}
|
||||
*c = i.(protobuf.Credential)
|
||||
return c, nil
|
||||
}
|
||||
|
||||
func (s GRPCServer) Create(ctx context.Context, r *protobuf.CredentialRequest) (*protobuf.Credential, error) {
|
||||
ctx, i, err := s.create.ServeGRPC(ctx, *r)
|
||||
if err != nil {
|
||||
err = handlerGRPCError(err)
|
||||
return nil, err
|
||||
|
|
@ -108,7 +121,6 @@ func (s GRPCServer) Create(ctx context.Context, ci *protobuf.CredentialRequest)
|
|||
return c, nil
|
||||
}
|
||||
|
||||
// Update TODO
|
||||
func (s GRPCServer) Update(ctx context.Context, r *protobuf.UpdateRequest) (*protobuf.Credential, error) {
|
||||
ctx, i, err := s.update.ServeGRPC(ctx, *r)
|
||||
if err != nil {
|
||||
|
|
@ -121,16 +133,28 @@ func (s GRPCServer) Update(ctx context.Context, r *protobuf.UpdateRequest) (*pro
|
|||
return c, nil
|
||||
}
|
||||
|
||||
// Delete TODO
|
||||
func (s GRPCServer) Delete(ctx context.Context, r *protobuf.IdRequest) (*protobuf.DeleteResponse, error) {
|
||||
ctx, _, err := s.delete.ServeGRPC(ctx, *r)
|
||||
if err != nil {
|
||||
err = handlerGRPCError(err)
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &protobuf.DeleteResponse{Success: true}, nil
|
||||
}
|
||||
|
||||
func (s GRPCServer) Dump(ctx context.Context, r *protobuf.EmptyRequest) (*protobuf.DumpResponse, error) {
|
||||
ctx, i, err := s.dump.ServeGRPC(ctx, *r)
|
||||
if err != nil {
|
||||
err = handlerGRPCError(err)
|
||||
return nil, err
|
||||
}
|
||||
|
||||
res := &protobuf.DumpResponse{}
|
||||
*res = i.(protobuf.DumpResponse)
|
||||
return res, nil
|
||||
}
|
||||
|
||||
func handlerGRPCError(err error) error {
|
||||
if err != nil {
|
||||
switch {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue