new room unencrypted in matrix, impl matrix recv

This commit is contained in:
Bel LaPointe
2022-01-11 09:23:15 -05:00
parent 550ce91a7f
commit aef22d0a8b
7 changed files with 87 additions and 14 deletions

View File

@@ -13,6 +13,7 @@ type Matrix struct {
username string
token string
room string
client string
}
func NewMatrix() Matrix {
@@ -23,19 +24,49 @@ func NewMatrix() Matrix {
token: conf.Token,
room: conf.Room,
mock: conf.Mock,
client: conf.Client,
}
}
func (m Matrix) client() (*gomatrix.Client, error) {
func (m Matrix) getclient() (*gomatrix.Client, error) {
return gomatrix.NewClient(m.homeserver, m.username, m.token)
}
func (m Matrix) Receive() ([]string, error) {
if m.mock {
log.Printf("matrix.Receive()")
return []string{"FL, GA, NC"}, nil
}
c, err := m.getclient()
if err != nil {
return nil, err
}
messages := make([]string, 0)
result, err := c.Messages(m.room, "", "", 'b', 50)
for _, event := range result.Chunk {
if event.Sender != m.client {
continue
}
switch event.Type {
case "m.room.message":
b, ok := event.Body()
if ok {
messages = append(messages, b)
}
}
}
if err != nil {
return nil, err
}
return messages, nil
}
func (m Matrix) Send(text string) error {
if m.mock {
log.Printf("matrix.Send(%s)", text)
return nil
}
c, err := m.client()
c, err := m.getclient()
if err != nil {
return err
}

View File

@@ -30,3 +30,28 @@ func TestMatrixSend(t *testing.T) {
t.Fatal(err)
}
}
func TestMatrixReceive(t *testing.T) {
if len(os.Getenv("INTEGRATION")) == 0 {
t.Skip("$INTEGRATION not set")
}
var c config.Config
b, err := ioutil.ReadFile("../config.json")
if err != nil {
t.Fatal(err)
}
if err := json.Unmarshal(b, &c); err != nil {
t.Fatal(err)
}
var sender Sender = Matrix{
homeserver: c.Message.Matrix.Homeserver,
username: c.Message.Matrix.Username,
token: c.Message.Matrix.Token,
room: c.Message.Matrix.Room,
}
if msgs, err := sender.Receive(); err != nil {
t.Fatal(err)
} else {
t.Logf("%+v", msgs)
}
}

View File

@@ -2,4 +2,5 @@ package message
type Sender interface {
Send(string) error
Receive() ([]string, error)
}