Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 1 addition & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ FROM alpine AS builder
COPY . /go/src/matterbridge
RUN apk --no-cache add go git \
&& cd /go/src/matterbridge \
&& CGO_ENABLED=0 go build -mod vendor -ldflags "-X github.com/42wim/matterbridge/version.GitHash=$(git log --pretty=format:'%h' -n 1)" -o /bin/matterbridge
&& CGO_ENABLED=0 go build -mod vendor -ldflags "-X github.com/bibanon/matterbridge/version.GitHash=$(git log --pretty=format:'%h' -n 1)" -o /bin/matterbridge

FROM alpine
RUN apk --no-cache add ca-certificates mailcap
Expand Down
36 changes: 21 additions & 15 deletions bridge/matrix/helpers.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,11 @@ import (
"html"
"strings"
"time"
"context"

matrix "github.com/matterbridge/gomatrix"

"maunium.net/go/mautrix"
"maunium.net/go/mautrix/id"
)

func newMatrixUsername(username string) *matrixUsername {
Expand Down Expand Up @@ -65,8 +68,8 @@ func (b *Bmatrix) getDisplayName(mxid string) string {
}
b.RUnlock()

displayName, err := b.mc.GetDisplayName(mxid)
var httpError *matrix.HTTPError
displayName, err := b.mc.GetDisplayName(context.Background(), id.UserID(mxid))
var httpError *mautrix.HTTPError
if errors.As(err, &httpError) {
b.Log.Warnf("Couldn't retrieve the display name for %s", mxid)
}
Expand Down Expand Up @@ -125,7 +128,7 @@ func (b *Bmatrix) cacheDisplayName(mxid string, displayName string) string {
// handleError converts errors into httpError.
//nolint:exhaustivestruct
func handleError(err error) *httpError {
var mErr matrix.HTTPError
var mErr mautrix.HTTPError
if !errors.As(err, &mErr) {
return &httpError{
Err: "not a HTTPError",
Expand All @@ -134,10 +137,16 @@ func handleError(err error) *httpError {

var httpErr httpError

if err := json.Unmarshal(mErr.Contents, &httpErr); err != nil {
return &httpError{
Err: "unmarshal failed",
if mErr.RespError != nil {
httpErr.Errcode = mErr.RespError.ErrCode
httpErr.Err = mErr.RespError.Err
if retryAfter, ok := mErr.RespError.ExtraData["retry_after_ms"]; ok {
if ms, ok := retryAfter.(float64); ok {
httpErr.RetryAfterMs = int(ms)
}
}
} else {
httpErr.Err = "HTTP error without response body"
}

return &httpErr
Expand All @@ -161,20 +170,17 @@ func (b *Bmatrix) containsAttachment(content map[string]interface{}) bool {

// getAvatarURL returns the avatar URL of the specified sender.
func (b *Bmatrix) getAvatarURL(sender string) string {
urlPath := b.mc.BuildURL("profile", sender, "avatar_url")

s := struct {
AvatarURL string `json:"avatar_url"`
}{}

err := b.mc.MakeRequest("GET", urlPath, nil, &s)
avatarURL, err := b.mc.GetAvatarURL(context.Background(), id.UserID(sender))
if err != nil {
b.Log.Errorf("getAvatarURL failed: %s", err)
return ""
}

if avatarURL.IsEmpty() {
return ""
}

url := strings.ReplaceAll(s.AvatarURL, "mxc://", b.GetString("Server")+"/_matrix/media/r0/thumbnail/")
url := strings.ReplaceAll(avatarURL.String(), "mxc://", b.GetString("Server")+"/_matrix/media/r0/thumbnail/")
if url != "" {
url += "?width=37&height=37&method=crop"
}
Expand Down
Loading