3
0
Files
corteza/federation/rest/node.go
2020-12-13 18:53:18 +01:00

62 lines
1.6 KiB
Go

package rest
import (
"context"
"errors"
"github.com/cortezaproject/corteza-server/federation/rest/request"
"github.com/cortezaproject/corteza-server/federation/service"
"github.com/cortezaproject/corteza-server/federation/types"
)
type (
Node struct {
svcNode service.NodeService
}
)
var (
ErrInvalidNodeCreateParams = errors.New("create node: missing or invalid parameters")
ErrorIdentityMissingToken = errors.New("identity: token missing")
)
func (Node) New() *Node {
return &Node{
svcNode: service.DefaultNode,
}
}
func (ctrl Node) Create(ctx context.Context, r *request.NodeCreate) (interface{}, error) {
if r.NodeURI == "" && (r.Domain == "" || r.Name == "") {
return nil, ErrInvalidNodeCreateParams
}
if r.NodeURI != "" {
return ctrl.svcNode.CreateFromURI(ctx, r.NodeURI, r.MyDomain)
} else if r.Domain != "" && r.Name != "" {
n := &types.Node{}
n.Domain = r.Domain
n.Name = r.Name
n.Status = types.NodeStatusPending
return ctrl.svcNode.Create(ctx, n, r.MyDomain)
}
return nil, ErrInvalidNodeCreateParams
}
func (ctrl Node) Pair(ctx context.Context, r *request.NodePair) (interface{}, error) {
err := ctrl.svcNode.Pair(ctx, r.NodeID)
return nil, err
}
func (ctrl Node) HandshakeConfirm(ctx context.Context, r *request.NodeHandshakeConfirm) (interface{}, error) {
err := ctrl.svcNode.HandshakeConfirm(ctx, r.NodeID)
return nil, err
}
func (ctrl Node) HandshakeComplete(ctx context.Context, r *request.NodeHandshakeComplete) (interface{}, error) {
err := ctrl.svcNode.HandshakeComplete(ctx, r.NodeID, r.TokenA)
return nil, err
}