mailersend-ruby 3.1.0 → 3.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.envrc +2 -0
- data/.github/workflows/main.yml +1 -1
- data/.github/workflows/publish_gem.yml +1 -1
- data/.gitignore +2 -1
- data/CHANGELOG.md +9 -0
- data/README.md +423 -0
- data/fixtures/email/email_send_template_language.yml +56 -0
- data/fixtures/emails/emails_list_emails.yml +35 -0
- data/fixtures/emails/emails_list_emails_empty_page.yml +35 -0
- data/fixtures/emails/emails_single_email.yml +35 -0
- data/fixtures/whatsapp/whatsapp_send.yml +47 -0
- data/fixtures/whatsapp/whatsapp_send_multiple_recipients.yml +47 -0
- data/fixtures/whatsapp/whatsapp_send_personalization.yml +47 -0
- data/fixtures/whatsapp_activities/whatsapp_activities_list.yml +43 -0
- data/fixtures/whatsapp_inbound_messages/whatsapp_inbound_messages_get.yml +43 -0
- data/fixtures/whatsapp_inbound_messages/whatsapp_inbound_messages_list.yml +43 -0
- data/fixtures/whatsapp_items/whatsapp_items_get.yml +43 -0
- data/fixtures/whatsapp_items/whatsapp_items_list.yml +43 -0
- data/fixtures/whatsapp_messages/whatsapp_messages_get.yml +43 -0
- data/fixtures/whatsapp_messages/whatsapp_messages_list.yml +43 -0
- data/fixtures/whatsapp_recipient/whatsapp_recipient_get.yml +43 -0
- data/fixtures/whatsapp_recipient/whatsapp_recipient_list.yml +43 -0
- data/fixtures/whatsapp_templates/whatsapp_templates_get.yml +43 -0
- data/fixtures/whatsapp_templates/whatsapp_templates_list.yml +43 -0
- data/flake.lock +27 -0
- data/flake.nix +25 -0
- data/lefthook.yml +14 -0
- data/lib/mailersend/email/email.rb +10 -0
- data/lib/mailersend/emails/emails.rb +44 -0
- data/lib/mailersend/version.rb +1 -1
- data/lib/mailersend/whatsapp/whatsapp.rb +47 -0
- data/lib/mailersend/whatsapp_activities/whatsapp_activities.rb +45 -0
- data/lib/mailersend/whatsapp_inbound_messages/whatsapp_inbound_messages.rb +47 -0
- data/lib/mailersend/whatsapp_items/whatsapp_items.rb +57 -0
- data/lib/mailersend/whatsapp_messages/whatsapp_messages.rb +47 -0
- data/lib/mailersend/whatsapp_recipient/whatsapp_recipient.rb +38 -0
- data/lib/mailersend/whatsapp_templates/whatsapp_templates.rb +44 -0
- data/lib/mailersend.rb +8 -0
- data/spec/email_rspec.rb +15 -0
- data/spec/emails_rspec.rb +175 -0
- data/spec/whatsapp_activities_rspec.rb +38 -0
- data/spec/whatsapp_inbound_messages_rspec.rb +49 -0
- data/spec/whatsapp_items_rspec.rb +52 -0
- data/spec/whatsapp_messages_rspec.rb +50 -0
- data/spec/whatsapp_recipient_rspec.rb +40 -0
- data/spec/whatsapp_rspec.rb +65 -0
- data/spec/whatsapp_templates_rspec.rb +48 -0
- metadata +39 -1
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
require 'rspec'
|
|
2
|
+
require 'vcr'
|
|
3
|
+
require 'json'
|
|
4
|
+
|
|
5
|
+
VCR.configure do |config|
|
|
6
|
+
config.cassette_library_dir = './fixtures'
|
|
7
|
+
config.hook_into :webmock
|
|
8
|
+
config.filter_sensitive_data('<AUTH>') do |interaction|
|
|
9
|
+
interaction.request.headers['Authorization'][0]
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
RSpec.describe Mailersend::WhatsAppActivities do
|
|
14
|
+
let(:client) { Mailersend::Client.new(API_TOKEN) }
|
|
15
|
+
let(:whatsapp_activities) { Mailersend::WhatsAppActivities.new(client) }
|
|
16
|
+
|
|
17
|
+
it 'returns a list of WhatsApp activities' do
|
|
18
|
+
VCR.use_cassette('whatsapp_activities/whatsapp_activities_list', match_requests_on: %i[method host path query]) do
|
|
19
|
+
response = whatsapp_activities.list(
|
|
20
|
+
whatsapp_item_id: '67f91abe2202f3705540234a',
|
|
21
|
+
whatsapp_message_id: '67f91abd69f79df391e9d78d',
|
|
22
|
+
recipient: '48600000001',
|
|
23
|
+
type: %w[delivered read],
|
|
24
|
+
date_from: 1_791_936_000,
|
|
25
|
+
date_to: 1_792_022_400,
|
|
26
|
+
page: 1,
|
|
27
|
+
limit: 25
|
|
28
|
+
)
|
|
29
|
+
parsed_response = JSON.parse(response.body)
|
|
30
|
+
|
|
31
|
+
expect(response.status).to eq(200)
|
|
32
|
+
expect(parsed_response['data']).to be_an(Array)
|
|
33
|
+
expect(parsed_response['data'].map { |activity| activity['type'] }).to eq(%w[read delivered])
|
|
34
|
+
expect(parsed_response['links']['last']).to be_nil
|
|
35
|
+
expect(parsed_response['meta']).not_to have_key('total')
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
require 'rspec'
|
|
2
|
+
require 'vcr'
|
|
3
|
+
require 'json'
|
|
4
|
+
|
|
5
|
+
VCR.configure do |config|
|
|
6
|
+
config.cassette_library_dir = './fixtures'
|
|
7
|
+
config.hook_into :webmock
|
|
8
|
+
config.filter_sensitive_data('<AUTH>') do |interaction|
|
|
9
|
+
interaction.request.headers['Authorization'][0]
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
RSpec.describe Mailersend::WhatsAppInboundMessages do
|
|
14
|
+
let(:client) { Mailersend::Client.new(API_TOKEN) }
|
|
15
|
+
let(:whatsapp_inbound_messages) { Mailersend::WhatsAppInboundMessages.new(client) }
|
|
16
|
+
|
|
17
|
+
it 'returns a list of WhatsApp inbound messages' do
|
|
18
|
+
VCR.use_cassette('whatsapp_inbound_messages/whatsapp_inbound_messages_list', match_requests_on: %i[method host path query]) do
|
|
19
|
+
response = whatsapp_inbound_messages.list(
|
|
20
|
+
whatsapp_account_id: '3enl6x27wmrxrl2v',
|
|
21
|
+
from: '48600000001',
|
|
22
|
+
type: %w[text image],
|
|
23
|
+
date_from: 1_790_000_000,
|
|
24
|
+
date_to: 1_790_086_400,
|
|
25
|
+
page: 1,
|
|
26
|
+
limit: 25
|
|
27
|
+
)
|
|
28
|
+
parsed_response = JSON.parse(response.body)
|
|
29
|
+
|
|
30
|
+
expect(response.status).to eq(200)
|
|
31
|
+
expect(parsed_response['data']).to be_an(Array)
|
|
32
|
+
expect(parsed_response['data'][0]['meta']['body']).to eq('Hello, I would like to check my order status.')
|
|
33
|
+
expect(parsed_response['data'][1]).not_to have_key('context')
|
|
34
|
+
expect(parsed_response['links']['last']).to be_nil
|
|
35
|
+
expect(parsed_response['meta']).not_to have_key('total')
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
it 'returns a single WhatsApp inbound message' do
|
|
40
|
+
VCR.use_cassette('whatsapp_inbound_messages/whatsapp_inbound_messages_get') do
|
|
41
|
+
response = whatsapp_inbound_messages.get(whatsapp_inbound_message_id: '62f114a3165fe0d8db0288d1')
|
|
42
|
+
parsed_response = JSON.parse(response.body)
|
|
43
|
+
|
|
44
|
+
expect(response.status).to eq(200)
|
|
45
|
+
expect(parsed_response['data']['meta']['reply_type']).to eq('list_reply')
|
|
46
|
+
expect(parsed_response['data']['context']['message_id']).to start_with('wamid.')
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
require 'rspec'
|
|
2
|
+
require 'vcr'
|
|
3
|
+
require 'json'
|
|
4
|
+
|
|
5
|
+
VCR.configure do |config|
|
|
6
|
+
config.cassette_library_dir = './fixtures'
|
|
7
|
+
config.hook_into :webmock
|
|
8
|
+
config.filter_sensitive_data('<AUTH>') do |interaction|
|
|
9
|
+
interaction.request.headers['Authorization'][0]
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
RSpec.describe Mailersend::WhatsAppItems do
|
|
14
|
+
let(:client) { Mailersend::Client.new(API_TOKEN) }
|
|
15
|
+
let(:whatsapp_items) { Mailersend::WhatsAppItems.new(client) }
|
|
16
|
+
|
|
17
|
+
it 'returns a list of WhatsApp items' do
|
|
18
|
+
VCR.use_cassette('whatsapp_items/whatsapp_items_list', match_requests_on: %i[method host path query]) do
|
|
19
|
+
response = whatsapp_items.list(
|
|
20
|
+
recipient: '48600000002',
|
|
21
|
+
whatsapp_message_id: '67f91abd69f79df391e9d78d',
|
|
22
|
+
status: %w[failed read],
|
|
23
|
+
whatsapp_account_id: '3enl6x27wmrxrl2v',
|
|
24
|
+
from: '15550001234',
|
|
25
|
+
template_id: '23zxk54v6gjy6v7m',
|
|
26
|
+
date_from: 1_791_936_000,
|
|
27
|
+
date_to: 1_792_022_400,
|
|
28
|
+
page: 1,
|
|
29
|
+
limit: 25
|
|
30
|
+
)
|
|
31
|
+
parsed_response = JSON.parse(response.body)
|
|
32
|
+
|
|
33
|
+
expect(response.status).to eq(200)
|
|
34
|
+
expect(parsed_response['data']).to be_an(Array)
|
|
35
|
+
expect(parsed_response['data'][0]['status']).to eq('failed')
|
|
36
|
+
expect(parsed_response['data'][0]['error_code']).to eq(131_026)
|
|
37
|
+
expect(parsed_response['links']['last']).to be_nil
|
|
38
|
+
expect(parsed_response['meta']).not_to have_key('total')
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
it 'returns a single WhatsApp item' do
|
|
43
|
+
VCR.use_cassette('whatsapp_items/whatsapp_items_get') do
|
|
44
|
+
response = whatsapp_items.get(whatsapp_item_id: '67f91abe2202f3705540234a')
|
|
45
|
+
parsed_response = JSON.parse(response.body)
|
|
46
|
+
|
|
47
|
+
expect(response.status).to eq(200)
|
|
48
|
+
expect(parsed_response['data']['recipient']['id']).to eq('67f91abe2202f37055402301')
|
|
49
|
+
expect(parsed_response['data']['activity'].map { |activity| activity['type'] }).to eq(%w[queued sent delivered read])
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
end
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
require 'rspec'
|
|
2
|
+
require 'vcr'
|
|
3
|
+
require 'json'
|
|
4
|
+
|
|
5
|
+
VCR.configure do |config|
|
|
6
|
+
config.cassette_library_dir = './fixtures'
|
|
7
|
+
config.hook_into :webmock
|
|
8
|
+
config.filter_sensitive_data('<AUTH>') do |interaction|
|
|
9
|
+
interaction.request.headers['Authorization'][0]
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
RSpec.describe Mailersend::WhatsAppMessages do
|
|
14
|
+
let(:client) { Mailersend::Client.new(API_TOKEN) }
|
|
15
|
+
let(:whatsapp_messages) { Mailersend::WhatsAppMessages.new(client) }
|
|
16
|
+
|
|
17
|
+
it 'returns a list of WhatsApp messages' do
|
|
18
|
+
VCR.use_cassette('whatsapp_messages/whatsapp_messages_list', match_requests_on: %i[method host path query]) do
|
|
19
|
+
response = whatsapp_messages.list(
|
|
20
|
+
whatsapp_account_id: '3enl6x27wmrxrl2v',
|
|
21
|
+
from: '15550001234',
|
|
22
|
+
template_id: '23zxk54v6gjy6v7m',
|
|
23
|
+
date_from: 1_791_936_000,
|
|
24
|
+
date_to: 1_792_022_400,
|
|
25
|
+
page: 1,
|
|
26
|
+
limit: 25
|
|
27
|
+
)
|
|
28
|
+
parsed_response = JSON.parse(response.body)
|
|
29
|
+
|
|
30
|
+
expect(response.status).to eq(200)
|
|
31
|
+
expect(parsed_response['data']).to be_an(Array)
|
|
32
|
+
expect(parsed_response['data'][0]['to']).to eq(%w[48600000001 48600000002])
|
|
33
|
+
expect(parsed_response['data'][0]).not_to have_key('items')
|
|
34
|
+
expect(parsed_response['links']['last']).to be_nil
|
|
35
|
+
expect(parsed_response['meta']).not_to have_key('total')
|
|
36
|
+
expect(parsed_response['meta']).not_to have_key('last_page')
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
it 'returns a single WhatsApp message' do
|
|
41
|
+
VCR.use_cassette('whatsapp_messages/whatsapp_messages_get') do
|
|
42
|
+
response = whatsapp_messages.get(whatsapp_message_id: '67f91abd69f79df391e9d78d')
|
|
43
|
+
parsed_response = JSON.parse(response.body)
|
|
44
|
+
|
|
45
|
+
expect(response.status).to eq(200)
|
|
46
|
+
expect(parsed_response['data']['items']).to be_an(Array)
|
|
47
|
+
expect(parsed_response['data']['items'].map { |item| item['status'] }).to eq(%w[read failed])
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
require 'rspec'
|
|
2
|
+
require 'vcr'
|
|
3
|
+
require 'json'
|
|
4
|
+
|
|
5
|
+
VCR.configure do |config|
|
|
6
|
+
config.cassette_library_dir = './fixtures'
|
|
7
|
+
config.hook_into :webmock
|
|
8
|
+
config.filter_sensitive_data('<AUTH>') do |interaction|
|
|
9
|
+
interaction.request.headers['Authorization'][0]
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
RSpec.describe Mailersend::WhatsAppRecipient do
|
|
14
|
+
let(:client) { Mailersend::Client.new(API_TOKEN) }
|
|
15
|
+
let(:whatsapp_recipient) { Mailersend::WhatsAppRecipient.new(client) }
|
|
16
|
+
|
|
17
|
+
it 'returns a list of WhatsApp recipients' do
|
|
18
|
+
VCR.use_cassette('whatsapp_recipient/whatsapp_recipient_list', match_requests_on: %i[method host path query]) do
|
|
19
|
+
response = whatsapp_recipient.list(status: 'active', phone_number: '48600000001', page: 1, limit: 25)
|
|
20
|
+
parsed_response = JSON.parse(response.body)
|
|
21
|
+
|
|
22
|
+
expect(response.status).to eq(200)
|
|
23
|
+
expect(parsed_response['data']).to be_an(Array)
|
|
24
|
+
expect(parsed_response['data'][0]).not_to have_key('bsuid')
|
|
25
|
+
expect(parsed_response['links']['last']).to be_nil
|
|
26
|
+
expect(parsed_response['meta']).not_to have_key('total')
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
it 'returns a single WhatsApp recipient' do
|
|
31
|
+
VCR.use_cassette('whatsapp_recipient/whatsapp_recipient_get') do
|
|
32
|
+
response = whatsapp_recipient.get(whatsapp_recipient_id: '67f91abe2202f37055402301')
|
|
33
|
+
parsed_response = JSON.parse(response.body)
|
|
34
|
+
|
|
35
|
+
expect(response.status).to eq(200)
|
|
36
|
+
expect(parsed_response['data']['items']).to be_an(Array)
|
|
37
|
+
expect(parsed_response['data']['items'][0]['whatsapp_message_id']).to eq('67f91abd69f79df391e9d78d')
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
require 'rspec'
|
|
2
|
+
require 'vcr'
|
|
3
|
+
require 'json'
|
|
4
|
+
|
|
5
|
+
VCR.configure do |config|
|
|
6
|
+
config.cassette_library_dir = './fixtures'
|
|
7
|
+
config.hook_into :webmock
|
|
8
|
+
config.filter_sensitive_data('<AUTH>') do |interaction|
|
|
9
|
+
interaction.request.headers['Authorization'][0]
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
RSpec.describe Mailersend::WhatsApp do
|
|
14
|
+
let(:client) { Mailersend::Client.new(API_TOKEN) }
|
|
15
|
+
let(:whatsapp) { Mailersend::WhatsApp.new(client) }
|
|
16
|
+
|
|
17
|
+
it 'sends a WhatsApp message' do
|
|
18
|
+
VCR.use_cassette('whatsapp/whatsapp_send') do
|
|
19
|
+
whatsapp.add_from('15550001234')
|
|
20
|
+
whatsapp.add_to('+48600000001')
|
|
21
|
+
whatsapp.add_template_id('23zxk54v6gjy6v7m')
|
|
22
|
+
|
|
23
|
+
response = whatsapp.send
|
|
24
|
+
parsed_response = JSON.parse(response.body)
|
|
25
|
+
|
|
26
|
+
expect(response.status).to eq(202)
|
|
27
|
+
expect(parsed_response['data']['id']).to eq('67f91abd69f79df391e9d78d')
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
it 'includes the personalization in the request body when set' do
|
|
32
|
+
# Cassette is matched on the request body, so this passes only when
|
|
33
|
+
# the serialized payload contains the personalization field.
|
|
34
|
+
VCR.use_cassette('whatsapp/whatsapp_send_personalization', match_requests_on: %i[method uri body]) do
|
|
35
|
+
whatsapp.add_from('15550001234')
|
|
36
|
+
whatsapp.add_to('+48600000001')
|
|
37
|
+
whatsapp.add_template_id('23zxk54v6gjy6v7m')
|
|
38
|
+
whatsapp.add_personalization(
|
|
39
|
+
{
|
|
40
|
+
'to' => '+48600000001',
|
|
41
|
+
'data' => {
|
|
42
|
+
'header' => ['Order #12345'],
|
|
43
|
+
'body' => ['John', 'December 31, 2026'],
|
|
44
|
+
'buttons' => ['orders/12345']
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
)
|
|
48
|
+
|
|
49
|
+
response = whatsapp.send
|
|
50
|
+
expect(response.status).to eq(202)
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
it 'sends to multiple recipients' do
|
|
55
|
+
VCR.use_cassette('whatsapp/whatsapp_send_multiple_recipients', match_requests_on: %i[method uri body]) do
|
|
56
|
+
whatsapp.add_from('15550001234')
|
|
57
|
+
whatsapp.add_to('+48600000001')
|
|
58
|
+
whatsapp.add_to('+48600000002')
|
|
59
|
+
whatsapp.add_template_id('23zxk54v6gjy6v7m')
|
|
60
|
+
|
|
61
|
+
response = whatsapp.send
|
|
62
|
+
expect(response.status).to eq(202)
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
end
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
require 'rspec'
|
|
2
|
+
require 'vcr'
|
|
3
|
+
require 'json'
|
|
4
|
+
|
|
5
|
+
VCR.configure do |config|
|
|
6
|
+
config.cassette_library_dir = './fixtures'
|
|
7
|
+
config.hook_into :webmock
|
|
8
|
+
config.filter_sensitive_data('<AUTH>') do |interaction|
|
|
9
|
+
interaction.request.headers['Authorization'][0]
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
RSpec.describe Mailersend::WhatsAppTemplates do
|
|
14
|
+
let(:client) { Mailersend::Client.new(API_TOKEN) }
|
|
15
|
+
let(:whatsapp_templates) { Mailersend::WhatsAppTemplates.new(client) }
|
|
16
|
+
|
|
17
|
+
it 'returns a list of WhatsApp templates' do
|
|
18
|
+
VCR.use_cassette('whatsapp_templates/whatsapp_templates_list', match_requests_on: %i[method host path query]) do
|
|
19
|
+
response = whatsapp_templates.list(
|
|
20
|
+
whatsapp_account_id: '3enl6x27wmrxrl2v',
|
|
21
|
+
status: 'approved',
|
|
22
|
+
category: 'UTILITY',
|
|
23
|
+
language: 'en_US',
|
|
24
|
+
page: 1,
|
|
25
|
+
limit: 25
|
|
26
|
+
)
|
|
27
|
+
parsed_response = JSON.parse(response.body)
|
|
28
|
+
|
|
29
|
+
expect(response.status).to eq(200)
|
|
30
|
+
expect(parsed_response['data']).to be_an(Array)
|
|
31
|
+
expect(parsed_response['data'][1]['components']['header']).to be_nil
|
|
32
|
+
expect(parsed_response['links']['last']).to be_nil
|
|
33
|
+
expect(parsed_response['meta']).not_to have_key('total')
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
it 'returns a single WhatsApp template' do
|
|
38
|
+
VCR.use_cassette('whatsapp_templates/whatsapp_templates_get') do
|
|
39
|
+
response = whatsapp_templates.get(whatsapp_template_id: '23zxk54v6gjy6v7m')
|
|
40
|
+
parsed_response = JSON.parse(response.body)
|
|
41
|
+
|
|
42
|
+
expect(response.status).to eq(200)
|
|
43
|
+
expect(parsed_response['data']['name']).to eq('order_confirmation')
|
|
44
|
+
expect(parsed_response['data']['components']['header']).to eq({ 'format' => 'TEXT', 'text' => '{{1}}' })
|
|
45
|
+
expect(parsed_response['data']['components']['buttons'][0]['url']).to eq('https://shop.example.com/{{1}}')
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: mailersend-ruby
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 3.
|
|
4
|
+
version: 3.4.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Nikola Milojević
|
|
@@ -62,6 +62,7 @@ extensions: []
|
|
|
62
62
|
extra_rdoc_files: []
|
|
63
63
|
files:
|
|
64
64
|
- ".env.example"
|
|
65
|
+
- ".envrc"
|
|
65
66
|
- ".github/CODEOWNERS"
|
|
66
67
|
- ".github/workflows/main.yml"
|
|
67
68
|
- ".github/workflows/publish_gem.yml"
|
|
@@ -97,6 +98,10 @@ files:
|
|
|
97
98
|
- fixtures/domains/domains_single.yml
|
|
98
99
|
- fixtures/domains/domains_verify.yml
|
|
99
100
|
- fixtures/email/email_send.yml
|
|
101
|
+
- fixtures/email/email_send_template_language.yml
|
|
102
|
+
- fixtures/emails/emails_list_emails.yml
|
|
103
|
+
- fixtures/emails/emails_list_emails_empty_page.yml
|
|
104
|
+
- fixtures/emails/emails_single_email.yml
|
|
100
105
|
- fixtures/inbound_routing/inbound_routing_delete.yml
|
|
101
106
|
- fixtures/inbound_routing/inbound_routing_list.yml
|
|
102
107
|
- fixtures/inbound_routing/inbound_routing_single.yml
|
|
@@ -149,6 +154,23 @@ files:
|
|
|
149
154
|
- fixtures/webhooks/webhooks_delete.yml
|
|
150
155
|
- fixtures/webhooks/webhooks_list.yml
|
|
151
156
|
- fixtures/webhooks/webhooks_single.yml
|
|
157
|
+
- fixtures/whatsapp/whatsapp_send.yml
|
|
158
|
+
- fixtures/whatsapp/whatsapp_send_multiple_recipients.yml
|
|
159
|
+
- fixtures/whatsapp/whatsapp_send_personalization.yml
|
|
160
|
+
- fixtures/whatsapp_activities/whatsapp_activities_list.yml
|
|
161
|
+
- fixtures/whatsapp_inbound_messages/whatsapp_inbound_messages_get.yml
|
|
162
|
+
- fixtures/whatsapp_inbound_messages/whatsapp_inbound_messages_list.yml
|
|
163
|
+
- fixtures/whatsapp_items/whatsapp_items_get.yml
|
|
164
|
+
- fixtures/whatsapp_items/whatsapp_items_list.yml
|
|
165
|
+
- fixtures/whatsapp_messages/whatsapp_messages_get.yml
|
|
166
|
+
- fixtures/whatsapp_messages/whatsapp_messages_list.yml
|
|
167
|
+
- fixtures/whatsapp_recipient/whatsapp_recipient_get.yml
|
|
168
|
+
- fixtures/whatsapp_recipient/whatsapp_recipient_list.yml
|
|
169
|
+
- fixtures/whatsapp_templates/whatsapp_templates_get.yml
|
|
170
|
+
- fixtures/whatsapp_templates/whatsapp_templates_list.yml
|
|
171
|
+
- flake.lock
|
|
172
|
+
- flake.nix
|
|
173
|
+
- lefthook.yml
|
|
152
174
|
- lib/mailersend-ruby.rb
|
|
153
175
|
- lib/mailersend.rb
|
|
154
176
|
- lib/mailersend/activity/activity.rb
|
|
@@ -160,6 +182,7 @@ files:
|
|
|
160
182
|
- lib/mailersend/domains/domains.rb
|
|
161
183
|
- lib/mailersend/email/email.rb
|
|
162
184
|
- lib/mailersend/email_verification/email_verification.rb
|
|
185
|
+
- lib/mailersend/emails/emails.rb
|
|
163
186
|
- lib/mailersend/inbound_routing/inbound_routing.rb
|
|
164
187
|
- lib/mailersend/messages/messages.rb
|
|
165
188
|
- lib/mailersend/recipients/recipients.rb
|
|
@@ -177,6 +200,13 @@ files:
|
|
|
177
200
|
- lib/mailersend/tokens/tokens.rb
|
|
178
201
|
- lib/mailersend/version.rb
|
|
179
202
|
- lib/mailersend/webhooks/webhooks.rb
|
|
203
|
+
- lib/mailersend/whatsapp/whatsapp.rb
|
|
204
|
+
- lib/mailersend/whatsapp_activities/whatsapp_activities.rb
|
|
205
|
+
- lib/mailersend/whatsapp_inbound_messages/whatsapp_inbound_messages.rb
|
|
206
|
+
- lib/mailersend/whatsapp_items/whatsapp_items.rb
|
|
207
|
+
- lib/mailersend/whatsapp_messages/whatsapp_messages.rb
|
|
208
|
+
- lib/mailersend/whatsapp_recipient/whatsapp_recipient.rb
|
|
209
|
+
- lib/mailersend/whatsapp_templates/whatsapp_templates.rb
|
|
180
210
|
- mailersend-ruby.gemspec
|
|
181
211
|
- renovate.json
|
|
182
212
|
- spec/activity_rspec.rb
|
|
@@ -185,6 +215,7 @@ files:
|
|
|
185
215
|
- spec/dmarc_monitoring_rspec.rb
|
|
186
216
|
- spec/domains_rspec.rb
|
|
187
217
|
- spec/email_rspec.rb
|
|
218
|
+
- spec/emails_rspec.rb
|
|
188
219
|
- spec/inbound_routing_rspec.rb
|
|
189
220
|
- spec/messages_rspec.rb
|
|
190
221
|
- spec/recipients_rspec.rb
|
|
@@ -200,6 +231,13 @@ files:
|
|
|
200
231
|
- spec/templates_rspec.rb
|
|
201
232
|
- spec/tokens_rspec.rb
|
|
202
233
|
- spec/webhooks_rspec.rb
|
|
234
|
+
- spec/whatsapp_activities_rspec.rb
|
|
235
|
+
- spec/whatsapp_inbound_messages_rspec.rb
|
|
236
|
+
- spec/whatsapp_items_rspec.rb
|
|
237
|
+
- spec/whatsapp_messages_rspec.rb
|
|
238
|
+
- spec/whatsapp_recipient_rspec.rb
|
|
239
|
+
- spec/whatsapp_rspec.rb
|
|
240
|
+
- spec/whatsapp_templates_rspec.rb
|
|
203
241
|
homepage: https://www.mailersend.com
|
|
204
242
|
licenses:
|
|
205
243
|
- MIT
|