media: default to JPEG MIME-type for direct-downloaded images
Signed-off-by: Sumner Evans <sumner.evans@automattic.com>
This commit is contained in:
@@ -93,34 +93,41 @@ func (tc *TelegramConnector) Download(ctx context.Context, mediaID networkid.Med
|
|||||||
}
|
}
|
||||||
|
|
||||||
var msgMedia tg.MessageMediaClass
|
var msgMedia tg.MessageMediaClass
|
||||||
var found bool
|
if len(messages.GetMessages()) != 1 {
|
||||||
for _, message := range messages.GetMessages() {
|
return nil, fmt.Errorf("wrong number of messages retrieved %d", len(messages.GetMessages()))
|
||||||
if msg, ok := message.(*tg.Message); ok && msg.ID == int(info.MessageID) {
|
} else if msg, ok := messages.GetMessages()[0].(*tg.Message); !ok {
|
||||||
msgMedia = msg.Media
|
return nil, fmt.Errorf("message was of the wrong type %s", messages.GetMessages()[0].TypeName())
|
||||||
found = true
|
} else if msg.ID != int(info.MessageID) {
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if !found {
|
|
||||||
return nil, fmt.Errorf("no media found with ID %d", info.MessageID)
|
return nil, fmt.Errorf("no media found with ID %d", info.MessageID)
|
||||||
|
} else {
|
||||||
|
msgMedia = msg.Media
|
||||||
}
|
}
|
||||||
|
|
||||||
transferer := media.NewTransferer(client.client.API())
|
transferer := media.NewTransferer(client.client.API())
|
||||||
var readyTransferer *media.ReadyTransferer
|
var readyTransferer *media.ReadyTransferer
|
||||||
switch msgMedia := msgMedia.(type) {
|
switch msgMedia := msgMedia.(type) {
|
||||||
case *tg.MessageMediaPhoto:
|
case *tg.MessageMediaPhoto:
|
||||||
|
log.Debug().
|
||||||
|
Int64("photo_id", msgMedia.Photo.GetID()).
|
||||||
|
Msg("downloading photo")
|
||||||
readyTransferer = transferer.WithPhoto(msgMedia.Photo)
|
readyTransferer = transferer.WithPhoto(msgMedia.Photo)
|
||||||
case *tg.MessageMediaDocument:
|
case *tg.MessageMediaDocument:
|
||||||
document, ok := msgMedia.Document.(*tg.Document)
|
document, ok := msgMedia.Document.(*tg.Document)
|
||||||
if !ok {
|
if !ok {
|
||||||
return nil, fmt.Errorf("unknown document type %T", msgMedia.Document)
|
return nil, fmt.Errorf("unknown document type %T", msgMedia.Document)
|
||||||
}
|
}
|
||||||
|
var isSticker bool
|
||||||
for _, attr := range document.GetAttributes() {
|
for _, attr := range document.GetAttributes() {
|
||||||
if attr.TypeID() == tg.DocumentAttributeStickerTypeID {
|
if attr.TypeID() == tg.DocumentAttributeStickerTypeID {
|
||||||
transferer = transferer.WithStickerConfig(tc.Config.AnimatedSticker)
|
transferer = transferer.WithStickerConfig(tc.Config.AnimatedSticker)
|
||||||
|
isSticker = true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
log.Debug().
|
||||||
|
Int64("document_id", msgMedia.Document.GetID()).
|
||||||
|
Bool("is_sticker", isSticker).
|
||||||
|
Msg("downloading photo")
|
||||||
readyTransferer = transferer.WithDocument(msgMedia.Document, info.Thumbnail)
|
readyTransferer = transferer.WithDocument(msgMedia.Document, info.Thumbnail)
|
||||||
default:
|
default:
|
||||||
return nil, fmt.Errorf("unhandled media type %T", msgMedia)
|
return nil, fmt.Errorf("unhandled media type %T", msgMedia)
|
||||||
@@ -132,6 +139,11 @@ func (tc *TelegramConnector) Download(ctx context.Context, mediaID networkid.Med
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
log.Debug().
|
||||||
|
Str("mime_type", fileInfo.MimeType).
|
||||||
|
Int("size", fileInfo.Size).
|
||||||
|
Msg("Downloaded media successfully")
|
||||||
|
|
||||||
return &mediaproxy.GetMediaResponseData{
|
return &mediaproxy.GetMediaResponseData{
|
||||||
Reader: io.NopCloser(bytes.NewBuffer(data)),
|
Reader: io.NopCloser(bytes.NewBuffer(data)),
|
||||||
ContentType: fileInfo.MimeType,
|
ContentType: fileInfo.MimeType,
|
||||||
|
|||||||
@@ -362,5 +362,8 @@ func (t *ReadyTransferer) DirectDownloadURL(ctx context.Context, loggedInUserID
|
|||||||
return "", nil, err
|
return "", nil, err
|
||||||
}
|
}
|
||||||
mxc, err := portal.Bridge.Matrix.GenerateContentURI(ctx, mediaID)
|
mxc, err := portal.Bridge.Matrix.GenerateContentURI(ctx, mediaID)
|
||||||
|
if t.inner.fileInfo.MimeType == "" {
|
||||||
|
t.inner.fileInfo.MimeType = "image/jpeg"
|
||||||
|
}
|
||||||
return mxc, &t.inner.fileInfo, err
|
return mxc, &t.inner.fileInfo, err
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user