42wim/matterbridge

View on GitHub
bridge/xmpp/handler.go

Summary

Maintainability
A
0 mins
Test Coverage
package bxmpp

import (
    "github.com/42wim/matterbridge/bridge/config"
    "github.com/42wim/matterbridge/bridge/helper"
    "github.com/matterbridge/go-xmpp"
)

// handleDownloadAvatar downloads the avatar of userid from channel
// sends a EVENT_AVATAR_DOWNLOAD message to the gateway if successful.
// logs an error message if it fails
func (b *Bxmpp) handleDownloadAvatar(avatar xmpp.AvatarData) {
    rmsg := config.Message{
        Username: "system",
        Text:     "avatar",
        Channel:  b.parseChannel(avatar.From),
        Account:  b.Account,
        UserID:   avatar.From,
        Event:    config.EventAvatarDownload,
        Extra:    make(map[string][]interface{}),
    }
    if _, ok := b.avatarMap[avatar.From]; !ok {
        b.Log.Debugf("Avatar.From: %s", avatar.From)

        err := helper.HandleDownloadSize(b.Log, &rmsg, avatar.From+".png", int64(len(avatar.Data)), b.General)
        if err != nil {
            b.Log.Error(err)
            return
        }
        helper.HandleDownloadData(b.Log, &rmsg, avatar.From+".png", rmsg.Text, "", &avatar.Data, b.General)
        b.Log.Debugf("Avatar download complete")
        b.Remote <- rmsg
    }
}