resend 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/README.md +45 -0
- data/lib/railresend.rb +4 -0
- data/lib/resend/client.rb +70 -0
- data/lib/resend/errors.rb +5 -0
- data/lib/resend/version.rb +5 -0
- data/lib/resend.rb +6 -0
- metadata +62 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 0edb877306c27569fda6e455102f59ae368de55b2a95e884b0c9608353488d9c
|
4
|
+
data.tar.gz: ee95e08639e0dd1d145ff8d84c50b163719f381d11295f384775b1cdafe4c5e3
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 2f1ce217a7529c5fbf27b6d84bf61036e705d57a11624f08cf6ec1683c56ce7bbad37e3013dc67fd4a607af9c3e597f1aab83121fd2b56a1c9edcc33a4bc06a6
|
7
|
+
data.tar.gz: 8fb0e506d83d1ef9ab19add603bf441508fda81dfe609e1e841ca5ba0bde812962341069ed850d7914ff7bbccddf2507961a5bb440fec5843b46e82572d13f98
|
data/README.md
ADDED
@@ -0,0 +1,45 @@
|
|
1
|
+
# Resend Ruby and Rails SDK
|
2
|
+
|
3
|
+
[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)
|
4
|
+
![Build](https://github.com/drish/resend-ruby/actions/workflows/build.yml/badge.svg)
|
5
|
+
---
|
6
|
+
|
7
|
+
## Installation
|
8
|
+
|
9
|
+
To install Resend Ruby and Rails SDK, simply execute the following command in a terminal:
|
10
|
+
|
11
|
+
Via RubyGems:
|
12
|
+
```
|
13
|
+
gem install resend
|
14
|
+
```
|
15
|
+
|
16
|
+
Via Gemfile:
|
17
|
+
```
|
18
|
+
gem 'resend', '~>0.1.0'
|
19
|
+
```
|
20
|
+
|
21
|
+
## Setup
|
22
|
+
|
23
|
+
First, you need to get an API key, which is available in the [Resend Dashboard](https://resend.com).
|
24
|
+
|
25
|
+
```ruby
|
26
|
+
require "resend"
|
27
|
+
client = Resend::Client.new "re_YOUR_API_KEY"
|
28
|
+
```
|
29
|
+
|
30
|
+
## Example
|
31
|
+
|
32
|
+
```rb
|
33
|
+
require "resend"
|
34
|
+
|
35
|
+
client = Resend::Client.new "re_YOUR_API_KEY"
|
36
|
+
|
37
|
+
params = {
|
38
|
+
"from": "team@recomendo.io",
|
39
|
+
"to": "carlosderich@gmail.com",
|
40
|
+
"html": "<h1>Hello World</h1>",
|
41
|
+
"subject": "Hey"
|
42
|
+
}
|
43
|
+
r = client.send_email(params)
|
44
|
+
puts r
|
45
|
+
```
|
data/lib/railresend.rb
ADDED
@@ -0,0 +1,70 @@
|
|
1
|
+
require_relative "./version"
|
2
|
+
require_relative "./errors"
|
3
|
+
require "httparty"
|
4
|
+
|
5
|
+
module Resend
|
6
|
+
|
7
|
+
class Client
|
8
|
+
BASE_URL = "https://api.klotty.com/".freeze
|
9
|
+
|
10
|
+
attr_reader :api_key, :base_url, :timeout
|
11
|
+
|
12
|
+
def initialize(api_key)
|
13
|
+
raise ArgumentError.new("API Key is not a string") unless api_key.is_a?(String)
|
14
|
+
@api_key = api_key
|
15
|
+
@timeout = nil
|
16
|
+
end
|
17
|
+
|
18
|
+
def send_email(params)
|
19
|
+
validate!(params)
|
20
|
+
|
21
|
+
options = {
|
22
|
+
headers: {
|
23
|
+
'Content-Type' => 'application/json',
|
24
|
+
"Accept" => "application/json",
|
25
|
+
"User-Agent" => "ruby:#{Resend::VERSION}",
|
26
|
+
"Authorization" => "Bearer #{@api_key}",
|
27
|
+
},
|
28
|
+
body: params.to_json
|
29
|
+
}
|
30
|
+
|
31
|
+
resp = HTTParty.post("#{BASE_URL}/email", options)
|
32
|
+
resp.transform_keys!(&:to_sym)
|
33
|
+
if not resp[:error].nil?
|
34
|
+
handle_error!(resp[:error])
|
35
|
+
end
|
36
|
+
resp
|
37
|
+
end
|
38
|
+
|
39
|
+
# Rails #configure
|
40
|
+
def configure(options)
|
41
|
+
options.each do |key, value|
|
42
|
+
instance_variable_set("@#{key}", value)
|
43
|
+
end
|
44
|
+
yield(self) if block_given?
|
45
|
+
end
|
46
|
+
|
47
|
+
private
|
48
|
+
|
49
|
+
def validate!(params)
|
50
|
+
raise ArgumentError.new("'to' should be an Array or String") unless params[:to].is_a?(String) or params[:to].is_a?(Array)
|
51
|
+
raise ArgumentError.new("Argument 'to' is missing") if params[:to].nil?
|
52
|
+
raise ArgumentError.new("'to' can not be empty") if params[:to].empty?
|
53
|
+
|
54
|
+
raise ArgumentError.new("'from' should be a String") unless params[:from].is_a?(String)
|
55
|
+
raise ArgumentError.new("Argument 'from' is missing") if params[:from].nil?
|
56
|
+
raise ArgumentError.new("'from' can not be empty") if params[:from].empty?
|
57
|
+
|
58
|
+
raise ArgumentError.new("'from' should be a String") unless params[:from].is_a?(String)
|
59
|
+
raise ArgumentError.new("Argument 'subject' is missing") if params[:subject].nil?
|
60
|
+
raise ArgumentError.new("'subject' can not be empty") if params[:subject].empty?
|
61
|
+
|
62
|
+
raise ArgumentError.new("Argument 'text' and 'html' are missing") if params[:text].nil? and params[:html].nil?
|
63
|
+
end
|
64
|
+
|
65
|
+
def handle_error!(error)
|
66
|
+
err = error.transform_keys(&:to_sym)
|
67
|
+
raise Resend::ResendError.new(err[:message])
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
data/lib/resend.rb
ADDED
metadata
ADDED
@@ -0,0 +1,62 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: resend
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Derich Pacheco
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2022-12-27 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: httparty
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
description:
|
28
|
+
email: carlosderich@gmail.com
|
29
|
+
executables: []
|
30
|
+
extensions: []
|
31
|
+
extra_rdoc_files: []
|
32
|
+
files:
|
33
|
+
- README.md
|
34
|
+
- lib/railresend.rb
|
35
|
+
- lib/resend.rb
|
36
|
+
- lib/resend/client.rb
|
37
|
+
- lib/resend/errors.rb
|
38
|
+
- lib/resend/version.rb
|
39
|
+
homepage: https://github.com/drish/resend-ruby
|
40
|
+
licenses:
|
41
|
+
- MIT
|
42
|
+
metadata: {}
|
43
|
+
post_install_message:
|
44
|
+
rdoc_options: []
|
45
|
+
require_paths:
|
46
|
+
- lib
|
47
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
48
|
+
requirements:
|
49
|
+
- - ">="
|
50
|
+
- !ruby/object:Gem::Version
|
51
|
+
version: '2.6'
|
52
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
53
|
+
requirements:
|
54
|
+
- - ">="
|
55
|
+
- !ruby/object:Gem::Version
|
56
|
+
version: '0'
|
57
|
+
requirements: []
|
58
|
+
rubygems_version: 3.3.11
|
59
|
+
signing_key:
|
60
|
+
specification_version: 4
|
61
|
+
summary: The Ruby and Rails SDK for resend.com
|
62
|
+
test_files: []
|