underbbs/adapter/adapter.go

63 lines
1.4 KiB
Go
Raw Normal View History

2024-05-10 04:14:40 +00:00
package adapter
import (
. "forge.lightcrystal.systems/lightcrystal/underbbs/models"
2024-05-13 00:26:44 +00:00
nostr "github.com/nbd-wtf/go-nostr"
"strings"
"context"
2024-05-10 04:14:40 +00:00
)
type Adapter interface {
2024-05-13 00:26:44 +00:00
Init(Settings, chan Message) error
2024-05-10 04:14:40 +00:00
Subscribe(string) error
SendMessage(Message) error
Follow(Author) error
Unfollow(Author) error
GetFollowers() error
UpdateMetadata(interface{}) error
}
2024-05-13 00:26:44 +00:00
type NostrAdapter struct {
msgChan chan Message
nickname string
privkey string
relays []*nostr.Relay
}
func (self *NostrAdapter) Init(settings Settings, msgChan chan Message) error {
self.nickname = settings.Nickname
self.privkey = *settings.PrivKey
self.msgChan = msgChan
ctx := context.Background()
relays := strings.Split(*settings.Relays, ",")
for _, r := range relays {
pr := nostr.RelayConnect(ctx, strings.Trim(r)
if pr == nil {
return errors.New("Relay connection could not be completed")
}
self.relays = append(self.relays, pr)
}
return nil
}
func (self *NostrAdapter) Subscribe(filter string) error {
return nil
}
func (self *NostrAdapter) SendMessage(msg Message) error {
return nil
}
func (self *NostrAdapter) Follow(author Author) error {
return nil
}
func (self *NostrAdapter) Unfollow(author Author) error {
return nil
}
func (self *NostrAdapter) GetFollowers() error {
return nil
}
func (self *NostrAdapter) UpdateMetadata(data interface{}) error {
return nil
}