diff --git a/add-event.go b/adding.go similarity index 64% rename from add-event.go rename to adding.go index 1c3eeba..6dfd439 100644 --- a/add-event.go +++ b/adding.go @@ -9,6 +9,7 @@ import ( "github.com/nbd-wtf/go-nostr" ) +// AddEvent sends an event through then normal add pipeline, as if it was received from a websocket. func (rl *Relay) AddEvent(ctx context.Context, evt *nostr.Event) error { if evt == nil { return errors.New("error: event is nil") @@ -82,46 +83,3 @@ func (rl *Relay) AddEvent(ctx context.Context, evt *nostr.Event) error { return nil } - -func (rl *Relay) handleDeleteRequest(ctx context.Context, evt *nostr.Event) error { - // event deletion -- nip09 - for _, tag := range evt.Tags { - if len(tag) >= 2 && tag[0] == "e" { - // first we fetch the event - for _, query := range rl.QueryEvents { - ch, err := query(ctx, nostr.Filter{IDs: []string{tag[1]}}) - if err != nil { - continue - } - target := <-ch - if target == nil { - continue - } - // got the event, now check if the user can delete it - acceptDeletion := target.PubKey == evt.PubKey - var msg string - if acceptDeletion == false { - msg = "you are not the author of this event" - } - // but if we have a function to overwrite this outcome, use that instead - for _, odo := range rl.OverwriteDeletionOutcome { - acceptDeletion, msg = odo(ctx, target, evt) - } - if acceptDeletion { - // delete it - for _, del := range rl.DeleteEvent { - del(ctx, target) - } - } else { - // fail and stop here - return fmt.Errorf("blocked: %s", msg) - } - - // don't try to query this same event again - break - } - } - } - - return nil -} diff --git a/broadcasting.go b/broadcasting.go new file mode 100644 index 0000000..d435b3d --- /dev/null +++ b/broadcasting.go @@ -0,0 +1,11 @@ +package khatru + +import ( + "github.com/nbd-wtf/go-nostr" +) + +// BroadcastEvent emits an event to all listeners whose filters' match, skipping all filters and actions +// it also doesn't attempt to store the event or trigger any reactions or callbacks +func (rl *Relay) BroadcastEvent(evt *nostr.Event) { + notifyListeners(evt) +} diff --git a/deleting.go b/deleting.go new file mode 100644 index 0000000..ade3ecc --- /dev/null +++ b/deleting.go @@ -0,0 +1,51 @@ +package khatru + +import ( + "context" + "fmt" + + "github.com/nbd-wtf/go-nostr" +) + +func (rl *Relay) handleDeleteRequest(ctx context.Context, evt *nostr.Event) error { + // event deletion -- nip09 + for _, tag := range evt.Tags { + if len(tag) >= 2 && tag[0] == "e" { + // first we fetch the event + for _, query := range rl.QueryEvents { + ch, err := query(ctx, nostr.Filter{IDs: []string{tag[1]}}) + if err != nil { + continue + } + target := <-ch + if target == nil { + continue + } + // got the event, now check if the user can delete it + acceptDeletion := target.PubKey == evt.PubKey + var msg string + if acceptDeletion == false { + msg = "you are not the author of this event" + } + // but if we have a function to overwrite this outcome, use that instead + for _, odo := range rl.OverwriteDeletionOutcome { + acceptDeletion, msg = odo(ctx, target, evt) + } + if acceptDeletion { + // delete it + for _, del := range rl.DeleteEvent { + del(ctx, target) + } + } else { + // fail and stop here + return fmt.Errorf("blocked: %s", msg) + } + + // don't try to query this same event again + break + } + } + } + + return nil +} diff --git a/serve-req.go b/responding.go similarity index 100% rename from serve-req.go rename to responding.go