mailersend-ruby 0.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 +7 -0
- data/.env.example +1 -0
- data/.github/workflows/main.yml +16 -0
- data/.gitignore +12 -0
- data/.rubocop.yml +26 -0
- data/CHANGELOG.md +5 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +21 -0
- data/README.md +427 -0
- data/Rakefile +8 -0
- data/bin/console +15 -0
- data/bin/setup +8 -0
- data/lib/mailersend-ruby.rb +3 -0
- data/lib/mailersend.rb +11 -0
- data/lib/mailersend/activity/activity.rb +35 -0
- data/lib/mailersend/analytics/analytics.rb +84 -0
- data/lib/mailersend/client.rb +29 -0
- data/lib/mailersend/domains/domains.rb +62 -0
- data/lib/mailersend/email/email.rb +117 -0
- data/lib/mailersend/messages/messages.rb +34 -0
- data/lib/mailersend/recipients/recipients.rb +39 -0
- data/lib/mailersend/tokens/tokens.rb +42 -0
- data/lib/mailersend/version.rb +5 -0
- data/lib/mailersend/webhooks/webhooks.rb +66 -0
- data/mailersend-ruby.gemspec +36 -0
- metadata +172 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: fb6199cff0a78e0716fd71e505603272ec11f5be3e1807932068fd0347ffe8c6
|
4
|
+
data.tar.gz: 60f799a1d817d792e2c0f90d94ed5e4c5b0cf1d27df00d91b5923d31574adfad
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 2b3154b1ef480050c9509602e0f0192b0b55fe97af546d80f774d504fd4b28271df747f30e99121fcc4c94e2e16951d09692ef7f8559754c079d948a6bef21cf
|
7
|
+
data.tar.gz: fed0dbf67eaf84f36c77918a245dadfa52e6a2aedee915e5ba0a9803f4b7d81b625ae90798ef079aac3cc6c77227aa6cb66441693a46c6b10bb8127720556237
|
data/.env.example
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
API_TOKEN="Bearer superlongkey"
|
@@ -0,0 +1,16 @@
|
|
1
|
+
name: Ruby
|
2
|
+
|
3
|
+
on: [push,pull_request]
|
4
|
+
|
5
|
+
jobs:
|
6
|
+
build:
|
7
|
+
runs-on: ubuntu-latest
|
8
|
+
steps:
|
9
|
+
- uses: actions/checkout@v2
|
10
|
+
- name: Set up Ruby
|
11
|
+
uses: ruby/setup-ruby@v1
|
12
|
+
with:
|
13
|
+
ruby-version: 3.0.1
|
14
|
+
bundler-cache: true
|
15
|
+
- name: Run the default task
|
16
|
+
run: bundle exec rake
|
data/.gitignore
ADDED
data/.rubocop.yml
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
AllCops:
|
2
|
+
TargetRubyVersion: 2.5
|
3
|
+
SuggestExtensions: false
|
4
|
+
NewCops: enable
|
5
|
+
|
6
|
+
Style/StringLiterals:
|
7
|
+
Enabled: true
|
8
|
+
EnforcedStyle: double_quotes
|
9
|
+
|
10
|
+
Style/StringLiteralsInInterpolation:
|
11
|
+
Enabled: true
|
12
|
+
EnforcedStyle: double_quotes
|
13
|
+
|
14
|
+
Layout/LineLength:
|
15
|
+
Enabled: false
|
16
|
+
|
17
|
+
Metrics/ParameterLists:
|
18
|
+
Enabled: false
|
19
|
+
Metrics/MethodLength:
|
20
|
+
Enabled: false
|
21
|
+
|
22
|
+
Metrics/AbcSize:
|
23
|
+
Enabled: false
|
24
|
+
|
25
|
+
Naming/FileName:
|
26
|
+
Enabled: false
|
data/CHANGELOG.md
ADDED
data/Gemfile
ADDED
data/LICENSE.txt
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
The MIT License (MIT)
|
2
|
+
|
3
|
+
Copyright (c) 2021 Nikola Milojević
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
7
|
+
in the Software without restriction, including without limitation the rights
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
10
|
+
furnished to do so, subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in
|
13
|
+
all copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
21
|
+
THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,427 @@
|
|
1
|
+
<a href="https://www.mailersend.com"><img src="https://www.mailersend.com/images/logo.svg" width="200px"/></a>
|
2
|
+
|
3
|
+
MailerSend Ruby SDK
|
4
|
+
|
5
|
+
[](./LICENSE.txt)
|
6
|
+
|
7
|
+
- [Installation](#installation)
|
8
|
+
- [Setup](#setup)
|
9
|
+
- [Usage](#usage)
|
10
|
+
- [Email](#email)
|
11
|
+
- [Send an email](#send-an-email)
|
12
|
+
- [Send and email with CC and BCC](#send-and-email-with-cc-and-bcc)
|
13
|
+
- [Send a templated email](#send-a-templated-email)
|
14
|
+
- [Advanced personalization](#advanced-personalization)
|
15
|
+
- [Simple personalization](#simple-personalization)
|
16
|
+
- [Send email with attachment](#send-email-with-attachment)
|
17
|
+
- [Activity](#activity)
|
18
|
+
- [Get a list of activities](#get-a-list-of-activities)
|
19
|
+
- [Analytics](#analytics)
|
20
|
+
- [Activity data by date](#activity-data-by-date)
|
21
|
+
- [Opens by country](#opens-by-country)
|
22
|
+
- [Opens by user-agent name](#opens-by-user-agent-name)
|
23
|
+
- [Opens by reading environment](#opens-by-reading-environment)
|
24
|
+
- [Domains](#domains)
|
25
|
+
- [Get a list of domains](#get-a-list-of-domains)
|
26
|
+
- [Get a single domain](#get-a-single-domain)
|
27
|
+
- [Delete a domain](#delete-a-domain)
|
28
|
+
- [Update domain settings](#update-domain-settings)
|
29
|
+
- [Messages](#messages)
|
30
|
+
- [Get a list of messages](#get-a-list-of-messages)
|
31
|
+
- [Get info for a single message](#get-info-for-a-single-message)
|
32
|
+
- [Recipients](#recipients)
|
33
|
+
- [Get recipients](#get-recipients)
|
34
|
+
- [Get a single recipient](#get-a-single-recipient)
|
35
|
+
- [Delete a recipient](#delete-a-recipient)
|
36
|
+
- [Tokens](#tokens)
|
37
|
+
- [Create a token](#create-a-token)
|
38
|
+
- [Update a token](#update-a-token)
|
39
|
+
- [Delete a token](#delete-a-token)
|
40
|
+
- [Webhooks](#webhooks)
|
41
|
+
- [List webhooks](#list-webhooks)
|
42
|
+
- [Get a webhook](#get-a-webhook)
|
43
|
+
- [Create a webhook](#create-a-webhook)
|
44
|
+
- [Update a webhook](#update-a-webhook)
|
45
|
+
- [Support and Feedback](#support-and-feedback)
|
46
|
+
- [License](#license)
|
47
|
+
|
48
|
+
# Installation
|
49
|
+
|
50
|
+
## Setup
|
51
|
+
|
52
|
+
```bash
|
53
|
+
gem install mailersend-ruby
|
54
|
+
```
|
55
|
+
|
56
|
+
You will have to initalize it in your Ruby file with `require "mailersend-ruby"`.
|
57
|
+
|
58
|
+
# Usage
|
59
|
+
|
60
|
+
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`.
|
61
|
+
|
62
|
+
## Email
|
63
|
+
|
64
|
+
### Send an email
|
65
|
+
|
66
|
+
```ruby
|
67
|
+
require "mailersend-ruby"
|
68
|
+
|
69
|
+
# Intialize the email class
|
70
|
+
ms_email = Mailersend::Email.new
|
71
|
+
|
72
|
+
# Add parameters
|
73
|
+
ms_email.add_recipients("email" => "ron@parksandrec.com", "name" => "Ron")
|
74
|
+
ms_email.add_recipients("email" => "leslie@parksandrec.com", "name" => "Leslie")
|
75
|
+
ms_email.add_from("email" => "april@parksandrec.com", "name" => "April")
|
76
|
+
ms_email.add_subject("Time")
|
77
|
+
ms_email.add_text("Time is money, money is power, power is pizza, and pizza is knowledge. Let's go.")
|
78
|
+
ms_email.add_html("<b>Time is money, money is power, power is pizza, and pizza is knowledge. Let's go.</b>")
|
79
|
+
|
80
|
+
# Send the email
|
81
|
+
ms_email.send
|
82
|
+
```
|
83
|
+
|
84
|
+
### Send and email with CC and BCC
|
85
|
+
|
86
|
+
```ruby
|
87
|
+
require "mailersend-ruby"
|
88
|
+
|
89
|
+
# Intialize the email class
|
90
|
+
ms_email = Mailersend::Email.new
|
91
|
+
|
92
|
+
# Add parameters
|
93
|
+
ms_email.add_recipients("email" => "ron@parksandrec.com", "name" => "Ron")
|
94
|
+
ms_email.add_recipients("email" => "leslie@parksandrec.com", "name" => "Leslie")
|
95
|
+
ms_email.add_cc("email" => "chris@parksandrec.com", "name" => "Chris")
|
96
|
+
ms_email.add_bcc("email" => "andy@parksandrec.com", "name" => "Andy")
|
97
|
+
ms_email.add_from("email" => "april@parksandrec.com", "name" => "April")
|
98
|
+
ms_email.add_subject("Time")
|
99
|
+
ms_email.add_text("Time is money, money is power, power is pizza, and pizza is knowledge. Let's go.")
|
100
|
+
ms_email.add_html("<b>Time is money, money is power, power is pizza, and pizza is knowledge. Let's go.</b>")
|
101
|
+
|
102
|
+
# Send the email
|
103
|
+
ms_email.send
|
104
|
+
```
|
105
|
+
|
106
|
+
### Send a templated email
|
107
|
+
|
108
|
+
```ruby
|
109
|
+
require "mailersend-ruby"
|
110
|
+
|
111
|
+
# Intialize the email class
|
112
|
+
ms_email = Mailersend::Email.new
|
113
|
+
|
114
|
+
# Add parameters
|
115
|
+
ms_email.add_recipients("email" => "ron@parksandrec.com", "name" => "Ron")
|
116
|
+
ms_email.add_recipients("email" => "leslie@parksandrec.com", "name" => "Leslie")
|
117
|
+
ms_email.add_from("email" => "april@parksandrec.com", "name" => "April")
|
118
|
+
ms_email.add_subject("Time")
|
119
|
+
ms_email.add_template_id(12415125)
|
120
|
+
|
121
|
+
# Send the email
|
122
|
+
ms_email.send
|
123
|
+
```
|
124
|
+
|
125
|
+
### Advanced personalization
|
126
|
+
|
127
|
+
```ruby
|
128
|
+
require "mailersend-ruby"
|
129
|
+
|
130
|
+
# Intialize the email class
|
131
|
+
ms_email = Mailersend::Email.new
|
132
|
+
|
133
|
+
# Add parameters
|
134
|
+
ms_email.add_recipients("email" => "ron@parksandrec.com", "name" => "Ron")
|
135
|
+
ms_email.add_recipients("email" => "leslie@parksandrec.com", "name" => "Leslie")
|
136
|
+
ms_email.add_from("email" => "april@parksandrec.com", "name" => "April")
|
137
|
+
ms_email.add_subject("Time")
|
138
|
+
ms_email.add_text("Time is money, money is power, power is pizza, and pizza is knowledge. Let's go.")
|
139
|
+
ms_email.add_html("<b>Time is money, money is power, power is pizza, and pizza is knowledge. Let's go.</b>")
|
140
|
+
|
141
|
+
personalization = {
|
142
|
+
"email": "test@test.com",
|
143
|
+
"data": {
|
144
|
+
"var": "value",
|
145
|
+
"boolean": true,
|
146
|
+
"object": {
|
147
|
+
"key": "object-value"
|
148
|
+
},
|
149
|
+
"number": 2,
|
150
|
+
"array": [
|
151
|
+
1,
|
152
|
+
2,
|
153
|
+
3
|
154
|
+
]
|
155
|
+
}
|
156
|
+
}
|
157
|
+
|
158
|
+
ms_email.add_personalization(personalization)
|
159
|
+
|
160
|
+
ms_email.send
|
161
|
+
```
|
162
|
+
|
163
|
+
### Simple personalization
|
164
|
+
|
165
|
+
```ruby
|
166
|
+
require "mailersend-ruby"
|
167
|
+
|
168
|
+
# Intialize the email class
|
169
|
+
ms_email = Mailersend::Email.new
|
170
|
+
|
171
|
+
# Add parameters
|
172
|
+
ms_email.add_recipients("email" => "ron@parksandrec.com", "name" => "Ron")
|
173
|
+
ms_email.add_recipients("email" => "leslie@parksandrec.com", "name" => "Leslie")
|
174
|
+
ms_email.add_from("email" => "april@parksandrec.com", "name" => "April")
|
175
|
+
ms_email.add_subject("Time")
|
176
|
+
ms_email.add_text("Time is money, money is power, power is pizza, and pizza is knowledge. Let's go.")
|
177
|
+
ms_email.add_html("<b>Time is money, money is power, power is pizza, and pizza is knowledge. Let's go.</b>")
|
178
|
+
|
179
|
+
variables = {
|
180
|
+
"email": "test@test.com",
|
181
|
+
"substitutions": [
|
182
|
+
{
|
183
|
+
"var": "test",
|
184
|
+
"value": "test"
|
185
|
+
}
|
186
|
+
]
|
187
|
+
}
|
188
|
+
|
189
|
+
ms_email.add_variables(variables)
|
190
|
+
|
191
|
+
ms_email.send
|
192
|
+
```
|
193
|
+
|
194
|
+
### Send email with attachment
|
195
|
+
|
196
|
+
```ruby
|
197
|
+
require "mailersend-ruby"
|
198
|
+
|
199
|
+
# Intialize the email class
|
200
|
+
ms_email = Mailersend::Email.new
|
201
|
+
|
202
|
+
# Add parameters
|
203
|
+
ms_email.add_recipients("email" => "ron@parksandrec.com", "name" => "Ron")
|
204
|
+
ms_email.add_recipients("email" => "leslie@parksandrec.com", "name" => "Leslie")
|
205
|
+
ms_email.add_cc("email" => "chris@parksandrec.com", "name" => "Chris")
|
206
|
+
ms_email.add_bcc("email" => "andy@parksandrec.com", "name" => "Andy")
|
207
|
+
ms_email.add_from("email" => "april@parksandrec.com", "name" => "April")
|
208
|
+
ms_email.add_subject("Time")
|
209
|
+
ms_email.add_text("Time is money, money is power, power is pizza, and pizza is knowledge. Let's go.")
|
210
|
+
ms_email.add_html("<b>Time is money, money is power, power is pizza, and pizza is knowledge. Let's go.</b>")
|
211
|
+
|
212
|
+
# You can add one or multiple attachments
|
213
|
+
ms.add_attachment(content: "/Users/Jerry/Desktop/doc.pdf", filename: "doc.pdf")
|
214
|
+
ms.add_attachment(content: "/Users/Jerry/Desktop/pic.png", filename: "pic.png")
|
215
|
+
|
216
|
+
ms_email.send
|
217
|
+
```
|
218
|
+
|
219
|
+
## Activity
|
220
|
+
|
221
|
+
### Get a list of activities
|
222
|
+
|
223
|
+
```ruby
|
224
|
+
require "mailersend-ruby"
|
225
|
+
|
226
|
+
ms_activity = Mailersend::Activity.new
|
227
|
+
ms_activity.get(domain_id: "xxx2241ll", page: 3, limit: 5, date_from: 1620643567, date_to: 1623321967)
|
228
|
+
```
|
229
|
+
|
230
|
+
## Analytics
|
231
|
+
|
232
|
+
### Activity data by date
|
233
|
+
|
234
|
+
```ruby
|
235
|
+
require "mailersend-ruby"
|
236
|
+
|
237
|
+
ms_analytics = Mailersend::Analytics.new
|
238
|
+
ms_analytics.date(date_from: 1620643567, date_to: 1623321967, events: %w[sent queued]))
|
239
|
+
```
|
240
|
+
|
241
|
+
### Opens by country
|
242
|
+
|
243
|
+
```ruby
|
244
|
+
require "mailersend-ruby"
|
245
|
+
|
246
|
+
ms_analytics = Mailersend::Analytics.new
|
247
|
+
ms_analytics.country(date_from: 1620643567, date_to: 1623321967)
|
248
|
+
```
|
249
|
+
|
250
|
+
### Opens by user-agent name
|
251
|
+
|
252
|
+
```ruby
|
253
|
+
require "mailersend-ruby"
|
254
|
+
|
255
|
+
ms_analytics = Mailersend::Analytics.new
|
256
|
+
ms_analytics.ua_name(date_from: 1620643567, date_to: 1623321967)
|
257
|
+
```
|
258
|
+
|
259
|
+
### Opens by reading environment
|
260
|
+
|
261
|
+
```ruby
|
262
|
+
require "mailersend-ruby"
|
263
|
+
|
264
|
+
ms_analytics = Mailersend::Analytics.new
|
265
|
+
ms_analytics.ua_type(date_from: 1620643567, date_to: 1623321967)
|
266
|
+
```
|
267
|
+
|
268
|
+
## Domains
|
269
|
+
|
270
|
+
### Get a list of domains
|
271
|
+
|
272
|
+
```ruby
|
273
|
+
require "mailersend-ruby"
|
274
|
+
|
275
|
+
ms_domains = Mailersend::Domains.new
|
276
|
+
ms_domains.list
|
277
|
+
```
|
278
|
+
|
279
|
+
### Get a single domain
|
280
|
+
|
281
|
+
```ruby
|
282
|
+
require "mailersend-ruby"
|
283
|
+
|
284
|
+
ms_domains = Mailersend::Domains.new
|
285
|
+
ms_domains.list(domain_id: "idofdomain12412")
|
286
|
+
```
|
287
|
+
|
288
|
+
### Delete a domain
|
289
|
+
|
290
|
+
```ruby
|
291
|
+
require "mailersend-ruby"
|
292
|
+
|
293
|
+
ms_domains = Mailersend::Domains.new
|
294
|
+
ms_domains.delete(domain_id: "idofdomain12412")
|
295
|
+
```
|
296
|
+
|
297
|
+
### Update domain settings
|
298
|
+
|
299
|
+
```ruby
|
300
|
+
require "mailersend-ruby"
|
301
|
+
|
302
|
+
ms_domains = Mailersend::Domains.new
|
303
|
+
ms_domains.settings(domain_id: "idofdomain12412", track_clicks: true, track_unsubscribe: false)
|
304
|
+
```
|
305
|
+
|
306
|
+
## Messages
|
307
|
+
|
308
|
+
### Get a list of messages
|
309
|
+
|
310
|
+
```ruby
|
311
|
+
require "mailersend-ruby"
|
312
|
+
|
313
|
+
ms_messages = Mailersend::Messages.new
|
314
|
+
ms_messages.list(page: 1, limit: 10)
|
315
|
+
```
|
316
|
+
|
317
|
+
### Get info for a single message
|
318
|
+
|
319
|
+
```ruby
|
320
|
+
require "mailersend-ruby"
|
321
|
+
|
322
|
+
ms_messages = Mailersend::Messages.new
|
323
|
+
ms_messages.single(message_id: "mess11454")
|
324
|
+
```
|
325
|
+
|
326
|
+
## Recipients
|
327
|
+
|
328
|
+
### Get recipients
|
329
|
+
|
330
|
+
```ruby
|
331
|
+
require "mailersend-ruby"
|
332
|
+
|
333
|
+
ms_recipients = Mailersend::Recipients.new
|
334
|
+
ms_recipients.list(page: 1, limit: 10)
|
335
|
+
```
|
336
|
+
|
337
|
+
### Get a single recipient
|
338
|
+
|
339
|
+
```ruby
|
340
|
+
require "mailersend-ruby"
|
341
|
+
|
342
|
+
ms_recipients = Mailersend::Recipients.new
|
343
|
+
ms_recipients.single(recipient_id: "id124")
|
344
|
+
```
|
345
|
+
|
346
|
+
### Delete a recipient
|
347
|
+
|
348
|
+
```ruby
|
349
|
+
require "mailersend-ruby"
|
350
|
+
|
351
|
+
ms_recipients = Mailersend::Recipients.new
|
352
|
+
ms_recipients.delete(recipient_id: "id124")
|
353
|
+
```
|
354
|
+
|
355
|
+
## Tokens
|
356
|
+
|
357
|
+
### Create a token
|
358
|
+
```ruby
|
359
|
+
require "mailersend-ruby"
|
360
|
+
|
361
|
+
ms_tokens = Mailersend::Tokens.new
|
362
|
+
ms_tokens.create(name: "Very nice token", scopes: %w[ email_full domains_read ])
|
363
|
+
```
|
364
|
+
|
365
|
+
### Update a token
|
366
|
+
```ruby
|
367
|
+
require "mailersend-ruby"
|
368
|
+
|
369
|
+
ms_tokens = Mailersend::Tokens.new
|
370
|
+
ms_tokens.update(token_id: "d2220fx04", name: "Very nice token", scopes: %w[ email_full domains_read activity_read ])
|
371
|
+
```
|
372
|
+
|
373
|
+
### Delete a token
|
374
|
+
```ruby
|
375
|
+
require "mailersend-ruby"
|
376
|
+
|
377
|
+
ms_tokens = Mailersend::Tokens.new
|
378
|
+
ms_tokens.delete(token_id: "d2220fx04")
|
379
|
+
```
|
380
|
+
|
381
|
+
## Webhooks
|
382
|
+
|
383
|
+
### List webhooks
|
384
|
+
```ruby
|
385
|
+
require "mailersend-ruby"
|
386
|
+
|
387
|
+
ms_webhooks = Mailersend::Webhooks.new
|
388
|
+
ms_webhooks.list(domain_id: "xxx2241ll")
|
389
|
+
```
|
390
|
+
|
391
|
+
### Get a webhook
|
392
|
+
```ruby
|
393
|
+
require "mailersend-ruby"
|
394
|
+
|
395
|
+
ms_webhooks = Mailersend::Webhooks.new
|
396
|
+
ms_webhooks.list(webhook_id: "zzz2241ll")
|
397
|
+
```
|
398
|
+
|
399
|
+
### Create a webhook
|
400
|
+
```ruby
|
401
|
+
require "mailersend-ruby"
|
402
|
+
|
403
|
+
ms_webhooks = Mailersend::Webhooks.new
|
404
|
+
ms_webhooks.create(domain_id: "xxx2241ll", url: "https://domain.com/hook", name: "Webhook", events: ["activity.sent", "activity.delivered"], enabled: true)
|
405
|
+
```
|
406
|
+
|
407
|
+
### Update a webhook
|
408
|
+
```ruby
|
409
|
+
require "mailersend-ruby"
|
410
|
+
|
411
|
+
ms_webhooks = Mailersend::Webhooks.new
|
412
|
+
ms_webhooks.update(webhook_id: "zzz2241ll", enabled: false)
|
413
|
+
```
|
414
|
+
|
415
|
+
# Support and Feedback
|
416
|
+
|
417
|
+
In case you find any bugs, submit an issue directly here in GitHub.
|
418
|
+
|
419
|
+
You are welcome to create SDK for any other programming language.
|
420
|
+
|
421
|
+
If you have any troubles using our API or SDK free to contact our support by email [info@mailersend.com](mailto:info@mailersend.com)
|
422
|
+
|
423
|
+
The official documentation is at [https://developers.mailersend.com](https://developers.mailersend.com)
|
424
|
+
|
425
|
+
# License
|
426
|
+
|
427
|
+
[The MIT License (MIT)](LICENSE)
|
data/Rakefile
ADDED
data/bin/console
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
require "bundler/setup"
|
5
|
+
require_relative "../lib/mailersend/version"
|
6
|
+
|
7
|
+
# You can add fixtures and/or initialization code here to make experimenting
|
8
|
+
# with your gem easier. You can also use a different console, if you like.
|
9
|
+
|
10
|
+
# (If you use this, don't forget to add pry to your Gemfile!)
|
11
|
+
# require "pry"
|
12
|
+
# Pry.start
|
13
|
+
|
14
|
+
require "irb"
|
15
|
+
IRB.start(__FILE__)
|
data/bin/setup
ADDED
data/lib/mailersend.rb
ADDED
@@ -0,0 +1,11 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "mailersend/client"
|
4
|
+
require "mailersend/activity/activity"
|
5
|
+
require "mailersend/analytics/analytics"
|
6
|
+
require "mailersend/domains/domains"
|
7
|
+
require "mailersend/email/email"
|
8
|
+
require "mailersend/messages/messages"
|
9
|
+
require "mailersend/recipients/recipients"
|
10
|
+
require "mailersend/tokens/tokens"
|
11
|
+
require "mailersend/webhooks/webhooks"
|
@@ -0,0 +1,35 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Mailersend
|
4
|
+
# Activity endpoint from MailerSend API
|
5
|
+
class Activity
|
6
|
+
attr_accessor :client,
|
7
|
+
:domain_id,
|
8
|
+
:page,
|
9
|
+
:limit,
|
10
|
+
:date_from,
|
11
|
+
:date_to
|
12
|
+
|
13
|
+
def initialize(client = Mailersend::Client.new)
|
14
|
+
@client = client
|
15
|
+
@domain_id = domain_id
|
16
|
+
@page = page
|
17
|
+
@limit = limit
|
18
|
+
@date_from = date_from
|
19
|
+
@date_to = date_to
|
20
|
+
end
|
21
|
+
|
22
|
+
def get(domain_id:, page: nil, limit: nil, date_from: nil, date_to: nil)
|
23
|
+
hash = {
|
24
|
+
page: page,
|
25
|
+
limit: limit,
|
26
|
+
date_from: date_from,
|
27
|
+
date_to: date_to
|
28
|
+
}
|
29
|
+
|
30
|
+
response = client.http.get(URI::HTTPS.build(host: API_BASE_HOST, path: "/v1/analytics/#{domain_id}",
|
31
|
+
query: URI.encode_www_form(hash.compact)))
|
32
|
+
puts response
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,84 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Mailersend
|
4
|
+
# This is a class for getting the analytics from MailerSend API.
|
5
|
+
class Analytics
|
6
|
+
attr_accessor :client,
|
7
|
+
:date_from,
|
8
|
+
:date_to,
|
9
|
+
:events,
|
10
|
+
:domain_id,
|
11
|
+
:recipient_id,
|
12
|
+
:group_by,
|
13
|
+
:tags
|
14
|
+
|
15
|
+
def initialize(client = Mailersend::Client.new)
|
16
|
+
@client = client
|
17
|
+
@date_from = ""
|
18
|
+
@date_to = ""
|
19
|
+
@events = []
|
20
|
+
@domain_id = ""
|
21
|
+
@recipient_id = ""
|
22
|
+
@group_by = ""
|
23
|
+
@tags = []
|
24
|
+
end
|
25
|
+
|
26
|
+
def date(date_from:, date_to:, events:, domain_id: nil, recipient_id: nil, group_by: nil, tags: nil)
|
27
|
+
hash = {
|
28
|
+
"date_from" => date_from,
|
29
|
+
"date_to" => date_to,
|
30
|
+
"event[]" => events,
|
31
|
+
"domain_id" => domain_id,
|
32
|
+
"recipient_id" => recipient_id,
|
33
|
+
"group_by" => group_by,
|
34
|
+
"tags[]" => tags
|
35
|
+
}
|
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
|
40
|
+
end
|
41
|
+
|
42
|
+
def country(date_from:, date_to:, domain_id: nil, recipient_id: nil, tags: nil)
|
43
|
+
hash = {
|
44
|
+
domain_id: domain_id,
|
45
|
+
recipient_id: recipient_id,
|
46
|
+
date_from: date_from,
|
47
|
+
date_to: date_to,
|
48
|
+
"tags[]": tags
|
49
|
+
}
|
50
|
+
|
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
|
54
|
+
end
|
55
|
+
|
56
|
+
def ua_name(date_from:, date_to:, domain_id: nil, recipient_id: nil, tags: nil)
|
57
|
+
hash = {
|
58
|
+
domain_id: domain_id,
|
59
|
+
recipient_id: recipient_id,
|
60
|
+
date_from: date_from,
|
61
|
+
date_to: date_to,
|
62
|
+
"tags[]": tags
|
63
|
+
}
|
64
|
+
|
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
|
68
|
+
end
|
69
|
+
|
70
|
+
def ua_type(date_from:, date_to:, domain_id: nil, recipient_id: nil, tags: nil)
|
71
|
+
hash = {
|
72
|
+
domain_id: domain_id,
|
73
|
+
recipient_id: recipient_id,
|
74
|
+
date_from: date_from,
|
75
|
+
date_to: date_to,
|
76
|
+
"tags[]": tags
|
77
|
+
}
|
78
|
+
|
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
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "http"
|
4
|
+
require "dotenv/load"
|
5
|
+
|
6
|
+
API_URL = "https://api.mailersend.com/v1"
|
7
|
+
API_BASE_HOST = "api.mailersend.com"
|
8
|
+
|
9
|
+
Dotenv.require_keys("API_TOKEN")
|
10
|
+
|
11
|
+
# mailersend-ruby is a gem that integrates all endpoints from MailerSend API
|
12
|
+
module Mailersend
|
13
|
+
attr_reader :api_token
|
14
|
+
|
15
|
+
# Inits the client.
|
16
|
+
class Client
|
17
|
+
def initialize(api_token = ENV["API_TOKEN"])
|
18
|
+
@api_token = api_token
|
19
|
+
end
|
20
|
+
|
21
|
+
def http
|
22
|
+
HTTP
|
23
|
+
.timeout(connect: 15, read: 30)
|
24
|
+
.auth(@api_token)
|
25
|
+
.headers("User-Agent" => "MailerSend-client-ruby/1.0.0",
|
26
|
+
"Accept" => "application/json")
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,62 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Mailersend
|
4
|
+
# Domains endpoint from MailerSend API
|
5
|
+
class Domains
|
6
|
+
attr_accessor :client,
|
7
|
+
:domain_id,
|
8
|
+
:page,
|
9
|
+
:limit,
|
10
|
+
:verified
|
11
|
+
|
12
|
+
def initialize(client = Mailersend.client.new)
|
13
|
+
@client = client
|
14
|
+
@domain_id = domain_id
|
15
|
+
@page = page
|
16
|
+
@limit = limit
|
17
|
+
@verified = verified
|
18
|
+
end
|
19
|
+
|
20
|
+
def list
|
21
|
+
hash = {
|
22
|
+
"page" => page,
|
23
|
+
"limit" => limit,
|
24
|
+
"verified" => verified
|
25
|
+
}
|
26
|
+
response = client.http.get(URI::HTTPS.build(host: API_BASE_HOST, path: "/v1/domains/#{domain_id}",
|
27
|
+
query: URI.encode_www_form(hash.compact)))
|
28
|
+
puts response
|
29
|
+
end
|
30
|
+
|
31
|
+
def delete(domain_id:)
|
32
|
+
response = client.http.delete(URI::HTTPS.build(host: API_BASE_HOST, path: "/v1/domains/#{domain_id}"))
|
33
|
+
puts response
|
34
|
+
end
|
35
|
+
|
36
|
+
def recipients(domain_id:)
|
37
|
+
hash = {
|
38
|
+
"page" => page,
|
39
|
+
"limit" => limit
|
40
|
+
}
|
41
|
+
response = client.http.get(URI::HTTPS.build(host: API_BASE_HOST, path: "/v1/domains/#{domain_id}/recipients",
|
42
|
+
query: URI.encode_www_form(hash.compact)))
|
43
|
+
puts response
|
44
|
+
end
|
45
|
+
|
46
|
+
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)
|
47
|
+
hash = {
|
48
|
+
"send_paused" => send_paused,
|
49
|
+
"track_clicks" => track_clicks,
|
50
|
+
"track_opens" => track_opens,
|
51
|
+
"track_unsubscribe" => track_unsubscribe,
|
52
|
+
"track_unsubscribe_html" => track_unsubscribe_html,
|
53
|
+
"track_unsubscribe_plain" => track_unsubscribe_plain,
|
54
|
+
"track_content" => track_content,
|
55
|
+
"custom_tracking_enabled" => custom_tracking_enabled,
|
56
|
+
"custom_tracking_subdomain" => custom_tracking_subdomain
|
57
|
+
}
|
58
|
+
response = client.http.put("#{API_URL}/domains/#{domain_id}/settings", json: hash.compact)
|
59
|
+
puts response
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
@@ -0,0 +1,117 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "base64"
|
4
|
+
|
5
|
+
module Mailersend
|
6
|
+
# Send an email through MailerSend API
|
7
|
+
class Email
|
8
|
+
attr_accessor :client,
|
9
|
+
:from,
|
10
|
+
:recipients,
|
11
|
+
:subject,
|
12
|
+
:text,
|
13
|
+
:html,
|
14
|
+
:ccs,
|
15
|
+
:bcc,
|
16
|
+
:reply_to,
|
17
|
+
:attachments,
|
18
|
+
:template_id,
|
19
|
+
:tags,
|
20
|
+
:variables,
|
21
|
+
:personalization
|
22
|
+
|
23
|
+
def initialize(client = Mailersend::Client.new)
|
24
|
+
@client = client
|
25
|
+
@from = {}
|
26
|
+
@recipients = []
|
27
|
+
@ccs = []
|
28
|
+
@bcc = []
|
29
|
+
@reply_to = {}
|
30
|
+
@subject = nil
|
31
|
+
@text = {}
|
32
|
+
@html = {}
|
33
|
+
@variables = []
|
34
|
+
@personalization = []
|
35
|
+
@attachments = []
|
36
|
+
@tags = []
|
37
|
+
end
|
38
|
+
|
39
|
+
def add_recipients(recipients)
|
40
|
+
@recipients << recipients
|
41
|
+
end
|
42
|
+
|
43
|
+
def add_from(from)
|
44
|
+
@from = from
|
45
|
+
end
|
46
|
+
|
47
|
+
def add_cc(ccs)
|
48
|
+
@ccs << ccs
|
49
|
+
end
|
50
|
+
|
51
|
+
def add_bcc(bcc)
|
52
|
+
@bcc << bcc
|
53
|
+
end
|
54
|
+
|
55
|
+
def add_reply_to(_reply_to)
|
56
|
+
@reply_to = reply to
|
57
|
+
end
|
58
|
+
|
59
|
+
def add_subject(subject)
|
60
|
+
@subject = subject
|
61
|
+
end
|
62
|
+
|
63
|
+
def add_text(text)
|
64
|
+
@text = text
|
65
|
+
end
|
66
|
+
|
67
|
+
def add_html(html)
|
68
|
+
@html = html
|
69
|
+
end
|
70
|
+
|
71
|
+
def add_variables(variables)
|
72
|
+
@variables << variables
|
73
|
+
end
|
74
|
+
|
75
|
+
def add_personalization(personalization)
|
76
|
+
@personalization << personalization
|
77
|
+
end
|
78
|
+
|
79
|
+
def add_template_id(template_id)
|
80
|
+
@template_id = template_id
|
81
|
+
end
|
82
|
+
|
83
|
+
def add_tags(tags)
|
84
|
+
@tags << tags
|
85
|
+
end
|
86
|
+
|
87
|
+
def add_attachment(content:, filename:)
|
88
|
+
data = File.open(content.to_s).read
|
89
|
+
encoded = Base64.strict_encode64(data)
|
90
|
+
attachments << {
|
91
|
+
"content" => encoded,
|
92
|
+
"filename" => filename
|
93
|
+
}
|
94
|
+
end
|
95
|
+
|
96
|
+
def send
|
97
|
+
message = {
|
98
|
+
"from" => from,
|
99
|
+
"to" => recipients,
|
100
|
+
"cc" => ccs,
|
101
|
+
"bcc" => bcc,
|
102
|
+
"reply_to" => reply_to,
|
103
|
+
"subject" => subject,
|
104
|
+
"text" => text,
|
105
|
+
"html" => html,
|
106
|
+
"variables" => variables,
|
107
|
+
"personalization" => personalization,
|
108
|
+
"template_id" => template_id,
|
109
|
+
"attachments" => attachments
|
110
|
+
}
|
111
|
+
|
112
|
+
response = client.http.post("#{API_URL}/email", json: message.compact)
|
113
|
+
puts response
|
114
|
+
puts response.status.code
|
115
|
+
end
|
116
|
+
end
|
117
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Mailersend
|
4
|
+
# Messages endpoint from MailerSend API.
|
5
|
+
class Messages
|
6
|
+
attr_accessor :client,
|
7
|
+
:page,
|
8
|
+
:limit,
|
9
|
+
:message_id
|
10
|
+
|
11
|
+
def initialize(client = Mailersend::Client.new)
|
12
|
+
@client = client
|
13
|
+
@page = page
|
14
|
+
@limit = limit
|
15
|
+
@message_id = message_id
|
16
|
+
end
|
17
|
+
|
18
|
+
def list(page: nil, limit: nil)
|
19
|
+
hash = {
|
20
|
+
"page" => page,
|
21
|
+
"limit" => limit
|
22
|
+
}
|
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
|
27
|
+
end
|
28
|
+
|
29
|
+
def single(message_id:)
|
30
|
+
response = client.http.get("#{API_URL}/messages/#{message_id}")
|
31
|
+
puts response
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Mailersend
|
4
|
+
# Recipients endpoint from MailerSend API.
|
5
|
+
class Recipients
|
6
|
+
attr_accessor :client,
|
7
|
+
:page,
|
8
|
+
:limit,
|
9
|
+
:recipient_id
|
10
|
+
|
11
|
+
def initialize(client = Mailersend::Client.new)
|
12
|
+
@client = client
|
13
|
+
@page = page
|
14
|
+
@limit = limit
|
15
|
+
@recipient_id = recipient_id
|
16
|
+
end
|
17
|
+
|
18
|
+
def list(page: nil, limit: nil)
|
19
|
+
hash = {
|
20
|
+
"page" => page,
|
21
|
+
"limit" => limit
|
22
|
+
}
|
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
|
27
|
+
end
|
28
|
+
|
29
|
+
def single(recipient_id:)
|
30
|
+
response = client.http.get("#{API_URL}/recipients/#{recipient_id}")
|
31
|
+
puts response
|
32
|
+
end
|
33
|
+
|
34
|
+
def delete(recipient_id:)
|
35
|
+
response = client.http.delete("#{API_URL}/recipients/#{recipient_id}")
|
36
|
+
puts response
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Mailersend
|
4
|
+
# Tokens endpoint from MailerSend API.
|
5
|
+
class Tokens
|
6
|
+
attr_accessor :client,
|
7
|
+
:name,
|
8
|
+
:scopes,
|
9
|
+
:token_id,
|
10
|
+
:status
|
11
|
+
|
12
|
+
def initialize(client = Mailersend::Client.new)
|
13
|
+
@client = client
|
14
|
+
@name = {}
|
15
|
+
@scopes = []
|
16
|
+
@token_id = {}
|
17
|
+
@status = {}
|
18
|
+
end
|
19
|
+
|
20
|
+
def create(name:, scopes:)
|
21
|
+
json = {
|
22
|
+
"name" => name,
|
23
|
+
"scopes" => scopes
|
24
|
+
}
|
25
|
+
response = client.http.post("#{API_URL}/token", json: json)
|
26
|
+
puts response
|
27
|
+
end
|
28
|
+
|
29
|
+
def update(token_id:, status:)
|
30
|
+
status = {
|
31
|
+
status: status
|
32
|
+
}
|
33
|
+
response = client.http.put("#{API_URL}/token/#{token_id}/settings", json: status)
|
34
|
+
puts response
|
35
|
+
end
|
36
|
+
|
37
|
+
def delete(name:)
|
38
|
+
response = client.http.delete("#{API_URL}/token/#{name}")
|
39
|
+
puts response
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
@@ -0,0 +1,66 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Mailersend
|
4
|
+
# This is a class for getting the analytics from MailerSend API.
|
5
|
+
class Webhooks
|
6
|
+
attr_accessor :client,
|
7
|
+
:domain_id,
|
8
|
+
:url,
|
9
|
+
:name,
|
10
|
+
:events,
|
11
|
+
:enabled
|
12
|
+
|
13
|
+
def initialize(client = Mailersend::Client.new)
|
14
|
+
@client = client
|
15
|
+
@domain_id = domain_id
|
16
|
+
@url = url
|
17
|
+
@name = name
|
18
|
+
@events = []
|
19
|
+
@enabled = enabled
|
20
|
+
@events = events
|
21
|
+
end
|
22
|
+
|
23
|
+
def list(domain_id:)
|
24
|
+
hash = {
|
25
|
+
"domain_id" => domain_id
|
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
|
30
|
+
end
|
31
|
+
|
32
|
+
def single(webhook_id:)
|
33
|
+
response = client.http.get("#{API_URL}/webhooks/#{webhook_id}")
|
34
|
+
puts response
|
35
|
+
end
|
36
|
+
|
37
|
+
def create(url:, name:, events:, domain_id:, enabled: nil)
|
38
|
+
hash = {
|
39
|
+
"url" => url,
|
40
|
+
"name" => name,
|
41
|
+
"events" => events,
|
42
|
+
"domain_id" => domain_id,
|
43
|
+
"enabled" => enabled.to_s == "true"
|
44
|
+
}
|
45
|
+
|
46
|
+
response = client.http.post("#{API_URL}/webhooks", json: hash.compact)
|
47
|
+
puts response
|
48
|
+
end
|
49
|
+
|
50
|
+
def update(webhook_id:, url: nil, name: nil, events: nil, enabled: nil)
|
51
|
+
hash = {
|
52
|
+
"url" => url,
|
53
|
+
"name" => name,
|
54
|
+
"events" => events,
|
55
|
+
"enabled" => enabled.to_s == "true"
|
56
|
+
}
|
57
|
+
response = client.http.put("#{API_URL}/webhooks/#{webhook_id}", json: hash.compact)
|
58
|
+
puts response
|
59
|
+
end
|
60
|
+
|
61
|
+
def delete(webhook_id:)
|
62
|
+
response = client.http.delete("#{API_URL}/webhooks/#{webhook_id}")
|
63
|
+
puts response
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
lib = File.expand_path("lib", __dir__)
|
4
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
5
|
+
require "mailersend/version"
|
6
|
+
|
7
|
+
Gem::Specification.new do |spec|
|
8
|
+
spec.name = "mailersend-ruby"
|
9
|
+
spec.version = Mailersend::VERSION
|
10
|
+
spec.authors = ["Nikola Milojević"]
|
11
|
+
spec.email = ["info@mailersend.com"]
|
12
|
+
|
13
|
+
spec.summary = "MailerSend's official Ruby SDK"
|
14
|
+
spec.description = "MailerSend's official Ruby SDK. Interacts will all endpoints at MailerSend API."
|
15
|
+
spec.homepage = "https://www.mailersend.com"
|
16
|
+
spec.license = "MIT"
|
17
|
+
spec.required_ruby_version = ">= 2.5.0"
|
18
|
+
|
19
|
+
spec.metadata["allowed_push_host"] = "https://rubygems.org"
|
20
|
+
|
21
|
+
spec.metadata["homepage_uri"] = spec.homepage
|
22
|
+
spec.metadata["source_code_uri"] = "https://github.com/mailersend/mailersend-ruby"
|
23
|
+
spec.metadata["changelog_uri"] = "https://github.com/mailersend/mailersend-ruby/CHANGELOG.md"
|
24
|
+
|
25
|
+
spec.files = `git ls-files -z`.split("\x0")
|
26
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
27
|
+
spec.require_paths = ["lib"]
|
28
|
+
|
29
|
+
spec.add_development_dependency "bundler", "~> 2.2.15"
|
30
|
+
spec.add_development_dependency "rake", "~> 13.0"
|
31
|
+
spec.add_development_dependency "rubocop", "~> 1.7"
|
32
|
+
spec.add_dependency "dotenv-rails", "~> 2.7"
|
33
|
+
spec.add_dependency "http", "~> 5.0"
|
34
|
+
spec.add_dependency "json", "~> 2.5"
|
35
|
+
spec.add_dependency "uri", "~> 0.10.1"
|
36
|
+
end
|
metadata
ADDED
@@ -0,0 +1,172 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: mailersend-ruby
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Nikola Milojević
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2021-06-14 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 2.2.15
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 2.2.15
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '13.0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '13.0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rubocop
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '1.7'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '1.7'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: dotenv-rails
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '2.7'
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '2.7'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: http
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '5.0'
|
76
|
+
type: :runtime
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '5.0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: json
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '2.5'
|
90
|
+
type: :runtime
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - "~>"
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '2.5'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: uri
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - "~>"
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: 0.10.1
|
104
|
+
type: :runtime
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - "~>"
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: 0.10.1
|
111
|
+
description: MailerSend's official Ruby SDK. Interacts will all endpoints at MailerSend
|
112
|
+
API.
|
113
|
+
email:
|
114
|
+
- info@mailersend.com
|
115
|
+
executables:
|
116
|
+
- console
|
117
|
+
- setup
|
118
|
+
extensions: []
|
119
|
+
extra_rdoc_files: []
|
120
|
+
files:
|
121
|
+
- ".env.example"
|
122
|
+
- ".github/workflows/main.yml"
|
123
|
+
- ".gitignore"
|
124
|
+
- ".rubocop.yml"
|
125
|
+
- CHANGELOG.md
|
126
|
+
- Gemfile
|
127
|
+
- LICENSE.txt
|
128
|
+
- README.md
|
129
|
+
- Rakefile
|
130
|
+
- bin/console
|
131
|
+
- bin/setup
|
132
|
+
- lib/mailersend-ruby.rb
|
133
|
+
- lib/mailersend.rb
|
134
|
+
- lib/mailersend/activity/activity.rb
|
135
|
+
- lib/mailersend/analytics/analytics.rb
|
136
|
+
- lib/mailersend/client.rb
|
137
|
+
- lib/mailersend/domains/domains.rb
|
138
|
+
- lib/mailersend/email/email.rb
|
139
|
+
- lib/mailersend/messages/messages.rb
|
140
|
+
- lib/mailersend/recipients/recipients.rb
|
141
|
+
- lib/mailersend/tokens/tokens.rb
|
142
|
+
- lib/mailersend/version.rb
|
143
|
+
- lib/mailersend/webhooks/webhooks.rb
|
144
|
+
- mailersend-ruby.gemspec
|
145
|
+
homepage: https://www.mailersend.com
|
146
|
+
licenses:
|
147
|
+
- MIT
|
148
|
+
metadata:
|
149
|
+
allowed_push_host: https://rubygems.org
|
150
|
+
homepage_uri: https://www.mailersend.com
|
151
|
+
source_code_uri: https://github.com/mailersend/mailersend-ruby
|
152
|
+
changelog_uri: https://github.com/mailersend/mailersend-ruby/CHANGELOG.md
|
153
|
+
post_install_message:
|
154
|
+
rdoc_options: []
|
155
|
+
require_paths:
|
156
|
+
- lib
|
157
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
158
|
+
requirements:
|
159
|
+
- - ">="
|
160
|
+
- !ruby/object:Gem::Version
|
161
|
+
version: 2.5.0
|
162
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
163
|
+
requirements:
|
164
|
+
- - ">="
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: '0'
|
167
|
+
requirements: []
|
168
|
+
rubygems_version: 3.2.15
|
169
|
+
signing_key:
|
170
|
+
specification_version: 4
|
171
|
+
summary: MailerSend's official Ruby SDK
|
172
|
+
test_files: []
|