56 lines
1.7 KiB
Go
56 lines
1.7 KiB
Go
// internal/nostr/events/encoder.go
|
|
package events
|
|
|
|
import (
|
|
"github.com/nbd-wtf/go-nostr"
|
|
"git.sovbit.dev/Enki/nostr-poster/internal/models"
|
|
"git.sovbit.dev/Enki/nostr-poster/internal/utils"
|
|
)
|
|
|
|
// EncodeEvent converts a nostr.Event to models.EventResponse with NIP-19 encoded IDs
|
|
func EncodeEvent(event *nostr.Event, publishedRelays []string) (*models.EventResponse, error) {
|
|
// Create the basic response
|
|
response := &models.EventResponse{
|
|
ID: event.ID,
|
|
Pubkey: event.PubKey,
|
|
CreatedAt: int64(event.CreatedAt),
|
|
Kind: event.Kind,
|
|
Content: event.Content,
|
|
Tags: convertTags(event.Tags), // Use a helper function to convert tags
|
|
Relays: publishedRelays,
|
|
}
|
|
|
|
// Encode the event ID as nevent (with relay info)
|
|
nevent, err := utils.EncodeEventAsNevent(event.ID, publishedRelays, event.PubKey)
|
|
if err == nil {
|
|
response.Nevent = nevent
|
|
}
|
|
|
|
// Encode the event ID as note (without relay info)
|
|
note, err := utils.EncodeEventAsNote(event.ID)
|
|
if err == nil {
|
|
response.Note = note
|
|
}
|
|
|
|
// Encode the pubkey as npub
|
|
npub, err := utils.EncodePubkey(event.PubKey)
|
|
if err == nil {
|
|
response.Npub = npub
|
|
}
|
|
|
|
return response, nil
|
|
}
|
|
|
|
// Helper function to convert nostr.Tags to [][]string
|
|
func convertTags(tags nostr.Tags) [][]string {
|
|
result := make([][]string, len(tags))
|
|
for i, tag := range tags {
|
|
// Create a new string slice for each tag
|
|
tagStrings := make([]string, len(tag))
|
|
for j, v := range tag {
|
|
tagStrings[j] = v
|
|
}
|
|
result[i] = tagStrings
|
|
}
|
|
return result
|
|
} |