mailersend-ruby 0.2.4 → 1.1.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: '08ba885c0049c372636873518510b62965493ebbcd9198111d72308d17a7b0f2'
4
- data.tar.gz: 74ac4b75d90f18c2d7e57a65d32925a5d8d112ccd13529409156c71a87451ce1
3
+ metadata.gz: e8d67b989e26722f62ec3b556872643721be50947b67392f899f75115bb5dd9b
4
+ data.tar.gz: 5b9ee2fe25d34a07f71f38ff5a88137abcf22cfd1619b88b4505646e1f8facc2
5
5
  SHA512:
6
- metadata.gz: 92cb6a3deb8cae056d38dbd7a64fb17c5a9ee5d4e30ef040687c4b81870f01eced6d4ae99d7f9cdb9e126a5aedb88dd0955cae8db58f0aac80435ece8e640791
7
- data.tar.gz: 8fdcb78aff4eea89a2b97c9ba91f20fa65c77aa46f1400f7f2b1be4a2c8b0365ddfafff4944fe27b3430db9d059892156a9472e69ea838e868322c0d6a9d944d
6
+ metadata.gz: 5f59c4b41f8134c36df9e0dd8c3365444719d942a6a6c57e1643bd58c3973dfbb768c922b3df2291eb1e2fbb8d99df14df40e3a4dd26ebb0caade3c999cb45d0
7
+ data.tar.gz: ebcb98375a4a56f3d6033dd93fecd22bef6019ac58d2338701aaa061a6579306ccf44311a202df5194a142ac0ae55f2bc880aa6595f98e09774503ce2359a298
data/.env.example CHANGED
@@ -1 +1 @@
1
- API_TOKEN="superlongkey"
1
+ MAILERSEND_API_TOKEN="superlongkey"
@@ -0,0 +1,21 @@
1
+ name: Publish Gem
2
+
3
+ on:
4
+ push:
5
+ tags:
6
+ - v*
7
+ jobs:
8
+ build:
9
+ runs-on: ubuntu-latest
10
+
11
+ steps:
12
+ - uses: actions/checkout@v2
13
+
14
+ - name: Release Gem
15
+ if: contains(github.ref, 'refs/tags/v')
16
+ uses: cadwallion/publish-rubygems-action@master
17
+ env:
18
+ GITHUB_TOKEN: ${{secrets.GITHUBTOKEN}}
19
+ RUBYGEMS_API_KEY: ${{secrets.RUBYGEMS_API_KEY}}
20
+ RELEASE_COMMAND: rake release
21
+
data/CHANGELOG.md CHANGED
@@ -1,5 +1,21 @@
1
1
  ## [Released]
2
2
 
3
+ ## [1.1.0] - 2022-02-18
4
+
5
+ - Domains endpoint improvements
6
+ - Added schedule an email parameter
7
+ - Added inbound routes endpoint
8
+ - Added scheduled messages endpoint
9
+
10
+ ## [1.0.1] - 2022-02-16
11
+
12
+ - Removed puts from request response
13
+ - Added dynamic User-Agent based on SDK version
14
+
15
+ ## [1.0.0] - 2022-02-15
16
+
17
+ - BREAKING CHANGE: Renamed `API_TOKEN` variable to `MAILERSEND_API_TOKEN`
18
+
3
19
  ## [0.2.4] - 2021-12-13
4
20
 
5
21
  - Added bulk email endpoint
@@ -32,6 +48,7 @@
32
48
 
33
49
  - Added required parameter for token creation
34
50
  -
51
+
35
52
  ## [0.1.6] - 2021-06-15
36
53
 
37
54
  - Fixed small issues in Domains
data/README.md CHANGED
@@ -28,15 +28,27 @@ MailerSend Ruby SDK
28
28
  - [Opens by country](#opens-by-country)
29
29
  - [Opens by user-agent name](#opens-by-user-agent-name)
30
30
  - [Opens by reading environment](#opens-by-reading-environment)
31
+ - [Inbound Routes](#inbound-routes)
32
+ - [Get a list of inbound routes](#get-a-list-of-inbound-routes)
33
+ - [Get a single inbound route](#get-a-single-inbound-route)
34
+ - [Add an inbound route](#add-an-inbound-route)
35
+ - [Update an inbound route](#update-an-inbound-route)
36
+ - [Delete an inbound route](#delete-an-inbound-route)
31
37
  - [Domains](#domains)
32
38
  - [Get a list of domains](#get-a-list-of-domains)
33
39
  - [Get a single domain](#get-a-single-domain)
34
40
  - [Delete a domain](#delete-a-domain)
35
41
  - [Get recipients for a domain](#get-recipients-for-a-domain)
36
42
  - [Update domain settings](#update-domain-settings)
43
+ - [Get DNS Records](#get-dns-records)
44
+ - [Get verification status](#get-verification-status)
37
45
  - [Messages](#messages)
38
46
  - [Get a list of messages](#get-a-list-of-messages)
39
47
  - [Get info for a single message](#get-info-for-a-single-message)
48
+ - [Scheduled Messages](#scheduled-messages)
49
+ - [Get a list of scheduled messages](#get-a-list-of-scheduled-messages)
50
+ - [Get a single scheduled message](#get-a-single-scheduled-message)
51
+ - [Delete a scheduled message](#delete-a-scheduled-message)
40
52
  - [Recipients](#recipients)
41
53
  - [Get recipients](#get-recipients)
42
54
  - [Get a single recipient](#get-a-single-recipient)
@@ -70,7 +82,7 @@ You will have to initalize it in your Ruby file with `require "mailersend-ruby"`
70
82
 
71
83
  # Usage
72
84
 
73
- This SDK requires that you either have `.env` file with `API_TOKEN` env variable or that your variable is enabled system wide (useful for Docker/Kubernetes). The example of how `API_TOKEN` should look like is in `.env.example`.
85
+ This SDK requires that you either have `.env` file with `MAILERSEND_API_TOKEN` env variable or that your variable is enabled system wide (useful for Docker/Kubernetes). The example of how `MAILERSEND_API_TOKEN` should look like is in `.env.example`.
74
86
 
75
87
  ## Email
76
88
 
@@ -328,6 +340,69 @@ ms_analytics = Mailersend::Analytics.new
328
340
  ms_analytics.ua_type(date_from: 1620643567, date_to: 1623321967)
329
341
  ```
330
342
 
343
+ ## Inbound Routes
344
+
345
+ ### Get a list of inbound routes
346
+
347
+ ```ruby
348
+ require "mailersend-ruby"
349
+
350
+ ms_inbound_routes = Mailersend::InboundRouting.new
351
+ ms_inbound_routes.get_inbound_routes
352
+ ```
353
+
354
+ ### Get a single inbound route
355
+
356
+ ```ruby
357
+ require "mailersend-ruby"
358
+
359
+ ms_inbound_routes = Mailersend::InboundRouting.new
360
+ ms_inbound_routes.get_single_route(inbound_id: 'idofroute12412')
361
+ ```
362
+
363
+ ### Add an inbound route
364
+
365
+ ```ruby
366
+ require "mailersend-ruby"
367
+
368
+ ms_inbound_routes = Mailersend::InboundRouting.new
369
+ ms_inbound_routes.settings =
370
+ {
371
+ 'domain_id' => 'yourdomainid',
372
+ 'name' => 'inbound_name',
373
+ 'domain_enabled' => false,
374
+ 'match_filter' => { 'type' => 'match_all' },
375
+ 'forwards' => [{ 'type' => 'webhook', 'value' => 'https://example.com' }]
376
+ }
377
+ puts ms_inbound_routes.add_inbound_route
378
+ ```
379
+
380
+ ### Update an inbound route
381
+
382
+ ```ruby
383
+ require "mailersend-ruby"
384
+
385
+ ms_inbound_routes = Mailersend::InboundRouting.new
386
+ ms_inbound_routes.settings =
387
+ {
388
+ 'domain_id' => 'yourdomainid',
389
+ 'name' => 'inbound_updated',
390
+ 'domain_enabled' => false,
391
+ 'match_filter' => { 'type' => 'match_all' },
392
+ 'forwards' => [{ 'type' => 'webhook', 'value' => 'https://example.com' }]
393
+ }
394
+ puts ms_inbound_routes.update_inbound_route(inbound_id: 'idofroute12412')
395
+ ```
396
+
397
+ ### Delete an inbound route
398
+
399
+ ```ruby
400
+ require "mailersend-ruby"
401
+
402
+ ms_inbound_routes = Mailersend::InboundRouting.new
403
+ ms_inbound_routes.delete_route(inbound_id: 'idofroute12412')
404
+ ```
405
+
331
406
  ## Domains
332
407
 
333
408
  ### Get a list of domains
@@ -375,6 +450,24 @@ ms_domains = Mailersend::Domains.new
375
450
  ms_domains.settings(domain_id: "idofdomain12412", track_clicks: true, track_unsubscribe: false)
376
451
  ```
377
452
 
453
+ ### Get DNS Records
454
+
455
+ ```ruby
456
+ require "mailersend-ruby"
457
+
458
+ ms_domains = Mailersend::Domains.new
459
+ ms_domains.dns(domain_id: "idofdomain12412")
460
+ ```
461
+
462
+ ### Get verification status
463
+
464
+ ```ruby
465
+ require "mailersend-ruby"
466
+
467
+ ms_domains = Mailersend::Domains.new
468
+ ms_domains.verify(domain_id: "idofdomain12412")
469
+ ```
470
+
378
471
  ## Messages
379
472
 
380
473
  ### Get a list of messages
@@ -395,6 +488,35 @@ ms_messages = Mailersend::Messages.new
395
488
  ms_messages.single(message_id: "mess11454")
396
489
  ```
397
490
 
491
+ ## Scheduled Messages
492
+
493
+ ### Get a list of scheduled messages
494
+
495
+ ```ruby
496
+ require "mailersend-ruby"
497
+
498
+ ms_scheduled_messages = Mailersend::ScheduledMessages.new
499
+ ms_scheduled_messages.get_list
500
+ ```
501
+
502
+ ### Get a single scheduled message
503
+
504
+ ```ruby
505
+ require "mailersend-ruby"
506
+
507
+ ms_scheduled_messages = Mailersend::ScheduledMessages.new
508
+ ms_scheduled_messages.get_signle(message_id: 'mess11454')
509
+ ```
510
+
511
+ ### Delete a scheduled message
512
+
513
+ ```ruby
514
+ require "mailersend-ruby"
515
+
516
+ ms_scheduled_messages = Mailersend::ScheduledMessages.new
517
+ ms_scheduled_messages.delete(message_id: 'mess11454')
518
+ ```
519
+
398
520
  ## Recipients
399
521
 
400
522
  ### Get recipients
@@ -477,16 +599,16 @@ require "mailersend-ruby"
477
599
  ms_suppressions = Mailersend::Suppressions.new
478
600
 
479
601
  // Delete from Block List
480
- ms_suppressions.delete_from_blocklist(ids: ["xxx2241ll"])
602
+ ms_suppressions.delete_from_blocklist(domain_id: 'yourdomainid', ids: ["xxx2241ll"])
481
603
 
482
604
  // Delete from Hard Bounces
483
- ms_suppressions.delete_from_hard_bounces(ids: ["xxx2241ll"])
605
+ ms_suppressions.delete_from_hard_bounces(domain_id: 'yourdomainid', ids: ["xxx2241ll"])
484
606
 
485
607
  // Delete from Spam Complaints
486
- ms_suppressions.delete_from_spam_complaints(ids: ["xxx2241ll"])
608
+ ms_suppressions.delete_from_spam_complaints(domain_id: 'yourdomainid', ids: ["xxx2241ll"])
487
609
 
488
610
  // Delete from Unsubscribes
489
- ms_suppressions.delete_from_unsubscribers(ids: ["xxx2241ll"])
611
+ ms_suppressions.delete_from_unsubscribers(domain_id: 'yourdomainid', ids: ["xxx2241ll"])
490
612
  ```
491
613
 
492
614
  ## Webhooks
@@ -572,4 +694,4 @@ The official documentation is at [https://developers.mailersend.com](https://dev
572
694
 
573
695
  # License
574
696
 
575
- [The MIT License (MIT)](LICENSE)
697
+ [The MIT License (MIT)](LICENSE)
@@ -27,9 +27,8 @@ module Mailersend
27
27
  date_to: date_to
28
28
  }
29
29
 
30
- response = client.http.get(URI::HTTPS.build(host: API_BASE_HOST, path: "/v1/activity/#{domain_id}",
31
- query: URI.encode_www_form(hash.compact)))
32
- puts response
30
+ client.http.get(URI::HTTPS.build(host: API_BASE_HOST, path: "/v1/activity/#{domain_id}",
31
+ query: URI.encode_www_form(hash.compact)))
33
32
  end
34
33
  end
35
34
  end
@@ -34,9 +34,8 @@ module Mailersend
34
34
  'tags[]' => tags
35
35
  }
36
36
 
37
- response = client.http.get(URI::HTTPS.build(host: API_BASE_HOST, path: '/v1/analytics/date',
38
- query: URI.encode_www_form(hash.compact)))
39
- puts response
37
+ client.http.get(URI::HTTPS.build(host: API_BASE_HOST, path: '/v1/analytics/date',
38
+ query: URI.encode_www_form(hash.compact)))
40
39
  end
41
40
 
42
41
  def country(date_from:, date_to:, domain_id: nil, recipient_id: nil, tags: nil)
@@ -48,9 +47,8 @@ module Mailersend
48
47
  'tags[]': tags
49
48
  }
50
49
 
51
- response = client.http.get(URI::HTTPS.build(host: API_BASE_HOST, path: '/v1/analytics/country',
52
- query: URI.encode_www_form(hash.compact)))
53
- puts response
50
+ client.http.get(URI::HTTPS.build(host: API_BASE_HOST, path: '/v1/analytics/country',
51
+ query: URI.encode_www_form(hash.compact)))
54
52
  end
55
53
 
56
54
  def ua_name(date_from:, date_to:, domain_id: nil, recipient_id: nil, tags: nil)
@@ -62,9 +60,8 @@ module Mailersend
62
60
  'tags[]': tags
63
61
  }
64
62
 
65
- response = client.http.get(URI::HTTPS.build(host: API_BASE_HOST, path: '/v1/analytics/ua-name',
66
- query: URI.encode_www_form(hash.compact)))
67
- puts response
63
+ client.http.get(URI::HTTPS.build(host: API_BASE_HOST, path: '/v1/analytics/ua-name',
64
+ query: URI.encode_www_form(hash.compact)))
68
65
  end
69
66
 
70
67
  def ua_type(date_from:, date_to:, domain_id: nil, recipient_id: nil, tags: nil)
@@ -76,9 +73,8 @@ module Mailersend
76
73
  'tags[]': tags
77
74
  }
78
75
 
79
- response = client.http.get(URI::HTTPS.build(host: API_BASE_HOST, path: '/v1/analytics/ua-type',
80
- query: URI.encode_www_form(hash.compact)))
81
- puts response
76
+ client.http.get(URI::HTTPS.build(host: API_BASE_HOST, path: '/v1/analytics/ua-type',
77
+ query: URI.encode_www_form(hash.compact)))
82
78
  end
83
79
  end
84
80
  end
@@ -14,7 +14,7 @@ module Mailersend
14
14
  end
15
15
 
16
16
  def add_attachment(content:, filename:)
17
- data = File.open(content.to_s).read
17
+ data = File.read(content.to_s)
18
18
  encoded = Base64.strict_encode64(data)
19
19
  @attachments << {
20
20
  'content' => encoded,
@@ -23,14 +23,11 @@ module Mailersend
23
23
  end
24
24
 
25
25
  def send
26
- response = client.http.post("#{API_URL}/bulk-email", json: @messages)
27
- puts response
28
- puts response.status.code
26
+ client.http.post("#{API_URL}/bulk-email", json: @messages)
29
27
  end
30
28
 
31
29
  def get_bulk_status(bulk_email_id:)
32
- response = client.http.get(URI::HTTPS.build(host: API_BASE_HOST, path: "/v1/bulk-email/#{bulk_email_id}"))
33
- puts response
30
+ client.http.get(URI::HTTPS.build(host: API_BASE_HOST, path: "/v1/bulk-email/#{bulk_email_id}"))
34
31
  end
35
32
  end
36
33
  end
@@ -6,7 +6,7 @@ require 'dotenv/load'
6
6
  API_URL = 'https://api.mailersend.com/v1'
7
7
  API_BASE_HOST = 'api.mailersend.com'
8
8
 
9
- Dotenv.require_keys('API_TOKEN')
9
+ Dotenv.require_keys('MAILERSEND_API_TOKEN')
10
10
 
11
11
  # mailersend-ruby is a gem that integrates all endpoints from MailerSend API
12
12
  module Mailersend
@@ -14,7 +14,7 @@ module Mailersend
14
14
 
15
15
  # Inits the client.
16
16
  class Client
17
- def initialize(api_token = ENV['API_TOKEN'])
17
+ def initialize(api_token = ENV['MAILERSEND_API_TOKEN'])
18
18
  @api_token = api_token
19
19
  end
20
20
 
@@ -22,7 +22,7 @@ module Mailersend
22
22
  HTTP
23
23
  .timeout(connect: 15, read: 30)
24
24
  .auth("Bearer #{@api_token}")
25
- .headers('User-Agent' => 'MailerSend-client-ruby/1.0.0',
25
+ .headers('User-Agent' => "MailerSend-client-ruby/#{Mailersend::VERSION}",
26
26
  'Accept' => 'application/json')
27
27
  end
28
28
  end
@@ -23,9 +23,8 @@ module Mailersend
23
23
  'limit' => limit,
24
24
  'verified' => verified
25
25
  }
26
- response = client.http.get(URI::HTTPS.build(host: API_BASE_HOST, path: '/v1/domains',
27
- query: URI.encode_www_form(hash.compact)))
28
- puts response
26
+ client.http.get(URI::HTTPS.build(host: API_BASE_HOST, path: '/v1/domains',
27
+ query: URI.encode_www_form(hash.compact)))
29
28
  end
30
29
 
31
30
  def single(domain_id:, page: nil, limit: nil, verified: nil)
@@ -34,14 +33,12 @@ module Mailersend
34
33
  'limit' => limit,
35
34
  'verified' => verified
36
35
  }
37
- response = client.http.get(URI::HTTPS.build(host: API_BASE_HOST, path: "/v1/domains/#{domain_id}",
38
- query: URI.encode_www_form(hash.compact)))
39
- puts response
36
+ client.http.get(URI::HTTPS.build(host: API_BASE_HOST, path: "/v1/domains/#{domain_id}",
37
+ query: URI.encode_www_form(hash.compact)))
40
38
  end
41
39
 
42
40
  def delete(domain_id:)
43
- response = client.http.delete(URI::HTTPS.build(host: API_BASE_HOST, path: "/v1/domains/#{domain_id}"))
44
- puts response
41
+ client.http.delete(URI::HTTPS.build(host: API_BASE_HOST, path: "/v1/domains/#{domain_id}"))
45
42
  end
46
43
 
47
44
  def recipients(domain_id:)
@@ -49,9 +46,8 @@ module Mailersend
49
46
  'page' => page,
50
47
  'limit' => limit
51
48
  }
52
- response = client.http.get(URI::HTTPS.build(host: API_BASE_HOST, path: "/v1/domains/#{domain_id}/recipients",
53
- query: URI.encode_www_form(hash.compact)))
54
- puts response
49
+ client.http.get(URI::HTTPS.build(host: API_BASE_HOST, path: "/v1/domains/#{domain_id}/recipients",
50
+ query: URI.encode_www_form(hash.compact)))
55
51
  end
56
52
 
57
53
  def settings(domain_id:, send_paused: nil, track_clicks: nil, track_opens: nil, track_unsubscribe: nil, track_unsubscribe_html: nil, track_unsubscribe_plain: nil, track_content: nil, custom_tracking_enabled: nil, custom_tracking_subdomain: nil)
@@ -66,8 +62,15 @@ module Mailersend
66
62
  'custom_tracking_enabled' => custom_tracking_enabled,
67
63
  'custom_tracking_subdomain' => custom_tracking_subdomain
68
64
  }
69
- response = client.http.put("#{API_URL}/domains/#{domain_id}/settings", json: hash.compact)
70
- puts response
65
+ client.http.put("#{API_URL}/domains/#{domain_id}/settings", json: hash.compact)
66
+ end
67
+
68
+ def dns(domain_id:)
69
+ client.http.get(URI::HTTPS.build(host: API_BASE_HOST, path: "/v1/domains/#{domain_id}/dns-records"))
70
+ end
71
+
72
+ def verify(domain_id:)
73
+ client.http.get(URI::HTTPS.build(host: API_BASE_HOST, path: "/v1/domains/#{domain_id}/verify"))
71
74
  end
72
75
  end
73
76
  end
@@ -18,7 +18,8 @@ module Mailersend
18
18
  :template_id,
19
19
  :tags,
20
20
  :variables,
21
- :personalization
21
+ :personalization,
22
+ :send_at
22
23
 
23
24
  def initialize(client = Mailersend::Client.new)
24
25
  @client = client
@@ -34,6 +35,7 @@ module Mailersend
34
35
  @personalization = []
35
36
  @attachments = []
36
37
  @tags = []
38
+ @send_at = send_at
37
39
  end
38
40
 
39
41
  def add_recipients(recipients)
@@ -85,7 +87,7 @@ module Mailersend
85
87
  end
86
88
 
87
89
  def add_attachment(content:, filename:)
88
- data = File.open(content.to_s).read
90
+ data = File.read(content.to_s)
89
91
  encoded = Base64.strict_encode64(data)
90
92
  @attachments << {
91
93
  'content' => encoded,
@@ -93,6 +95,10 @@ module Mailersend
93
95
  }
94
96
  end
95
97
 
98
+ def add_send_at(send_at)
99
+ @send_at = send_at
100
+ end
101
+
96
102
  def send
97
103
  message = {
98
104
  'from' => @from,
@@ -106,12 +112,11 @@ module Mailersend
106
112
  'variables' => @variables,
107
113
  'personalization' => @personalization,
108
114
  'template_id' => @template_id,
109
- 'attachments' => @attachments
115
+ 'attachments' => @attachments,
116
+ 'send_at' => @send_at
110
117
  }
111
118
 
112
- response = client.http.post("#{API_URL}/email", json: message.delete_if { |_, value| value.to_s.strip == '' || value == [] || value == {} })
113
- puts response
114
- puts response.status.code
119
+ client.http.post("#{API_URL}/email", json: message.delete_if { |_, value| value.to_s.strip == '' || value == [] || value == {} })
115
120
  end
116
121
  end
117
122
  end
@@ -0,0 +1,42 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Mailersend
4
+ # Inbound routing endpoint from MailerSend API.
5
+ class InboundRouting
6
+ attr_accessor :client,
7
+ :domain_id,
8
+ :page,
9
+ :limit,
10
+ :inbound_id,
11
+ :settings
12
+
13
+ def initialize(client = Mailersend::Client.new)
14
+ @client = client
15
+ @domain_id = domain_id
16
+ @page = page
17
+ @limit = limit
18
+ @inbound_id = inbound_id
19
+ @settings = []
20
+ end
21
+
22
+ def get_inbound_routes(*)
23
+ client.http.get("#{API_URL}/inbound")
24
+ end
25
+
26
+ def get_single_route(inbound_id:)
27
+ client.http.get("#{API_URL}/inbound/#{inbound_id}")
28
+ end
29
+
30
+ def add_inbound_route
31
+ client.http.post("#{API_URL}/inbound", json: @settings)
32
+ end
33
+
34
+ def update_inbound_route(inbound_id:)
35
+ client.http.put("#{API_URL}/inbound/#{inbound_id}", json: @settings)
36
+ end
37
+
38
+ def delete_route(inbound_id:)
39
+ client.http.delete("#{API_URL}/inbound/#{inbound_id}")
40
+ end
41
+ end
42
+ end
@@ -21,14 +21,12 @@ module Mailersend
21
21
  'limit' => limit
22
22
  }
23
23
 
24
- response = client.http.get(URI::HTTPS.build(host: API_BASE_HOST, path: '/v1/messages',
25
- query: URI.encode_www_form(hash)))
26
- puts response
24
+ client.http.get(URI::HTTPS.build(host: API_BASE_HOST, path: '/v1/messages',
25
+ query: URI.encode_www_form(hash)))
27
26
  end
28
27
 
29
28
  def single(message_id:)
30
- response = client.http.get("#{API_URL}/messages/#{message_id}")
31
- puts response
29
+ client.http.get("#{API_URL}/messages/#{message_id}")
32
30
  end
33
31
  end
34
32
  end
@@ -21,19 +21,16 @@ module Mailersend
21
21
  'limit' => limit
22
22
  }
23
23
 
24
- response = client.http.get(URI::HTTPS.build(host: API_BASE_HOST, path: '/v1/recipients',
25
- query: URI.encode_www_form(hash)))
26
- puts response
24
+ client.http.get(URI::HTTPS.build(host: API_BASE_HOST, path: '/v1/recipients',
25
+ query: URI.encode_www_form(hash)))
27
26
  end
28
27
 
29
28
  def single(recipient_id:)
30
- response = client.http.get("#{API_URL}/recipients/#{recipient_id}")
31
- puts response
29
+ client.http.get("#{API_URL}/recipients/#{recipient_id}")
32
30
  end
33
31
 
34
32
  def delete(recipient_id:)
35
- response = client.http.delete("#{API_URL}/recipients/#{recipient_id}")
36
- puts response
33
+ client.http.delete("#{API_URL}/recipients/#{recipient_id}")
37
34
  end
38
35
  end
39
36
  end
@@ -0,0 +1,34 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Mailersend
4
+ # Scheduled messages endpoint from MailerSend API.
5
+ class ScheduledMessages
6
+ attr_accessor :client,
7
+ :domain_id,
8
+ :status,
9
+ :page,
10
+ :limit,
11
+ :message_id
12
+
13
+ def initialize(client = Mailersend::Client.new)
14
+ @client = client
15
+ @domain_id = domain_id
16
+ @status = status
17
+ @page = page
18
+ @limit = limit
19
+ @message_id = message_id
20
+ end
21
+
22
+ def get_list(*)
23
+ client.http.get("#{API_URL}/message-schedules")
24
+ end
25
+
26
+ def get_signle(message_id:)
27
+ client.http.get("#{API_URL}/message-schedules/#{message_id}")
28
+ end
29
+
30
+ def delete(message_id:)
31
+ client.http.delete("#{API_URL}/message-schedules/#{message_id}")
32
+ end
33
+ end
34
+ end
@@ -16,23 +16,19 @@ module Mailersend
16
16
  end
17
17
 
18
18
  def get_from_blocklist(*)
19
- response = client.http.get("#{API_URL}/suppressions/blocklist")
20
- puts response
19
+ client.http.get("#{API_URL}/suppressions/blocklist")
21
20
  end
22
21
 
23
22
  def get_hard_bounces(*)
24
- response = client.http.get("#{API_URL}/suppressions/hard-bounces")
25
- puts response
23
+ client.http.get("#{API_URL}/suppressions/hard-bounces")
26
24
  end
27
25
 
28
26
  def get_spam_complaints(*)
29
- response = client.http.get("#{API_URL}/suppressions/spam-complaints")
30
- puts response
27
+ client.http.get("#{API_URL}/suppressions/spam-complaints")
31
28
  end
32
29
 
33
30
  def get_unsubscribes(*)
34
- response = client.http.get("#{API_URL}/suppressions/unsubscribes")
35
- puts response
31
+ client.http.get("#{API_URL}/suppressions/unsubscribes")
36
32
  end
37
33
 
38
34
  def add_to_blocklist(recipients: nil, patterns: nil)
@@ -40,17 +36,16 @@ module Mailersend
40
36
  'recipients' => recipients,
41
37
  'patterns' => patterns
42
38
  }
43
- response = client.http.post("#{API_URL}/suppressions/blocklist", json: hash.compact)
44
- puts response
39
+ client.http.post("#{API_URL}/suppressions/blocklist", json: hash.compact)
45
40
  end
46
41
 
47
- def delete_from_blocklist(ids: nil, all: nil)
42
+ def delete_from_blocklist(domain_id: nil, ids: nil, all: nil)
48
43
  hash = {
44
+ 'domain_id' => domain_id,
49
45
  'ids' => ids,
50
46
  'all' => all
51
47
  }
52
- response = client.http.delete("#{API_URL}/suppressions/blocklist", json: hash.compact)
53
- puts response
48
+ client.http.delete("#{API_URL}/suppressions/blocklist", json: hash.compact)
54
49
  end
55
50
 
56
51
  def add_to_hard_bounces(domain_id: nil, recipients: nil)
@@ -58,17 +53,16 @@ module Mailersend
58
53
  'domain_id' => domain_id,
59
54
  'recipients' => recipients
60
55
  }
61
- response = client.http.post("#{API_URL}/suppressions/hard-bounces", json: hash.compact)
62
- puts response
56
+ client.http.post("#{API_URL}/suppressions/hard-bounces", json: hash.compact)
63
57
  end
64
58
 
65
- def delete_from_hard_bounces(ids: nil, all: nil)
59
+ def delete_from_hard_bounces(domain_id: nil, ids: nil, all: nil)
66
60
  hash = {
61
+ 'domain_id' => domain_id,
67
62
  'ids' => ids,
68
63
  'all' => all
69
64
  }
70
- response = client.http.delete("#{API_URL}/suppressions/hard-bounces", json: hash.compact)
71
- puts response
65
+ client.http.delete("#{API_URL}/suppressions/hard-bounces", json: hash.compact)
72
66
  end
73
67
 
74
68
  def add_to_spam_complaints(domain_id: nil, recipients: nil)
@@ -76,17 +70,16 @@ module Mailersend
76
70
  'domain_id' => domain_id,
77
71
  'recipients' => recipients
78
72
  }
79
- response = client.http.post("#{API_URL}/suppressions/spam-complaints", json: hash.compact)
80
- puts response
73
+ client.http.post("#{API_URL}/suppressions/spam-complaints", json: hash.compact)
81
74
  end
82
75
 
83
- def delete_from_spam_complaints(ids: nil, all: nil)
76
+ def delete_from_spam_complaints(domain_id: nil, ids: nil, all: nil)
84
77
  hash = {
78
+ 'domain_id' => domain_id,
85
79
  'ids' => ids,
86
80
  'all' => all
87
81
  }
88
- response = client.http.delete("#{API_URL}/suppressions/spam-complaints", json: hash.compact)
89
- puts response
82
+ client.http.delete("#{API_URL}/suppressions/spam-complaints", json: hash.compact)
90
83
  end
91
84
 
92
85
  def add_to_unsubscribers(domain_id: nil, recipients: nil)
@@ -94,17 +87,16 @@ module Mailersend
94
87
  'domain_id' => domain_id,
95
88
  'recipients' => recipients
96
89
  }
97
- response = client.http.post("#{API_URL}/suppressions/unsubscribes", json: hash.compact)
98
- puts response
90
+ client.http.post("#{API_URL}/suppressions/unsubscribes", json: hash.compact)
99
91
  end
100
92
 
101
- def delete_from_unsubscribers(ids: nil, all: nil)
93
+ def delete_from_unsubscribers(domain_id: nil, ids: nil, all: nil)
102
94
  hash = {
95
+ 'domain_id' => domain_id,
103
96
  'ids' => ids,
104
97
  'all' => all
105
98
  }
106
- response = client.http.delete("#{API_URL}/suppressions/unsubscribes", json: hash.compact)
107
- puts response
99
+ client.http.delete("#{API_URL}/suppressions/unsubscribes", json: hash.compact)
108
100
  end
109
101
  end
110
102
  end
@@ -22,19 +22,16 @@ module Mailersend
22
22
  'limit' => limit
23
23
  }
24
24
 
25
- response = client.http.get(URI::HTTPS.build(host: API_BASE_HOST, path: '/v1/templates',
26
- query: URI.encode_www_form(hash)))
27
- puts response
25
+ client.http.get(URI::HTTPS.build(host: API_BASE_HOST, path: '/v1/templates',
26
+ query: URI.encode_www_form(hash)))
28
27
  end
29
28
 
30
29
  def single(template_id:)
31
- response = client.http.get("#{API_URL}/templates/#{template_id}")
32
- puts response
30
+ client.http.get("#{API_URL}/templates/#{template_id}")
33
31
  end
34
32
 
35
33
  def delete(template_id:)
36
- response = client.http.delete("#{API_URL}/templates/#{template_id}")
37
- puts response
34
+ client.http.delete("#{API_URL}/templates/#{template_id}")
38
35
  end
39
36
  end
40
37
  end
@@ -23,21 +23,18 @@ module Mailersend
23
23
  'scopes' => scopes,
24
24
  'domain_id' => domain_id
25
25
  }
26
- response = client.http.post("#{API_URL}/token", json: json)
27
- puts response
26
+ client.http.post("#{API_URL}/token", json: json)
28
27
  end
29
28
 
30
29
  def update(token_id:, status:)
31
30
  status = {
32
31
  status: status
33
32
  }
34
- response = client.http.put("#{API_URL}/token/#{token_id}/settings", json: status)
35
- puts response
33
+ client.http.put("#{API_URL}/token/#{token_id}/settings", json: status)
36
34
  end
37
35
 
38
36
  def delete(token_id:)
39
- response = client.http.delete("#{API_URL}/token/#{token_id}")
40
- puts response
37
+ client.http.delete("#{API_URL}/token/#{token_id}")
41
38
  end
42
39
  end
43
40
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Mailersend
4
- VERSION = '0.2.4'
4
+ VERSION = '1.1.0'
5
5
  end
@@ -24,14 +24,12 @@ module Mailersend
24
24
  hash = {
25
25
  'domain_id' => domain_id
26
26
  }
27
- response = client.http.get(URI::HTTPS.build(host: API_BASE_HOST, path: '/v1/webhooks',
28
- query: URI.encode_www_form(hash)))
29
- puts response
27
+ client.http.get(URI::HTTPS.build(host: API_BASE_HOST, path: '/v1/webhooks',
28
+ query: URI.encode_www_form(hash)))
30
29
  end
31
30
 
32
31
  def single(webhook_id:)
33
- response = client.http.get("#{API_URL}/webhooks/#{webhook_id}")
34
- puts response
32
+ client.http.get("#{API_URL}/webhooks/#{webhook_id}")
35
33
  end
36
34
 
37
35
  def create(url:, name:, events:, domain_id:, enabled: nil)
@@ -43,8 +41,7 @@ module Mailersend
43
41
  'enabled' => enabled.to_s == 'true'
44
42
  }
45
43
 
46
- response = client.http.post("#{API_URL}/webhooks", json: hash.compact)
47
- puts response
44
+ client.http.post("#{API_URL}/webhooks", json: hash.compact)
48
45
  end
49
46
 
50
47
  def update(webhook_id:, url: nil, name: nil, events: nil, enabled: nil)
@@ -54,13 +51,11 @@ module Mailersend
54
51
  'events' => events,
55
52
  'enabled' => enabled.to_s == 'true'
56
53
  }
57
- response = client.http.put("#{API_URL}/webhooks/#{webhook_id}", json: hash.compact)
58
- puts response
54
+ client.http.put("#{API_URL}/webhooks/#{webhook_id}", json: hash.compact)
59
55
  end
60
56
 
61
57
  def delete(webhook_id:)
62
- response = client.http.delete("#{API_URL}/webhooks/#{webhook_id}")
63
- puts response
58
+ client.http.delete("#{API_URL}/webhooks/#{webhook_id}")
64
59
  end
65
60
  end
66
61
  end
data/lib/mailersend.rb CHANGED
@@ -1,13 +1,16 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require_relative 'mailersend/client'
4
+ require_relative 'mailersend/version'
4
5
  require_relative 'mailersend/activity/activity'
5
6
  require_relative 'mailersend/analytics/analytics'
6
7
  require_relative 'mailersend/bulk_email/bulk_email'
7
8
  require_relative 'mailersend/domains/domains'
8
9
  require_relative 'mailersend/email/email'
10
+ require_relative 'mailersend/inbound_routing/inbound_routing'
9
11
  require_relative 'mailersend/messages/messages'
10
12
  require_relative 'mailersend/recipients/recipients'
13
+ require_relative 'mailersend/scheduled_messages/scheduled_messages'
11
14
  require_relative 'mailersend/suppressions/suppressions'
12
15
  require_relative 'mailersend/templates/templates'
13
16
  require_relative 'mailersend/tokens/tokens'
@@ -27,7 +27,7 @@ Gem::Specification.new do |spec|
27
27
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
28
28
  spec.require_paths = ['lib']
29
29
 
30
- spec.add_development_dependency 'bundler', '~> 2.2.15'
30
+ spec.add_development_dependency 'bundler', '~> 2.3.4'
31
31
  spec.add_development_dependency 'rake', '~> 13.0'
32
32
  spec.add_development_dependency 'rubocop', '~> 1.7'
33
33
  spec.add_dependency 'dotenv', '~> 2.7'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mailersend-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.4
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nikola Milojević
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-12-13 00:00:00.000000000 Z
11
+ date: 2022-02-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 2.2.15
19
+ version: 2.3.4
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 2.2.15
26
+ version: 2.3.4
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -120,6 +120,7 @@ extra_rdoc_files: []
120
120
  files:
121
121
  - ".env.example"
122
122
  - ".github/workflows/main.yml"
123
+ - ".github/workflows/publish_gem.yml"
123
124
  - ".gitignore"
124
125
  - ".rubocop.yml"
125
126
  - CHANGELOG.md
@@ -137,8 +138,10 @@ files:
137
138
  - lib/mailersend/client.rb
138
139
  - lib/mailersend/domains/domains.rb
139
140
  - lib/mailersend/email/email.rb
141
+ - lib/mailersend/inbound_routing/inbound_routing.rb
140
142
  - lib/mailersend/messages/messages.rb
141
143
  - lib/mailersend/recipients/recipients.rb
144
+ - lib/mailersend/scheduled_messages/scheduled_messages.rb
142
145
  - lib/mailersend/suppressions/suppressions.rb
143
146
  - lib/mailersend/templates/templates.rb
144
147
  - lib/mailersend/tokens/tokens.rb
@@ -155,7 +158,7 @@ metadata:
155
158
  source_code_uri: https://github.com/mailersend/mailersend-ruby
156
159
  changelog_uri: https://github.com/mailersend/mailersend-ruby/blob/main/CHANGELOG.md
157
160
  rubygems_mfa_required: 'true'
158
- post_install_message:
161
+ post_install_message:
159
162
  rdoc_options: []
160
163
  require_paths:
161
164
  - lib
@@ -170,8 +173,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
170
173
  - !ruby/object:Gem::Version
171
174
  version: '0'
172
175
  requirements: []
173
- rubygems_version: 3.2.31
174
- signing_key:
176
+ rubygems_version: 3.3.3
177
+ signing_key:
175
178
  specification_version: 4
176
179
  summary: MailerSend's official Ruby SDK
177
180
  test_files: []