···
"tangled.sh/tangled.sh/core/workflow"
-
func (h *Handle) processPublicKey(ctx context.Context, did string, record tangled.PublicKey) error {
l := log.FromContext(ctx)
···
-
func (h *Handle) processKnotMember(ctx context.Context, did string, record tangled.KnotMember) error {
l := log.FromContext(ctx)
if record.Domain != h.c.Server.Hostname {
l.Error("domain mismatch", "domain", record.Domain, "expected", h.c.Server.Hostname)
···
-
func (h *Handle) processPull(ctx context.Context, did string, record tangled.RepoPull) error {
l := log.FromContext(ctx)
l = l.With("handler", "processPull")
···
Nsid: tangled.PipelineNSID,
EventJson: string(eventJson),
-
return h.db.InsertEvent(event, h.n)
// duplicated from add collaborator
-
func (h *Handle) processCollaborator(ctx context.Context, did string, record tangled.RepoCollaborator) error {
repoAt, err := syntax.ParseATURI(record.Repo)
···
didSlashRepo, _ := securejoin.SecureJoin(owner.DID.String(), repo.Name)
// check perms for this user
-
if ok, err := h.e.IsCollaboratorInviteAllowed(owner.DID.String(), rbac.ThisServer, didSlashRepo); !ok || err != nil {
return fmt.Errorf("insufficient permissions: %w", err)
···
func (h *Handle) processMessages(ctx context.Context, event *models.Event) error {
if event.Kind != models.EventKindCommit {
···
-
raw := json.RawMessage(event.Commit.Record)
switch event.Commit.Collection {
case tangled.PublicKeyNSID:
-
var record tangled.PublicKey
-
if err := json.Unmarshal(raw, &record); err != nil {
-
return fmt.Errorf("failed to unmarshal record: %w", err)
-
if err := h.processPublicKey(ctx, did, record); err != nil {
-
return fmt.Errorf("failed to process public key: %w", err)
case tangled.KnotMemberNSID:
-
var record tangled.KnotMember
-
if err := json.Unmarshal(raw, &record); err != nil {
-
return fmt.Errorf("failed to unmarshal record: %w", err)
-
if err := h.processKnotMember(ctx, did, record); err != nil {
-
return fmt.Errorf("failed to process knot member: %w", err)
case tangled.RepoPullNSID:
-
var record tangled.RepoPull
-
if err := json.Unmarshal(raw, &record); err != nil {
-
return fmt.Errorf("failed to unmarshal record: %w", err)
-
if err := h.processPull(ctx, did, record); err != nil {
-
return fmt.Errorf("failed to process knot member: %w", err)
case tangled.RepoCollaboratorNSID:
-
var record tangled.RepoCollaborator
-
if err := json.Unmarshal(raw, &record); err != nil {
-
return fmt.Errorf("failed to unmarshal record: %w", err)
-
if err := h.processCollaborator(ctx, did, record); err != nil {
-
return fmt.Errorf("failed to process knot member: %w", err)
···
"tangled.sh/tangled.sh/core/workflow"
+
func (h *Handle) processPublicKey(ctx context.Context, event *models.Event) error {
l := log.FromContext(ctx)
+
raw := json.RawMessage(event.Commit.Record)
+
var record tangled.PublicKey
+
if err := json.Unmarshal(raw, &record); err != nil {
+
return fmt.Errorf("failed to unmarshal record: %w", err)
···
+
func (h *Handle) processKnotMember(ctx context.Context, event *models.Event) error {
l := log.FromContext(ctx)
+
raw := json.RawMessage(event.Commit.Record)
+
var record tangled.KnotMember
+
if err := json.Unmarshal(raw, &record); err != nil {
+
return fmt.Errorf("failed to unmarshal record: %w", err)
if record.Domain != h.c.Server.Hostname {
l.Error("domain mismatch", "domain", record.Domain, "expected", h.c.Server.Hostname)
···
+
func (h *Handle) processPull(ctx context.Context, event *models.Event) error {
+
raw := json.RawMessage(event.Commit.Record)
+
var record tangled.RepoPull
+
if err := json.Unmarshal(raw, &record); err != nil {
+
return fmt.Errorf("failed to unmarshal record: %w", err)
l := log.FromContext(ctx)
l = l.With("handler", "processPull")
···
Nsid: tangled.PipelineNSID,
EventJson: string(eventJson),
+
return h.db.InsertEvent(ev, h.n)
// duplicated from add collaborator
+
func (h *Handle) processCollaborator(ctx context.Context, event *models.Event) error {
+
raw := json.RawMessage(event.Commit.Record)
+
var record tangled.RepoCollaborator
+
if err := json.Unmarshal(raw, &record); err != nil {
+
return fmt.Errorf("failed to unmarshal record: %w", err)
repoAt, err := syntax.ParseATURI(record.Repo)
···
didSlashRepo, _ := securejoin.SecureJoin(owner.DID.String(), repo.Name)
// check perms for this user
+
if ok, err := h.e.IsCollaboratorInviteAllowed(did, rbac.ThisServer, didSlashRepo); !ok || err != nil {
return fmt.Errorf("insufficient permissions: %w", err)
···
func (h *Handle) processMessages(ctx context.Context, event *models.Event) error {
if event.Kind != models.EventKindCommit {
···
switch event.Commit.Collection {
case tangled.PublicKeyNSID:
+
err = h.processPublicKey(ctx, event)
case tangled.KnotMemberNSID:
+
err = h.processKnotMember(ctx, event)
case tangled.RepoPullNSID:
+
err = h.processPull(ctx, event)
case tangled.RepoCollaboratorNSID:
+
err = h.processCollaborator(ctx, event)
+
h.l.Debug("failed to process event", "nsid", event.Commit.Collection, "err", err)