resend 0.18.1 → 0.20.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/lib/resend/broadcasts.rb +6 -0
- data/lib/resend/emails.rb +3 -3
- data/lib/resend/request.rb +19 -2
- data/lib/resend/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0b5349c47ad8289c343894fe33fac76d211ae9978f3b345f96acd872cd7273b8
|
4
|
+
data.tar.gz: 1428260d051c8ec44f90032de660d274511c51a89078abe748144e8bc7ee5358
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5930573ba4216644183433e4eeb2eb7b811507594030e251da1f44b33af50758a4009f5c2a390ba326eaccd5e3fbd0dee9a6f5ab5af0604ade24a8ab4bae7554
|
7
|
+
data.tar.gz: f8bf3707e3126e63d3fed39b78ccdca6cbfc8a04675e24b9c5623982e2f5a77bf08574065dec27a06047f6453f3858ce32357d80bf6c5c2d707167aeb0b571cc
|
data/lib/resend/broadcasts.rb
CHANGED
@@ -10,6 +10,12 @@ module Resend
|
|
10
10
|
Resend::Request.new(path, params, "post").perform
|
11
11
|
end
|
12
12
|
|
13
|
+
# https://resend.com/docs/api-reference/broadcasts/update-broadcast
|
14
|
+
def update(params = {})
|
15
|
+
path = "broadcasts/#{params[:broadcast_id]}"
|
16
|
+
Resend::Request.new(path, params, "patch").perform
|
17
|
+
end
|
18
|
+
|
13
19
|
# https://resend.com/docs/api-reference/broadcasts/send-broadcast
|
14
20
|
def send(params = {})
|
15
21
|
path = "broadcasts/#{params[:broadcast_id]}/send"
|
data/lib/resend/emails.rb
CHANGED
@@ -5,10 +5,10 @@ module Resend
|
|
5
5
|
module Emails
|
6
6
|
class << self
|
7
7
|
# Sends or schedules an email.
|
8
|
-
# see more: https://resend.com/docs/api-reference/send-email
|
9
|
-
def send(params)
|
8
|
+
# see more: https://resend.com/docs/api-reference/emails/send-email
|
9
|
+
def send(params, options: {})
|
10
10
|
path = "emails"
|
11
|
-
Resend::Request.new(path, params, "post").perform
|
11
|
+
Resend::Request.new(path, params, "post", options: options).perform
|
12
12
|
end
|
13
13
|
|
14
14
|
# Retrieve a single email.
|
data/lib/resend/request.rb
CHANGED
@@ -6,9 +6,9 @@ module Resend
|
|
6
6
|
class Request
|
7
7
|
BASE_URL = ENV["RESEND_BASE_URL"] || "https://api.resend.com/"
|
8
8
|
|
9
|
-
attr_accessor :body, :verb
|
9
|
+
attr_accessor :body, :verb, :options
|
10
10
|
|
11
|
-
def initialize(path = "", body = {}, verb = "POST")
|
11
|
+
def initialize(path = "", body = {}, verb = "POST", options: {})
|
12
12
|
raise if (api_key = Resend.api_key).nil?
|
13
13
|
|
14
14
|
api_key = api_key.call if api_key.is_a?(Proc)
|
@@ -16,12 +16,15 @@ module Resend
|
|
16
16
|
@path = path
|
17
17
|
@body = body
|
18
18
|
@verb = verb
|
19
|
+
@options = options
|
19
20
|
@headers = {
|
20
21
|
"Content-Type" => "application/json",
|
21
22
|
"Accept" => "application/json",
|
22
23
|
"User-Agent" => "resend-ruby:#{Resend::VERSION}",
|
23
24
|
"Authorization" => "Bearer #{api_key}"
|
24
25
|
}
|
26
|
+
|
27
|
+
set_idempotency_key
|
25
28
|
end
|
26
29
|
|
27
30
|
# Performs the HTTP call
|
@@ -44,12 +47,26 @@ module Resend
|
|
44
47
|
def handle_error!(resp)
|
45
48
|
code = resp[:statusCode]
|
46
49
|
body = resp[:message]
|
50
|
+
|
51
|
+
# get error from the known list of errors
|
47
52
|
error = Resend::Error::ERRORS[code]
|
48
53
|
raise(error.new(body, code)) if error
|
54
|
+
|
55
|
+
# Raise generic Resend error when the error code is not part of the known errors
|
56
|
+
raise Resend::Error.new(body, code)
|
49
57
|
end
|
50
58
|
|
51
59
|
private
|
52
60
|
|
61
|
+
def set_idempotency_key
|
62
|
+
# Only set idempotency key if the verb is POST for now.
|
63
|
+
#
|
64
|
+
# Does not set it if the idempotency_key is nil or empty
|
65
|
+
if @verb.downcase == "post" && (!@options[:idempotency_key].nil? && !@options[:idempotency_key].empty?)
|
66
|
+
@headers["Idempotency-Key"] = @options[:idempotency_key]
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
53
70
|
def check_json!(resp)
|
54
71
|
if resp.body.is_a?(Hash)
|
55
72
|
JSON.parse(resp.body.to_json)
|
data/lib/resend/version.rb
CHANGED
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.
|
4
|
+
version: 0.20.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: 2025-
|
11
|
+
date: 2025-04-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: httparty
|