new room unencrypted in matrix, impl matrix recv
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,4 +2,5 @@ package message
|
||||
|
||||
type Sender interface {
|
||||
Send(string) error
|
||||
Receive() ([]string, error)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user