resend 0.5.0 → 0.7.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: d3e4d80d6041ac5d061ec2eafce26da90a106d14be6ae2b23dc66741b29a7d55
4
- data.tar.gz: 3d486cd3522bda376cc61ee41c0ef1bdc91b6af2db07b4f05530d01d5a74f616
3
+ metadata.gz: 546dd4f52e3f16e399e3d42b6fc5512628ad67249ba9e5a521f97ce428d80682
4
+ data.tar.gz: 1b291656cdbc4456dddf0aa3444e2ef4b80aef9a1429640a38073395cce99e75
5
5
  SHA512:
6
- metadata.gz: 548f3a9603ecba1a0d44f7846d08e2194bd29d5baae28c6df8bdd3c1d5f3827210dacddad009556ff4d33c9eb1c567be60d522f3eda6f240fe7b1a3e0b3e6e49
7
- data.tar.gz: a775247f3a2c7ab2a17e277d30f1b44700a5b9a17082de247aeff0a781e17c728bd67aa9bf1ad7e7807d78f43be43bd717c6c77ed464e333540a70efb325afd8
6
+ metadata.gz: e4849accfa344de0ee7db136a06e64ff3111aa73111e68a14ca708c9c5f43af73023a8921d55a436a2a0dfeb2f831dc2572fca01d59014c51adf288c378987e1
7
+ data.tar.gz: 39dfdac4232712f57d6e884318edc09155bf0bdc67110d49b22de0f88e20d4c2475ca98c91b68a0b2e505b7391884d774dcd75dafb074a3a0c17d113f1edda4f
data/README.md CHANGED
@@ -16,7 +16,7 @@ gem install resend
16
16
 
17
17
  Via Gemfile:
18
18
  ```
19
- gem 'resend', '~>0.3.0'
19
+ gem 'resend'
20
20
  ```
21
21
 
22
22
  ## Setup
@@ -59,13 +59,17 @@ You can view all the examples in the [examples folder](https://github.com/drish/
59
59
 
60
60
  # Rails and ActiveMailer support
61
61
 
62
- This gem can be used as an ActionMailer delivery method, add this to your `config/environments/environment.rb` file and replace with your api key.
62
+ This gem can be used as an ActionMailer delivery method, add this to your `config/environments/environment.rb` file.
63
63
 
64
64
  ```ruby
65
65
  config.action_mailer.delivery_method = :resend
66
- config.action_mailer.resend_settings = {
67
- api_key: 'resend_api_key',
68
- }
66
+ ```
67
+
68
+ Create or update your mailer initializer file and replace the placeholder with your Resend API Key.
69
+
70
+ ```rb
71
+ # /app/initializers/mailer.rb
72
+ Resend.api_key = "re_123456"
69
73
  ```
70
74
 
71
75
  After that you can deliver_now!, example below:
@@ -87,12 +91,3 @@ mailer = UserMailer.with(user: u).welcome_email
87
91
  mailer.deliver_now!
88
92
  # => {:id=>"b8f94710-0d84-429c-925a-22d3d8f86916", from: 'you@yourdomain.io', to: ["example2@mail.com", "example1@mail.com"]}
89
93
  ```
90
-
91
- This gem can also be initialized with a Rails initializer file, example below:
92
-
93
- ```ruby
94
- # /app/initializers/mailer.rb
95
- Resend.configure do |config|
96
- config.api_key = 'resend_api_key'
97
- end
98
- ```
data/lib/resend/errors.rb CHANGED
@@ -4,7 +4,6 @@ module Resend
4
4
  # Errors wrapper class
5
5
  # For more info: https://resend.com/docs/api-reference/error-codes
6
6
  class Error < StandardError
7
-
8
7
  # 4xx HTTP status code
9
8
  ClientError = Class.new(self)
10
9
 
@@ -17,6 +16,9 @@ module Resend
17
16
  # code 422
18
17
  InvalidRequestError = Class.new(ServerError)
19
18
 
19
+ # code 429
20
+ RateLimitExceededError = Class.new(ServerError)
21
+
20
22
  # code 404
21
23
  NotFoundError = Class.new(ServerError)
22
24
 
@@ -24,6 +26,7 @@ module Resend
24
26
  401 => Resend::Error::InvalidRequestError,
25
27
  404 => Resend::Error::InvalidRequestError,
26
28
  422 => Resend::Error::InvalidRequestError,
29
+ 429 => Resend::Error::RateLimitExceededError,
27
30
  400 => Resend::Error::InvalidRequestError,
28
31
  500 => Resend::Error::InternalServerError
29
32
  }.freeze
data/lib/resend/mailer.rb CHANGED
@@ -9,9 +9,10 @@ module Resend
9
9
 
10
10
  def initialize(config)
11
11
  @config = config
12
- raise Resend::ResendError.new("Config requires api_key", @config) unless @config.key?(:api_key)
12
+ raise Resend::Error.new("Make sure your API Key is set", @config) unless Resend.api_key
13
13
 
14
- @settings = { return_response: true } # avoids NilError exception
14
+ # avoids NilError exception
15
+ @settings = { return_response: true }
15
16
  end
16
17
 
17
18
  def deliver!(mail)
@@ -21,6 +22,7 @@ module Resend
21
22
  resp
22
23
  end
23
24
 
25
+ # Builds the payload for sending
24
26
  def build_resend_params(mail)
25
27
  params = {
26
28
  from: get_from(mail.from),
@@ -28,11 +30,20 @@ module Resend
28
30
  subject: mail.subject
29
31
  }
30
32
  params.merge!(get_addons(mail))
33
+ params.merge!(get_headers(mail))
31
34
  params[:attachments] = get_attachments(mail) if mail.attachments.present?
32
35
  params.merge!(get_contents(mail))
33
36
  params
34
37
  end
35
38
 
39
+ # Add custom headers fields
40
+ def get_headers(mail)
41
+ params = {}
42
+ params[:headers] = mail[:headers].unparsed_value if mail[:headers].present?
43
+ params
44
+ end
45
+
46
+ # Add cc, bcc, reply_to fields
36
47
  def get_addons(mail)
37
48
  params = {}
38
49
  params[:cc] = mail.cc if mail.cc.present?
@@ -41,6 +52,7 @@ module Resend
41
52
  params
42
53
  end
43
54
 
55
+ # Gets the body of the email
44
56
  def get_contents(mail)
45
57
  params = {}
46
58
  case mail.mime_type
@@ -55,12 +67,14 @@ module Resend
55
67
  params
56
68
  end
57
69
 
70
+ # Gets the `from` field
58
71
  def get_from(input)
59
72
  return input.first if input.is_a? Array
60
73
 
61
74
  input
62
75
  end
63
76
 
77
+ # Handle attachments when present
64
78
  def get_attachments(mail)
65
79
  attachments = []
66
80
  mail.attachments.each do |part|
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Resend
4
- VERSION = "0.5.0"
4
+ VERSION = "0.7.0"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: resend
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Derich Pacheco
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-05-25 00:00:00.000000000 Z
11
+ date: 2023-07-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: httparty
@@ -74,7 +74,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
74
74
  - !ruby/object:Gem::Version
75
75
  version: '0'
76
76
  requirements: []
77
- rubygems_version: 3.4.6
77
+ rubygems_version: 3.3.7
78
78
  signing_key:
79
79
  specification_version: 4
80
80
  summary: The Ruby and Rails SDK for resend.com