all repos — underbbs @ 84d72140fb2b7352e19c5e69ae3753b6e8c2d4e5

decentralized social media client

adapter/adapter.go (raw)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
package adapter

import (
	. "forge.lightcrystal.systems/lightcrystal/underbbs/models"
	nostr "github.com/nbd-wtf/go-nostr"
	"strings"
	"context"
)

type Adapter interface {
	Init(Settings, chan Message) error
	Subscribe(string) error
	SendMessage(Message) error
	Follow(Author) error
	Unfollow(Author) error
	GetFollowers() error
	UpdateMetadata(interface{}) error
}

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
}