resend 0.5.0 → 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
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