mirror of
https://github.com/hrfee/jfa-go.git
synced 2026-01-18 16:47:42 +01:00
proxy: use wherever http.Client is, update mautrix
Added a new common.ConfigurableTransport interface which mediabrowser, ombi, jellyseer, discord, telegram and matrix (i.e. ThirdPartService/ContactMethodLinker) now all implement. proxies are bound to them in main.go, Email is still a special case (but from the previous commit, mailgun does use the proxy). mautrix/go has been updated, and context.TODO()s stuck everywhere since I still don't really comprehend why I should use them (FIXME literally).
This commit is contained in:
18
matrix.go
18
matrix.go
@@ -1,7 +1,9 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"net/http"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
@@ -87,6 +89,11 @@ func newMatrixDaemon(app *appContext) (d *MatrixDaemon, err error) {
|
||||
return
|
||||
}
|
||||
|
||||
// SetTransport sets the http.Transport to use for requests. Can be used to set a proxy.
|
||||
func (d *MatrixDaemon) SetTransport(t *http.Transport) {
|
||||
d.bot.Client.Transport = t
|
||||
}
|
||||
|
||||
func (d *MatrixDaemon) generateAccessToken(homeserver, username, password string) (string, error) {
|
||||
req := &mautrix.ReqLogin{
|
||||
Type: mautrix.AuthTypePassword,
|
||||
@@ -101,7 +108,7 @@ func (d *MatrixDaemon) generateAccessToken(homeserver, username, password string
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
resp, err := bot.Login(req)
|
||||
resp, err := bot.Login(context.TODO(), req)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
@@ -127,7 +134,7 @@ func (d *MatrixDaemon) Shutdown() {
|
||||
close(d.ShutdownChannel)
|
||||
}
|
||||
|
||||
func (d *MatrixDaemon) handleMessage(source mautrix.EventSource, evt *event.Event) {
|
||||
func (d *MatrixDaemon) handleMessage(ctx context.Context, evt *event.Event) {
|
||||
if evt.Timestamp < d.start {
|
||||
return
|
||||
}
|
||||
@@ -158,6 +165,7 @@ func (d *MatrixDaemon) commandLang(evt *event.Event, code, lang string) {
|
||||
list += fmt.Sprintf("%s: %s\n", c, d.app.storage.lang.Telegram[c].Meta.Name)
|
||||
}
|
||||
_, err := d.bot.SendText(
|
||||
context.TODO(),
|
||||
evt.RoomID,
|
||||
list,
|
||||
)
|
||||
@@ -178,7 +186,7 @@ func (d *MatrixDaemon) commandLang(evt *event.Event, code, lang string) {
|
||||
|
||||
func (d *MatrixDaemon) CreateRoom(userID string) (roomID id.RoomID, encrypted bool, err error) {
|
||||
var room *mautrix.RespCreateRoom
|
||||
room, err = d.bot.CreateRoom(&mautrix.ReqCreateRoom{
|
||||
room, err = d.bot.CreateRoom(context.TODO(), &mautrix.ReqCreateRoom{
|
||||
Visibility: "private",
|
||||
Invite: []id.UserID{id.UserID(userID)},
|
||||
Topic: d.app.config.Section("matrix").Key("topic").String(),
|
||||
@@ -229,13 +237,13 @@ func (d *MatrixDaemon) sendToRoom(content *event.MessageEventContent, roomID id.
|
||||
if encrypted, ok := d.isEncrypted[roomID]; ok && encrypted {
|
||||
err = SendEncrypted(d, content, roomID)
|
||||
} else {
|
||||
_, err = d.bot.SendMessageEvent(roomID, event.EventMessage, content, mautrix.ReqSendEvent{})
|
||||
_, err = d.bot.SendMessageEvent(context.TODO(), roomID, event.EventMessage, content, mautrix.ReqSendEvent{})
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func (d *MatrixDaemon) send(content *event.MessageEventContent, roomID id.RoomID) (err error) {
|
||||
_, err = d.bot.SendMessageEvent(roomID, event.EventMessage, content, mautrix.ReqSendEvent{})
|
||||
_, err = d.bot.SendMessageEvent(context.TODO(), roomID, event.EventMessage, content, mautrix.ReqSendEvent{})
|
||||
return
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user