Skip to content

Commit

Permalink
Init delete event and audio (#7)
Browse files Browse the repository at this point in the history
  • Loading branch information
sithumonline authored Jul 17, 2023
1 parent 2dc41d9 commit 68c60bf
Show file tree
Hide file tree
Showing 3 changed files with 51 additions and 4 deletions.
8 changes: 8 additions & 0 deletions peer/bridge/bridge.go
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,14 @@ func (t *BridgeService) Ql(ctx context.Context, argType ql.BridgeArgs, replyType
replyType.Data = b
log.InfofWithContext(ctx, "Sending a queryEvents reply")
return nil
case "deleteEvent":
var d nostr.Event
err := json.Unmarshal(call.Body, &d)
if err != nil {
return err
}
log.InfofWithContext(ctx, "Received a deleteEvent call, event: %s", d.ID)
return t.relay.Storage().DeleteEvent(d.ID, d.PubKey)
default:
log.InfofWithContext(ctx, "Received a call, method: %s", call.Method)
return errors.New("method not found")
Expand Down
21 changes: 21 additions & 0 deletions relayer/delete-event.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package relayer

import (
"context"
"fmt"

"github.com/libp2p/go-libp2p/core/host"
"github.com/nbd-wtf/go-nostr"
"github.com/sithumonline/demedia-nostr/relayer/ql"
"go.opentelemetry.io/otel/trace"
)

func DeleteEvent(relay Relay, evt nostr.Event, host host.Host, ctx context.Context, span trace.Span) error {
store := relay.Storage()
address := store.GetPeer(evt.PubKey)
_, sandErr := ql.QlCall(host, ctx, evt, address, "BridgeService", "Ql", "deleteEvent", span)
if sandErr != nil {
return fmt.Errorf("error: failed to delete: %s", sandErr.Error())
}
return nil
}
26 changes: 22 additions & 4 deletions relayer/handlers.go
Original file line number Diff line number Diff line change
Expand Up @@ -163,7 +163,7 @@ func (s *Server) handleWebsocket(w http.ResponseWriter, r *http.Request) {
if ok, err := evt.CheckSignature(); err != nil {
ws.WriteJSON([]interface{}{"OK", evt.ID, false, "error: failed to verify signature"})
return
} else if !ok {
} else if !ok && evt.Kind != 5 {
ws.WriteJSON([]interface{}{"OK", evt.ID, false, "invalid: signature is invalid"})
return
}
Expand All @@ -176,15 +176,33 @@ func (s *Server) handleWebsocket(w http.ResponseWriter, r *http.Request) {
advancedDeleter.BeforeDelete(tag[1], evt.PubKey)
}

if err := store.DeleteEvent(tag[1], evt.PubKey); err != nil {
ws.WriteJSON([]interface{}{"OK", evt.ID, false, fmt.Sprintf("error: %s", err.Error())})
return
s.Log.InfofWithContext(ctx, "delete event id: %s, key: %s", tag[1], evt.PubKey)
if s.host != nil {
if err := DeleteEvent(s.relay, nostr.Event{ID: tag[1], PubKey: evt.PubKey}, s.host, ctx, span); err != nil {
ws.WriteJSON([]interface{}{"OK", evt.ID, false, fmt.Sprintf("error: %s", err.Error())})
return
}
} else {
if err := store.DeleteEvent(tag[1], evt.PubKey); err != nil {
ws.WriteJSON([]interface{}{"OK", evt.ID, false, fmt.Sprintf("error: %s", err.Error())})
return
}
}

if advancedDeleter != nil {
advancedDeleter.AfterDelete(tag[1], evt.PubKey)
}
}
if tag[0] == "audio" && s.ipfs != nil {
urlChunks := strings.Split(tag[1], "/")
if len(urlChunks) == 5 {
s.Log.InfofWithContext(ctx, "delete cid: %s", urlChunks[4])
if err = s.ipfs.DeleteFile(urlChunks[4]); err != nil {
ws.WriteJSON([]interface{}{"OK", evt.ID, false, fmt.Sprintf("error: %s", err.Error())})
return
}
}
}
}
return
}
Expand Down

0 comments on commit 68c60bf

Please sign in to comment.