sendgrid-ruby 4.3.3 → 5.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (34) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +3 -1
  3. data/CHANGELOG.md +20 -1
  4. data/README.md +4 -4
  5. data/USE_CASES.md +5 -5
  6. data/examples/helpers/mail/example.rb +37 -37
  7. data/lib/sendgrid-ruby.rb +20 -0
  8. data/lib/sendgrid/helpers/mail/asm.rb +33 -0
  9. data/lib/sendgrid/helpers/mail/attachment.rb +63 -0
  10. data/lib/sendgrid/helpers/mail/bcc_settings.rb +33 -0
  11. data/lib/sendgrid/helpers/mail/bypass_list_management.rb +43 -0
  12. data/lib/sendgrid/helpers/mail/category.rb +28 -0
  13. data/lib/sendgrid/helpers/mail/click_tracking.rb +33 -0
  14. data/lib/sendgrid/helpers/mail/content.rb +33 -0
  15. data/lib/sendgrid/helpers/mail/custom_arg.rb +24 -0
  16. data/lib/sendgrid/helpers/mail/email.rb +33 -0
  17. data/lib/sendgrid/helpers/mail/footer.rb +43 -0
  18. data/lib/sendgrid/helpers/mail/ganalytics.rb +74 -0
  19. data/lib/sendgrid/helpers/mail/header.rb +24 -0
  20. data/lib/sendgrid/helpers/mail/mail.rb +30 -857
  21. data/lib/sendgrid/helpers/mail/mail_settings.rb +63 -0
  22. data/lib/sendgrid/helpers/mail/open_tracking.rb +33 -0
  23. data/lib/sendgrid/helpers/mail/personalization.rb +75 -0
  24. data/lib/sendgrid/helpers/mail/section.rb +24 -0
  25. data/lib/sendgrid/helpers/mail/spam_check.rb +43 -0
  26. data/lib/sendgrid/helpers/mail/subscription_tracking.rb +53 -0
  27. data/lib/sendgrid/helpers/mail/substitution.rb +24 -0
  28. data/lib/sendgrid/helpers/mail/tracking_settings.rb +53 -0
  29. data/lib/sendgrid/version.rb +1 -1
  30. data/test/sendgrid/helpers/mail/test_category.rb +27 -0
  31. data/test/sendgrid/helpers/mail/test_mail.rb +170 -52
  32. data/test/sendgrid/helpers/mail/test_personalizations.rb +146 -0
  33. data/test/sendgrid/test_sendgrid-ruby.rb +1 -1
  34. metadata +27 -3
@@ -0,0 +1,33 @@
1
+ require 'json'
2
+
3
+ module SendGrid
4
+ class Content
5
+ def initialize(type: nil, value: nil)
6
+ @type = type
7
+ @value = value
8
+ end
9
+
10
+ def type=(type)
11
+ @type = type
12
+ end
13
+
14
+ def type
15
+ @type
16
+ end
17
+
18
+ def value=(value)
19
+ @value = value
20
+ end
21
+
22
+ def value
23
+ @value
24
+ end
25
+
26
+ def to_json(*)
27
+ {
28
+ 'type' => self.type,
29
+ 'value' => self.value
30
+ }.delete_if { |_, value| value.to_s.strip == '' }
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,24 @@
1
+ require 'json'
2
+
3
+ module SendGrid
4
+ class CustomArg
5
+ def initialize(key: nil, value: nil)
6
+ @custom_arg = {}
7
+ (key.nil? || value.nil?) ? @custom_arg = nil : @custom_arg[key] = value
8
+ end
9
+
10
+ def custom_arg=(custom_arg)
11
+ @custom_arg = custom_arg
12
+ end
13
+
14
+ def custom_arg
15
+ @custom_arg
16
+ end
17
+
18
+ def to_json(*)
19
+ {
20
+ 'custom_arg' => self.custom_arg
21
+ }.delete_if { |_, value| value.to_s.strip == '' }
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,33 @@
1
+ require 'json'
2
+
3
+ module SendGrid
4
+ class Email
5
+ def initialize(email: nil, name: nil)
6
+ @email = email
7
+ @name = name
8
+ end
9
+
10
+ def email=(email)
11
+ @email = email
12
+ end
13
+
14
+ def email
15
+ @email
16
+ end
17
+
18
+ def name=(name)
19
+ @name = name
20
+ end
21
+
22
+ def name
23
+ @name
24
+ end
25
+
26
+ def to_json(*)
27
+ {
28
+ 'email' => self.email,
29
+ 'name' => self.name
30
+ }.delete_if { |_, value| value.to_s.strip == '' }
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,43 @@
1
+ require 'json'
2
+
3
+ module SendGrid
4
+ class Footer
5
+ def initialize(enable: nil, text: nil, html: nil)
6
+ @enable = enable
7
+ @text = text
8
+ @html = html
9
+ end
10
+
11
+ def enable=(enable)
12
+ @enable = enable
13
+ end
14
+
15
+ def enable
16
+ @enable
17
+ end
18
+
19
+ def text=(text)
20
+ @text = text
21
+ end
22
+
23
+ def text
24
+ @text
25
+ end
26
+
27
+ def html=(html)
28
+ @html = html
29
+ end
30
+
31
+ def html
32
+ @html
33
+ end
34
+
35
+ def to_json(*)
36
+ {
37
+ 'enable' => self.enable,
38
+ 'text' => self.text,
39
+ 'html' => self.html
40
+ }.delete_if { |_, value| value.to_s.strip == '' }
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,74 @@
1
+ require 'json'
2
+
3
+ module SendGrid
4
+ class Ganalytics
5
+ def initialize(enable: nil, utm_source: nil, utm_medium: nil, utm_term: nil, utm_content: nil, utm_campaign: nil, utm_name: nil)
6
+ @enable = enable
7
+ @utm_source = utm_source
8
+ @utm_medium = utm_medium
9
+ @utm_term = utm_term
10
+ @utm_content = utm_content
11
+ @utm_campaign = utm_campaign
12
+ @utm_name = utm_name
13
+ end
14
+
15
+ def enable=(enable)
16
+ @enable = enable
17
+ end
18
+
19
+ def enable
20
+ @enable
21
+ end
22
+
23
+ def utm_source=(utm_source)
24
+ @utm_source = utm_source
25
+ end
26
+
27
+ def utm_source
28
+ @utm_source
29
+ end
30
+
31
+ def utm_medium=(utm_medium)
32
+ @utm_medium = utm_medium
33
+ end
34
+
35
+ def utm_medium
36
+ @utm_medium
37
+ end
38
+
39
+ def utm_term=(utm_term)
40
+ @utm_term = utm_term
41
+ end
42
+
43
+ def utm_term
44
+ @utm_term
45
+ end
46
+
47
+ def utm_content=(utm_content)
48
+ @utm_content = utm_content
49
+ end
50
+
51
+ def utm_content
52
+ @utm_content
53
+ end
54
+
55
+ def utm_campaign=(utm_campaign)
56
+ @utm_campaign = utm_campaign
57
+ end
58
+
59
+ def utm_campaign
60
+ @utm_campaign
61
+ end
62
+
63
+ def to_json(*)
64
+ {
65
+ 'enable' => self.enable,
66
+ 'utm_source' => self.utm_source,
67
+ 'utm_medium' => self.utm_medium,
68
+ 'utm_term' => self.utm_term,
69
+ 'utm_content' => self.utm_content,
70
+ 'utm_campaign' => self.utm_campaign
71
+ }.delete_if { |_, value| value.to_s.strip == '' }
72
+ end
73
+ end
74
+ end
@@ -0,0 +1,24 @@
1
+ require 'json'
2
+
3
+ module SendGrid
4
+ class Header
5
+ def initialize(key: nil, value: nil)
6
+ @header = {}
7
+ (key.nil? || value.nil?) ? @header = nil : @header[key] = value
8
+ end
9
+
10
+ def header=(header)
11
+ @header = header
12
+ end
13
+
14
+ def header
15
+ @header
16
+ end
17
+
18
+ def to_json(*)
19
+ {
20
+ 'header' => self.header
21
+ }.delete_if { |_, value| value.to_s.strip == '' }
22
+ end
23
+ end
24
+ end
@@ -3,812 +3,21 @@
3
3
  require 'json'
4
4
 
5
5
  module SendGrid
6
- class Ganalytics
7
- def initialize(enable: nil, utm_source: nil, utm_medium: nil, utm_term: nil, utm_content: nil, utm_campaign: nil, utm_name: nil)
8
- @enable = enable
9
- @utm_source = utm_source
10
- @utm_medium = utm_medium
11
- @utm_term = utm_term
12
- @utm_content = utm_content
13
- @utm_campaign = utm_campaign
14
- @utm_name = utm_name
15
- end
16
-
17
- def enable=(enable)
18
- @enable = enable
19
- end
20
-
21
- def enable
22
- @enable
23
- end
24
-
25
- def utm_source=(utm_source)
26
- @utm_source = utm_source
27
- end
28
-
29
- def utm_source
30
- @utm_source
31
- end
32
-
33
- def utm_medium=(utm_medium)
34
- @utm_medium = utm_medium
35
- end
36
-
37
- def utm_medium
38
- @utm_medium
39
- end
40
-
41
- def utm_term=(utm_term)
42
- @utm_term = utm_term
43
- end
44
-
45
- def utm_term
46
- @utm_term
47
- end
48
-
49
- def utm_content=(utm_content)
50
- @utm_content = utm_content
51
- end
52
-
53
- def utm_content
54
- @utm_content
55
- end
56
-
57
- def utm_campaign=(utm_campaign)
58
- @utm_campaign = utm_campaign
59
- end
60
-
61
- def utm_campaign
62
- @utm_campaign
63
- end
64
-
65
- def to_json(*)
66
- {
67
- 'enable' => self.enable,
68
- 'utm_source' => self.utm_source,
69
- 'utm_medium' => self.utm_medium,
70
- 'utm_term' => self.utm_term,
71
- 'utm_content' => self.utm_content,
72
- 'utm_campaign' => self.utm_campaign
73
- }.delete_if { |_, value| value.to_s.strip == '' }
74
- end
75
- end
76
-
77
- class SubscriptionTracking
78
- def initialize(enable: nil, text: nil, html: nil, substitution_tag: nil)
79
- @enable = enable
80
- @text = text
81
- @html = html
82
- @substitution_tag = substitution_tag
83
- end
84
-
85
- def enable=(enable)
86
- @enable = enable
87
- end
88
-
89
- def enable
90
- @enable
91
- end
92
-
93
- def text=(text)
94
- @text = text
95
- end
96
-
97
- def text
98
- @text
99
- end
100
-
101
- def html=(html)
102
- @html = html
103
- end
104
-
105
- def html
106
- @html
107
- end
108
-
109
- def substitution_tag=(substitution_tag)
110
- @substitution_tag = substitution_tag
111
- end
112
-
113
- def substitution_tag
114
- @substitution_tag
115
- end
116
-
117
- def to_json(*)
118
- {
119
- 'enable' => self.enable,
120
- 'text' => self.text,
121
- 'html' => self.html,
122
- 'substitution_tag' => self.substitution_tag
123
- }.delete_if { |_, value| value.to_s.strip == '' }
124
- end
125
- end
126
-
127
- class OpenTracking
128
- def initialize(enable: nil, substitution_tag: nil)
129
- @enable = enable
130
- @substitution_tag = substitution_tag
131
- end
132
-
133
- def enable=(enable)
134
- @enable = enable
135
- end
136
-
137
- def enable
138
- @enable
139
- end
140
-
141
- def substitution_tag=(substitution_tag)
142
- @substitution_tag = substitution_tag
143
- end
144
-
145
- def substitution_tag
146
- @substitution_tag
147
- end
148
-
149
- def to_json(*)
150
- {
151
- 'enable' => self.enable,
152
- 'substitution_tag' => self.substitution_tag
153
- }.delete_if { |_, value| value.to_s.strip == '' }
154
- end
155
- end
156
-
157
- class ClickTracking
158
- def initialize(enable: nil, enable_text: nil)
159
- @enable = enable
160
- @enable_text = enable_text
161
- end
162
-
163
- def enable=(enable)
164
- @enable = enable
165
- end
166
-
167
- def enable
168
- @enable
169
- end
170
-
171
- def enable_text=(enable_text)
172
- @enable_text = enable_text
173
- end
174
-
175
- def enable_text
176
- @enable_text
177
- end
178
-
179
- def to_json(*)
180
- {
181
- 'enable' => self.enable,
182
- 'enable_text' => self.enable_text
183
- }.delete_if { |_, value| value.to_s.strip == '' }
184
- end
185
- end
186
-
187
- class TrackingSettings
188
- def initialize
189
- @click_tracking = nil
190
- @open_tracking = nil
191
- @subscription_tracking = nil
192
- @ganalytics = nil
193
- end
194
-
195
- def click_tracking=(click_tracking)
196
- @click_tracking = click_tracking
197
- end
198
-
199
- def click_tracking
200
- @click_tracking.nil? ? nil : @click_tracking.to_json
201
- end
202
-
203
- def open_tracking=(open_tracking)
204
- @open_tracking = open_tracking
205
- end
206
-
207
- def open_tracking
208
- @open_tracking.nil? ? nil : @open_tracking.to_json
209
- end
210
-
211
- def subscription_tracking=(subscription_tracking)
212
- @subscription_tracking = subscription_tracking
213
- end
214
-
215
- def subscription_tracking
216
- @subscription_tracking.nil? ? nil : @subscription_tracking.to_json
217
- end
218
-
219
- def ganalytics=(ganalytics)
220
- @ganalytics = ganalytics
221
- end
222
-
223
- def ganalytics
224
- @ganalytics.nil? ? nil : @ganalytics.to_json
225
- end
226
-
227
- def to_json(*)
228
- {
229
- 'click_tracking' => self.click_tracking,
230
- 'open_tracking' => self.open_tracking,
231
- 'subscription_tracking' => self.subscription_tracking,
232
- 'ganalytics' => self.ganalytics
233
- }.delete_if { |_, value| value.to_s.strip == '' }
234
- end
235
- end
236
-
237
- class SpamCheck
238
- def initialize(enable: nil, threshold: nil, post_to_url: nil)
239
- @enable = enable
240
- @threshold = threshold
241
- @post_to_url = post_to_url
242
- end
243
-
244
- def enable=(enable)
245
- @enable = enable
246
- end
247
-
248
- def enable
249
- @enable
250
- end
251
-
252
- def threshold=(threshold)
253
- @threshold = threshold
254
- end
255
-
256
- def threshold
257
- @threshold
258
- end
259
-
260
- def post_to_url=(post_to_url)
261
- @post_to_url = post_to_url
262
- end
263
-
264
- def post_to_url
265
- @post_to_url
266
- end
267
-
268
- def to_json(*)
269
- {
270
- 'enable' => self.enable,
271
- 'threshold' => self.threshold,
272
- 'post_to_url' => self.post_to_url
273
- }.delete_if { |_, value| value.to_s.strip == '' }
274
- end
275
- end
276
-
277
- class Footer
278
- def initialize(enable: nil, text: nil, html: nil)
279
- @enable = enable
280
- @text = text
281
- @html = html
282
- end
283
-
284
- def enable=(enable)
285
- @enable = enable
286
- end
287
-
288
- def enable
289
- @enable
290
- end
291
-
292
- def text=(text)
293
- @text = text
294
- end
295
-
296
- def text
297
- @text
298
- end
299
-
300
- def html=(html)
301
- @html = html
302
- end
303
-
304
- def html
305
- @html
306
- end
307
-
308
- def to_json(*)
309
- {
310
- 'enable' => self.enable,
311
- 'text' => self.text,
312
- 'html' => self.html
313
- }.delete_if { |_, value| value.to_s.strip == '' }
314
- end
315
- end
316
-
317
- class BccSettings
318
- def initialize(enable: nil, email: nil)
319
- @enable = enable
320
- @email = email
321
- end
322
-
323
- def enable=(enable)
324
- @enable = enable
325
- end
326
-
327
- def enable
328
- @enable
329
- end
330
-
331
- def email=(email)
332
- @email = email
333
- end
334
-
335
- def email
336
- @email
337
- end
338
-
339
- def to_json(*)
340
- {
341
- 'enable' => self.enable,
342
- 'email' => self.email
343
- }.delete_if { |_, value| value.to_s.strip == '' }
344
- end
345
- end
346
-
347
- class BypassListManagement
348
- def initialize(enable: nil)
349
- @enable = enable
350
- end
351
-
352
- def enable=(enable)
353
- @enable = enable
354
- end
355
-
356
- def enable
357
- @enable
358
- end
359
-
360
- def to_json(*)
361
- {
362
- 'enable' => self.enable
363
- }.delete_if { |_, value| value.to_s.strip == '' }
364
- end
365
- end
366
-
367
- class SandBoxMode
368
- def initialize(enable: nil)
369
- @enable = enable
370
- end
371
-
372
- def enable=(enable)
373
- @enable = enable
374
- end
375
-
376
- def enable
377
- @enable
378
- end
379
-
380
- def to_json(*)
381
- {
382
- 'enable' => self.enable
383
- }.delete_if { |_, value| value.to_s.strip == '' }
384
- end
385
- end
386
-
387
- class MailSettings
388
- def initialize
389
- @bcc = nil
390
- @bypass_list_management = nil
391
- @footer = nil
392
- @sandbox_mode = nil
393
- @spam_check = nil
394
- end
395
-
396
- def sandbox_mode=(sandbox_mode)
397
- @sandbox_mode = sandbox_mode
398
- end
399
-
400
- def sandbox_mode
401
- @sandbox_mode.nil? ? nil : @sandbox_mode.to_json
402
- end
403
-
404
- def bypass_list_management=(bypass_list_management)
405
- @bypass_list_management = bypass_list_management
406
- end
407
-
408
- def bypass_list_management
409
- @bypass_list_management.nil? ? nil : @bypass_list_management.to_json
410
- end
411
-
412
- def footer=(footer)
413
- @footer = footer
414
- end
415
-
416
- def footer
417
- @footer.nil? ? nil : @footer.to_json
418
- end
419
-
420
- def bcc=(bcc)
421
- @bcc = bcc
422
- end
423
-
424
- def bcc
425
- @bcc.nil? ? nil : @bcc.to_json
426
- end
427
-
428
- def spam_check=(spam_check)
429
- @spam_check = spam_check
430
- end
431
-
432
- def spam_check
433
- @spam_check.nil? ? nil : @spam_check.to_json
434
- end
435
-
436
- def to_json(*)
437
- {
438
- 'bcc' => self.bcc,
439
- 'bypass_list_management' => self.bypass_list_management,
440
- 'footer' => self.footer,
441
- 'sandbox_mode' => self.sandbox_mode,
442
- 'spam_check' => self.spam_check
443
- }.delete_if { |_, value| value.to_s.strip == '' }
444
- end
445
- end
446
-
447
- class ASM
448
- def initialize(group_id: nil, groups_to_display: nil)
449
- @group_id = group_id
450
- @groups_to_display = groups_to_display
451
- end
452
-
453
- def group_id=(group_id)
454
- @group_id = group_id
455
- end
456
-
457
- def group_id
458
- @group_id
459
- end
460
-
461
- def groups_to_display=(groups_to_display)
462
- @groups_to_display = groups_to_display
463
- end
464
-
465
- def groups_to_display
466
- @groups_to_display
467
- end
468
-
469
- def to_json(*)
470
- {
471
- 'group_id' => self.group_id,
472
- 'groups_to_display' => self.groups_to_display
473
- }.delete_if { |_, value| value.to_s.strip == '' }
474
- end
475
- end
476
-
477
- class Category
478
- def initialize(name: nil)
479
- @category = name
480
- end
481
-
482
- def category=(category)
483
- @category = category
484
- end
485
-
486
- def category
487
- @category
488
- end
489
-
490
- def to_json(*)
491
- {
492
- 'category' => self.category
493
- }.delete_if { |_, value| value.to_s.strip == '' }
494
- end
495
- end
496
-
497
- class Section
498
- def initialize(key: nil, value: nil)
499
- @section = {}
500
- (key.nil? || value.nil?) ? @section = nil : @section[key] = value
501
- end
502
-
503
- def section=(section)
504
- @section = section
505
- end
506
-
507
- def section
508
- @section
509
- end
510
-
511
- def to_json(*)
512
- {
513
- 'section' => self.section
514
- }.delete_if { |_, value| value.to_s.strip == '' }
515
- end
516
- end
517
-
518
- class Attachment
519
- def initialize
520
- @content = nil
521
- @type = nil
522
- @filename = nil
523
- @disposition = nil
524
- @content_id = nil
525
- end
526
-
527
- def content=(content)
528
- @content = content
529
- end
530
-
531
- def content
532
- @content
533
- end
534
-
535
- def type=(type)
536
- @type = type
537
- end
538
-
539
- def type
540
- @type
541
- end
542
-
543
- def filename=(filename)
544
- @filename = filename
545
- end
546
-
547
- def filename
548
- @filename
549
- end
550
-
551
- def disposition=(disposition)
552
- @disposition = disposition
553
- end
554
-
555
- def disposition
556
- @disposition
557
- end
558
-
559
- def content_id=(content_id)
560
- @content_id = content_id
561
- end
562
-
563
- def content_id
564
- @content_id
565
- end
566
-
567
- def to_json(*)
568
- {
569
- 'content' => self.content,
570
- 'type' => self.type,
571
- 'filename' => self.filename,
572
- 'disposition' => self.disposition,
573
- 'content_id' => self.content_id
574
- }.delete_if { |_, value| value.to_s.strip == '' }
575
- end
576
- end
577
-
578
- class Header
579
- def initialize(key: nil, value: nil)
580
- @header = {}
581
- (key.nil? || value.nil?) ? @header = nil : @header[key] = value
582
- end
583
-
584
- def header=(header)
585
- @header = header
586
- end
587
-
588
- def header
589
- @header
590
- end
591
-
592
- def to_json(*)
593
- {
594
- 'header' => self.header
595
- }.delete_if { |_, value| value.to_s.strip == '' }
596
- end
597
- end
598
-
599
- class Substitution
600
- def initialize(key: nil, value: nil)
601
- @substitution = {}
602
- (key.nil? || value.nil?) ? @substitution = nil : @substitution[key] = value
603
- end
604
-
605
- def substitution=(substitution)
606
- @substitution = substitution
607
- end
608
-
609
- def substitution
610
- @substitution
611
- end
612
-
613
- def to_json(*)
614
- {
615
- 'substitution' => self.substitution
616
- }.delete_if { |_, value| value.to_s.strip == '' }
617
- end
618
- end
619
-
620
- class CustomArg
621
- def initialize(key: nil, value: nil)
622
- @custom_arg = {}
623
- (key.nil? || value.nil?) ? @custom_arg = nil : @custom_arg[key] = value
624
- end
625
-
626
- def custom_arg=(custom_arg)
627
- @custom_arg = custom_arg
628
- end
629
-
630
- def custom_arg
631
- @custom_arg
632
- end
633
-
634
- def to_json(*)
635
- {
636
- 'custom_arg' => self.custom_arg
637
- }.delete_if { |_, value| value.to_s.strip == '' }
638
- end
639
- end
640
-
641
- class Content
642
- def initialize(type: nil, value: nil)
643
- @type = type
644
- @value = value
645
- end
646
-
647
- def type=(type)
648
- @type = type
649
- end
650
-
651
- def type
652
- @type
653
- end
654
-
655
- def value=(value)
656
- @value = value
657
- end
658
-
659
- def value
660
- @value
661
- end
662
-
663
- def to_json(*)
664
- {
665
- 'type' => self.type,
666
- 'value' => self.value
667
- }.delete_if { |_, value| value.to_s.strip == '' }
668
- end
669
- end
670
-
671
- class Personalization
672
- def initialize
673
- @tos = nil
674
- @ccs = nil
675
- @bccs = nil
676
- @subject = nil
677
- @headers = nil
678
- @substitutions = nil
679
- @custom_args = nil
680
- @send_at = nil
681
- end
682
-
683
- def to=(to)
684
- @tos = @tos.nil? ? [] : @tos
685
- @tos = @tos.push(to.to_json)
686
- end
687
-
688
- def tos
689
- @tos
690
- end
691
-
692
- def cc=(cc)
693
- @ccs = @ccs.nil? ? [] : @ccs
694
- @ccs = @ccs.push(cc.to_json)
695
- end
696
-
697
- def ccs
698
- @ccs
699
- end
700
-
701
- def bcc=(bcc)
702
- @bccs = @bccs.nil? ? [] : @bccs
703
- @bccs = @bccs.push(bcc.to_json)
704
- end
705
-
706
- def bccs
707
- @bccs
708
- end
709
-
710
- def subject=(subject)
711
- @subject = subject
712
- end
713
-
714
- def subject
715
- @subject
716
- end
717
-
718
- def headers=(headers)
719
- @headers = @headers.nil? ? {} : @headers
720
- headers = headers.to_json
721
- @headers = @headers.merge(headers['header'])
722
- end
723
-
724
- def headers
725
- @headers
726
- end
727
-
728
- def substitutions=(substitutions)
729
- @substitutions = @substitutions.nil? ? {} : @substitutions
730
- substitutions = substitutions.to_json
731
- @substitutions = @substitutions.merge(substitutions['substitution'])
732
- end
733
-
734
- def substitutions
735
- @substitutions
736
- end
737
-
738
- def custom_args=(custom_args)
739
- @custom_args = @custom_args.nil? ? {} : @custom_args
740
- custom_args = custom_args.to_json
741
- @custom_args = @custom_args.merge(custom_args['custom_arg'])
742
- end
743
-
744
- def custom_args
745
- @custom_args
746
- end
747
-
748
- def send_at=(send_at)
749
- @send_at = send_at
750
- end
751
-
752
- def send_at
753
- @send_at
754
- end
755
-
756
- def to_json(*)
757
- {
758
- 'to' => self.tos,
759
- 'cc' => self.ccs,
760
- 'bcc' => self.bccs,
761
- 'subject' => self.subject,
762
- 'headers' => self.headers,
763
- 'substitutions' => self.substitutions,
764
- 'custom_args' => self.custom_args,
765
- 'send_at' => self.send_at
766
- }.delete_if { |_, value| value.to_s.strip == '' }
767
- end
768
- end
769
-
770
- class Email
771
- def initialize(email: nil, name: nil)
772
- @email = email
773
- @name = name
774
- end
775
-
776
- def email=(email)
777
- @email = email
778
- end
779
-
780
- def email
781
- @email
782
- end
6
+ class Mail
783
7
 
784
- def name=(name)
785
- @name = name
786
- end
8
+ attr_reader :personalizations, :contents, :attachments, :categories, :sections, :headers, :custom_args
787
9
 
788
- def name
789
- @name
790
- end
791
-
792
- def to_json(*)
793
- {
794
- 'email' => self.email,
795
- 'name' => self.name
796
- }.delete_if { |_, value| value.to_s.strip == '' }
797
- end
798
- end
799
-
800
- class Mail
801
10
  def initialize(from_email=nil, subj=nil, to_email=nil, cont=nil)
802
11
  @from = nil
803
12
  @subject = nil
804
- @personalizations = nil
805
- @contents = nil
806
- @attachments = nil
13
+ @personalizations = []
14
+ @contents = []
15
+ @attachments = []
807
16
  @template_id = nil
808
- @sections = nil
809
- @headers = nil
810
- @categories = nil
811
- @custom_args = nil
17
+ @sections = {}
18
+ @headers = {}
19
+ @categories = []
20
+ @custom_args = {}
812
21
  @send_at = nil
813
22
  @batch_id = nil
814
23
  @asm = nil
@@ -821,9 +30,9 @@ module SendGrid
821
30
  self.from = from_email
822
31
  self.subject = subj
823
32
  personalization = Personalization.new
824
- personalization.to = to_email
825
- self.personalizations = personalization
826
- self.contents = cont
33
+ personalization.add_to(to_email)
34
+ self.add_personalization(personalization)
35
+ self.add_content(cont)
827
36
  end
828
37
  end
829
38
 
@@ -843,31 +52,20 @@ module SendGrid
843
52
  @subject
844
53
  end
845
54
 
846
- def personalizations=(personalizations)
847
- @personalizations = @personalizations.nil? ? [] : @personalizations
848
- @personalizations = @personalizations.push(personalizations.to_json)
849
- end
850
-
851
- def personalizations
852
- @personalizations.nil? ? nil : @personalizations
55
+ def add_personalization(personalization)
56
+ @personalizations << personalization.to_json
853
57
  end
854
58
 
855
- def contents=(content)
856
- @contents = @contents ? @contents : []
857
- @contents = @contents.push(content.to_json)
59
+ def add_content(content)
60
+ @contents << content.to_json
858
61
  end
859
62
 
860
- def contents
861
- @contents
63
+ def add_attachment(attachment)
64
+ @attachments << attachment.to_json
862
65
  end
863
66
 
864
- def attachments=(attachments)
865
- @attachments = @attachments.nil? ? [] : @attachments
866
- @attachments = @attachments.push(attachments.to_json)
867
- end
868
-
869
- def attachments
870
- @attachments
67
+ def add_category(category)
68
+ @categories << category.name
871
69
  end
872
70
 
873
71
  def template_id=(template_id)
@@ -878,44 +76,19 @@ module SendGrid
878
76
  @template_id
879
77
  end
880
78
 
881
- def sections=(sections)
882
- @sections = @sections.nil? ? {} : @sections
883
- sections = sections.to_json
884
- @sections = @sections.merge(sections['section'])
885
- end
886
-
887
- def sections
888
- @sections
889
- end
890
-
891
- def headers=(headers)
892
- @headers = @headers.nil? ? {} : @headers
893
- headers = headers.to_json
894
- @headers = @headers.merge(headers['header'])
895
- end
896
-
897
- def headers
898
- @headers
899
- end
900
-
901
- def categories=(category)
902
- @categories = @categories.nil? ? [] : @categories
903
- category = category.to_json
904
- @categories = @categories.push(category['category'])
905
- end
906
-
907
- def categories
908
- @categories
79
+ def add_section(section)
80
+ section = section.to_json
81
+ @sections = @sections.merge(section['section'])
909
82
  end
910
83
 
911
- def custom_args=(custom_args)
912
- @custom_args = @custom_args.nil? ? {} : @custom_args
913
- custom_args = custom_args.to_json
914
- @custom_args = @custom_args.merge(custom_args['custom_arg'])
84
+ def add_header(header)
85
+ header = header.to_json
86
+ @headers = @headers.merge(header['header'])
915
87
  end
916
88
 
917
- def custom_args
918
- @custom_args
89
+ def add_custom_arg(custom_arg)
90
+ custom_arg = custom_arg.to_json
91
+ @custom_args = @custom_args.merge(custom_arg['custom_arg'])
919
92
  end
920
93
 
921
94
  def send_at=(send_at)
@@ -993,7 +166,7 @@ module SendGrid
993
166
  'mail_settings' => self.mail_settings,
994
167
  'tracking_settings' => self.tracking_settings,
995
168
  'reply_to' => self.reply_to
996
- }.delete_if { |_, value| value.to_s.strip == '' }
169
+ }.delete_if { |_, value| value.to_s.strip == '' || value == [] || value == {}}
997
170
  end
998
171
  end
999
172
  end