feat: add support for file mimetypes and update attachment filename generation
This commit is contained in:
parent
d4915e864f
commit
16637c03c6
@ -227,7 +227,8 @@ class Whatsapp::IncomingMessageBaileysService < Whatsapp::IncomingMessageBaseSer
|
|||||||
filename = @raw_message.dig(:message, :documentMessage, :fileName)
|
filename = @raw_message.dig(:message, :documentMessage, :fileName)
|
||||||
return filename if filename.present?
|
return filename if filename.present?
|
||||||
|
|
||||||
"#{file_content_type}_#{message_id}_#{Time.current.strftime('%Y%m%d')}"
|
ext = ".#{message_mimetype.split(';').first.split('/').last}" if message_mimetype.present?
|
||||||
|
"#{file_content_type}_#{message_id}_#{Time.current.strftime('%Y%m%d')}#{ext}"
|
||||||
end
|
end
|
||||||
|
|
||||||
def message_content
|
def message_content
|
||||||
@ -247,6 +248,21 @@ class Whatsapp::IncomingMessageBaileysService < Whatsapp::IncomingMessageBaseSer
|
|||||||
@raw_message[:key][:id]
|
@raw_message[:key][:id]
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def message_mimetype
|
||||||
|
case message_type
|
||||||
|
when 'image'
|
||||||
|
@raw_message.dig(:message, :imageMessage, :mimetype)
|
||||||
|
when 'sticker'
|
||||||
|
@raw_message.dig(:message, :stickerMessage, :mimetype)
|
||||||
|
when 'video'
|
||||||
|
@raw_message.dig(:message, :videoMessage, :mimetype)
|
||||||
|
when 'audio'
|
||||||
|
@raw_message.dig(:message, :audioMessage, :mimetype)
|
||||||
|
when 'file'
|
||||||
|
@raw_message.dig(:message, :documentMessage, :mimetype)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def message_under_process?
|
def message_under_process?
|
||||||
key = format(Redis::RedisKeys::MESSAGE_SOURCE_KEY, id: message_id)
|
key = format(Redis::RedisKeys::MESSAGE_SOURCE_KEY, id: message_id)
|
||||||
Redis::Alfred.get(key)
|
Redis::Alfred.get(key)
|
||||||
|
|||||||
@ -445,7 +445,7 @@ describe Whatsapp::IncomingMessageBaileysService do
|
|||||||
let(:raw_message) do
|
let(:raw_message) do
|
||||||
{
|
{
|
||||||
key: { id: 'msg_123', remoteJid: '5511912345678@s.whatsapp.net', fromMe: false },
|
key: { id: 'msg_123', remoteJid: '5511912345678@s.whatsapp.net', fromMe: false },
|
||||||
message: { imageMessage: { caption: 'Hello from Baileys' } },
|
message: { imageMessage: { caption: 'Hello from Baileys', mimetype: 'image/png' } },
|
||||||
pushName: 'John Doe'
|
pushName: 'John Doe'
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
@ -487,7 +487,7 @@ describe Whatsapp::IncomingMessageBaileysService do
|
|||||||
expect(attachment.file).to be_present
|
expect(attachment.file).to be_present
|
||||||
expect(attachment.file_type).to eq('image')
|
expect(attachment.file_type).to eq('image')
|
||||||
|
|
||||||
expect(attachment.file.filename.to_s).to eq("image_msg_123_#{Time.current.strftime('%Y%m%d')}")
|
expect(attachment.file.filename.to_s).to eq("image_msg_123_#{Time.current.strftime('%Y%m%d')}.png")
|
||||||
expect(attachment.file.content_type).to eq('image/png')
|
expect(attachment.file.content_type).to eq('image/png')
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -496,7 +496,7 @@ describe Whatsapp::IncomingMessageBaileysService do
|
|||||||
let(:raw_message) do
|
let(:raw_message) do
|
||||||
{
|
{
|
||||||
key: { id: 'msg_123', remoteJid: '5511912345678@s.whatsapp.net', fromMe: false },
|
key: { id: 'msg_123', remoteJid: '5511912345678@s.whatsapp.net', fromMe: false },
|
||||||
message: { videoMessage: { caption: 'Hello from Baileys' } },
|
message: { videoMessage: { caption: 'Hello from Baileys', mimetype: 'video/mp4' } },
|
||||||
pushName: 'John Doe'
|
pushName: 'John Doe'
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
@ -538,7 +538,7 @@ describe Whatsapp::IncomingMessageBaileysService do
|
|||||||
expect(attachment.file).to be_present
|
expect(attachment.file).to be_present
|
||||||
expect(attachment.file_type).to eq('video')
|
expect(attachment.file_type).to eq('video')
|
||||||
|
|
||||||
expect(attachment.file.filename.to_s).to eq("video_msg_123_#{Time.current.strftime('%Y%m%d')}")
|
expect(attachment.file.filename.to_s).to eq("video_msg_123_#{Time.current.strftime('%Y%m%d')}.mp4")
|
||||||
expect(attachment.file.content_type).to eq('video/mp4')
|
expect(attachment.file.content_type).to eq('video/mp4')
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -588,7 +588,7 @@ describe Whatsapp::IncomingMessageBaileysService do
|
|||||||
let(:raw_message) do
|
let(:raw_message) do
|
||||||
{
|
{
|
||||||
key: { id: 'msg_123', remoteJid: '5511912345678@s.whatsapp.net', fromMe: false },
|
key: { id: 'msg_123', remoteJid: '5511912345678@s.whatsapp.net', fromMe: false },
|
||||||
message: { audioMessage: {} },
|
message: { audioMessage: { mimetype: 'audio/opus' } },
|
||||||
pushName: 'John Doe'
|
pushName: 'John Doe'
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
@ -621,7 +621,7 @@ describe Whatsapp::IncomingMessageBaileysService do
|
|||||||
expect(attachment.file_type).to eq('audio')
|
expect(attachment.file_type).to eq('audio')
|
||||||
expect(attachment.file).to be_present
|
expect(attachment.file).to be_present
|
||||||
|
|
||||||
expect(attachment.file.filename.to_s).to eq("audio_msg_123_#{Time.current.strftime('%Y%m%d')}")
|
expect(attachment.file.filename.to_s).to eq("audio_msg_123_#{Time.current.strftime('%Y%m%d')}.opus")
|
||||||
expect(attachment.file.content_type).to eq('audio/opus')
|
expect(attachment.file.content_type).to eq('audio/opus')
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -630,7 +630,7 @@ describe Whatsapp::IncomingMessageBaileysService do
|
|||||||
let(:raw_message) do
|
let(:raw_message) do
|
||||||
{
|
{
|
||||||
key: { id: 'msg_123', remoteJid: '5511912345678@s.whatsapp.net', fromMe: false },
|
key: { id: 'msg_123', remoteJid: '5511912345678@s.whatsapp.net', fromMe: false },
|
||||||
message: { stickerMessage: {} },
|
message: { stickerMessage: { mimetype: 'image/png' } },
|
||||||
pushName: 'John Doe'
|
pushName: 'John Doe'
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
@ -663,7 +663,7 @@ describe Whatsapp::IncomingMessageBaileysService do
|
|||||||
expect(attachment.file_type).to eq('image')
|
expect(attachment.file_type).to eq('image')
|
||||||
expect(attachment.file).to be_present
|
expect(attachment.file).to be_present
|
||||||
|
|
||||||
expect(attachment.file.filename.to_s).to eq("image_msg_123_#{Time.current.strftime('%Y%m%d')}")
|
expect(attachment.file.filename.to_s).to eq("image_msg_123_#{Time.current.strftime('%Y%m%d')}.png")
|
||||||
expect(attachment.file.content_type).to eq('image/png')
|
expect(attachment.file.content_type).to eq('image/png')
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user