mailersend-ruby 3.0.1 → 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 +12 -0
- data/README.md +534 -0
- data/fixtures/dmarc_monitoring/add_favorite.yml +31 -0
- data/fixtures/dmarc_monitoring/create.yml +34 -0
- data/fixtures/dmarc_monitoring/delete.yml +31 -0
- data/fixtures/dmarc_monitoring/list.yml +32 -0
- data/fixtures/dmarc_monitoring/remove_favorite.yml +31 -0
- data/fixtures/dmarc_monitoring/report.yml +31 -0
- data/fixtures/dmarc_monitoring/report_by_ip.yml +31 -0
- data/fixtures/dmarc_monitoring/report_sources.yml +31 -0
- data/fixtures/dmarc_monitoring/update.yml +34 -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/dmarc_monitoring/dmarc_monitoring.rb +59 -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 +9 -0
- data/spec/dmarc_monitoring_rspec.rb +100 -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 +52 -3
|
@@ -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,13 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: mailersend-ruby
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 3.0
|
|
4
|
+
version: 3.4.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Nikola Milojević
|
|
8
8
|
bindir: bin
|
|
9
9
|
cert_chain: []
|
|
10
|
-
date:
|
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
11
11
|
dependencies:
|
|
12
12
|
- !ruby/object:Gem::Dependency
|
|
13
13
|
name: http
|
|
@@ -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"
|
|
@@ -79,6 +80,15 @@ files:
|
|
|
79
80
|
- fixtures/api_quota/api_quota_get.yml
|
|
80
81
|
- fixtures/bulk_email/bulk_email_send.yml
|
|
81
82
|
- fixtures/bulk_email/bulk_email_status.yml
|
|
83
|
+
- fixtures/dmarc_monitoring/add_favorite.yml
|
|
84
|
+
- fixtures/dmarc_monitoring/create.yml
|
|
85
|
+
- fixtures/dmarc_monitoring/delete.yml
|
|
86
|
+
- fixtures/dmarc_monitoring/list.yml
|
|
87
|
+
- fixtures/dmarc_monitoring/remove_favorite.yml
|
|
88
|
+
- fixtures/dmarc_monitoring/report.yml
|
|
89
|
+
- fixtures/dmarc_monitoring/report_by_ip.yml
|
|
90
|
+
- fixtures/dmarc_monitoring/report_sources.yml
|
|
91
|
+
- fixtures/dmarc_monitoring/update.yml
|
|
82
92
|
- fixtures/domains/domains_add.yml
|
|
83
93
|
- fixtures/domains/domains_delete.yml
|
|
84
94
|
- fixtures/domains/domains_dns.yml
|
|
@@ -88,6 +98,10 @@ files:
|
|
|
88
98
|
- fixtures/domains/domains_single.yml
|
|
89
99
|
- fixtures/domains/domains_verify.yml
|
|
90
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
|
|
91
105
|
- fixtures/inbound_routing/inbound_routing_delete.yml
|
|
92
106
|
- fixtures/inbound_routing/inbound_routing_list.yml
|
|
93
107
|
- fixtures/inbound_routing/inbound_routing_single.yml
|
|
@@ -140,6 +154,23 @@ files:
|
|
|
140
154
|
- fixtures/webhooks/webhooks_delete.yml
|
|
141
155
|
- fixtures/webhooks/webhooks_list.yml
|
|
142
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
|
|
143
174
|
- lib/mailersend-ruby.rb
|
|
144
175
|
- lib/mailersend.rb
|
|
145
176
|
- lib/mailersend/activity/activity.rb
|
|
@@ -147,9 +178,11 @@ files:
|
|
|
147
178
|
- lib/mailersend/api_quota/api_quota.rb
|
|
148
179
|
- lib/mailersend/bulk_email/bulk_email.rb
|
|
149
180
|
- lib/mailersend/client.rb
|
|
181
|
+
- lib/mailersend/dmarc_monitoring/dmarc_monitoring.rb
|
|
150
182
|
- lib/mailersend/domains/domains.rb
|
|
151
183
|
- lib/mailersend/email/email.rb
|
|
152
184
|
- lib/mailersend/email_verification/email_verification.rb
|
|
185
|
+
- lib/mailersend/emails/emails.rb
|
|
153
186
|
- lib/mailersend/inbound_routing/inbound_routing.rb
|
|
154
187
|
- lib/mailersend/messages/messages.rb
|
|
155
188
|
- lib/mailersend/recipients/recipients.rb
|
|
@@ -167,13 +200,22 @@ files:
|
|
|
167
200
|
- lib/mailersend/tokens/tokens.rb
|
|
168
201
|
- lib/mailersend/version.rb
|
|
169
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
|
|
170
210
|
- mailersend-ruby.gemspec
|
|
171
211
|
- renovate.json
|
|
172
212
|
- spec/activity_rspec.rb
|
|
173
213
|
- spec/api_quota_rspec.rb
|
|
174
214
|
- spec/bulk_email_rspec.rb
|
|
215
|
+
- spec/dmarc_monitoring_rspec.rb
|
|
175
216
|
- spec/domains_rspec.rb
|
|
176
217
|
- spec/email_rspec.rb
|
|
218
|
+
- spec/emails_rspec.rb
|
|
177
219
|
- spec/inbound_routing_rspec.rb
|
|
178
220
|
- spec/messages_rspec.rb
|
|
179
221
|
- spec/recipients_rspec.rb
|
|
@@ -189,6 +231,13 @@ files:
|
|
|
189
231
|
- spec/templates_rspec.rb
|
|
190
232
|
- spec/tokens_rspec.rb
|
|
191
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
|
|
192
241
|
homepage: https://www.mailersend.com
|
|
193
242
|
licenses:
|
|
194
243
|
- MIT
|
|
@@ -212,7 +261,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
212
261
|
- !ruby/object:Gem::Version
|
|
213
262
|
version: '0'
|
|
214
263
|
requirements: []
|
|
215
|
-
rubygems_version: 3.6.
|
|
264
|
+
rubygems_version: 3.6.9
|
|
216
265
|
specification_version: 4
|
|
217
266
|
summary: MailerSend's official Ruby SDK
|
|
218
267
|
test_files: []
|