mirror of
https://github.com/42wim/matterbridge.git
synced 2024-11-22 02:32:02 -08:00
47 lines
1.2 KiB
Go
47 lines
1.2 KiB
Go
|
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
|
||
|
}
|