Support receiving attachments from msteams
parent
795a8705c3
commit
8eb6ed5639
@ -0,0 +1,46 @@
|
||||
package bmsteams
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/42wim/matterbridge/bridge/config"
|
||||
"github.com/42wim/matterbridge/bridge/helper"
|
||||
)
|
||||
|
||||
func (b *Bmsteams) findFile(weburl string) (string, error) {
|
||||
itemRB, err := b.gc.GetDriveItemByURL(b.ctx, weburl)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
itemRB.Workbook().Worksheets()
|
||||
b.gc.Workbooks()
|
||||
item, err := itemRB.Request().Get(b.ctx)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
if url, ok := item.GetAdditionalData("@microsoft.graph.downloadUrl"); ok {
|
||||
return url.(string), nil
|
||||
}
|
||||
return "", nil
|
||||
}
|
||||
|
||||
// handleDownloadFile handles file download
|
||||
func (b *Bmsteams) handleDownloadFile(rmsg *config.Message, filename, weburl string) error {
|
||||
realURL, err := b.findFile(weburl)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
// Actually download the file.
|
||||
data, err := helper.DownloadFile(realURL)
|
||||
if err != nil {
|
||||
return fmt.Errorf("download %s failed %#v", weburl, err)
|
||||
}
|
||||
|
||||
// If a comment is attached to the file(s) it is in the 'Text' field of the teams messge event
|
||||
// and should be added as comment to only one of the files. We reset the 'Text' field to ensure
|
||||
// that the comment is not duplicated.
|
||||
comment := rmsg.Text
|
||||
rmsg.Text = ""
|
||||
helper.HandleDownloadData(b.Log, rmsg, filename, comment, weburl, data, b.General)
|
||||
return nil
|
||||
}
|
Loading…
Reference in New Issue