sendgrid-ruby 1.1.6 → 3.0.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.
Files changed (62) hide show
  1. checksums.yaml +4 -4
  2. data/.github/ISSUE_TEMPLATE +17 -0
  3. data/.travis.yml +1 -6
  4. data/CHANGELOG.md +6 -0
  5. data/CONTRIBUTING.md +202 -0
  6. data/Gemfile +3 -5
  7. data/LICENSE.txt +1 -1
  8. data/README.md +74 -248
  9. data/Rakefile +8 -6
  10. data/USAGE.md +4645 -0
  11. data/examples/accesssettings/accesssettings.rb +89 -0
  12. data/examples/apikeys/apikeys.rb +95 -0
  13. data/examples/asm/asm.rb +169 -0
  14. data/examples/browsers/browsers.rb +29 -0
  15. data/examples/campaigns/campaigns.rb +166 -0
  16. data/examples/categories/categories.rb +49 -0
  17. data/examples/clients/clients.rb +40 -0
  18. data/examples/contactdb/contactdb.rb +398 -0
  19. data/examples/devices/devices.rb +29 -0
  20. data/examples/geo/geo.rb +29 -0
  21. data/examples/helpers/mail/example.rb +130 -0
  22. data/examples/ips/ips.rb +167 -0
  23. data/examples/mail/mail.rb +191 -0
  24. data/examples/mailboxproviders/mailboxproviders.rb +29 -0
  25. data/examples/mailsettings/mailsettings.rb +232 -0
  26. data/examples/partnersettings/partnersettings.rb +52 -0
  27. data/examples/scopes/scopes.rb +28 -0
  28. data/examples/stats/stats.rb +29 -0
  29. data/examples/subusers/subusers.rb +182 -0
  30. data/examples/suppression/suppression.rb +186 -0
  31. data/examples/templates/templates.rb +142 -0
  32. data/examples/trackingsettings/trackingsettings.rb +123 -0
  33. data/examples/user/user.rb +256 -0
  34. data/examples/whitelabel/whitelabel.rb +323 -0
  35. data/lib/helpers/mail/README.md +14 -0
  36. data/lib/helpers/mail/mail.rb +999 -0
  37. data/lib/sendgrid-ruby.rb +33 -8
  38. data/sendgrid-ruby.gemspec +5 -17
  39. data/test/helpers/mail/test_mail.rb +122 -0
  40. data/test/test_sendgrid-ruby.rb +2016 -0
  41. metadata +42 -190
  42. data/.env_sample +0 -3
  43. data/.rspec +0 -2
  44. data/.rubocop.yml +0 -30
  45. data/FETCH_HEAD +0 -0
  46. data/Guardfile +0 -10
  47. data/example.rb +0 -41
  48. data/lib/sendgrid/client.rb +0 -62
  49. data/lib/sendgrid/exceptions.rb +0 -7
  50. data/lib/sendgrid/mail.rb +0 -182
  51. data/lib/sendgrid/recipient.rb +0 -29
  52. data/lib/sendgrid/response.rb +0 -14
  53. data/lib/sendgrid/template.rb +0 -26
  54. data/lib/sendgrid/template_mailer.rb +0 -59
  55. data/lib/sendgrid/version.rb +0 -3
  56. data/spec/lib/sendgrid/client_spec.rb +0 -87
  57. data/spec/lib/sendgrid/mail_spec.rb +0 -151
  58. data/spec/lib/sendgrid/recipient_spec.rb +0 -91
  59. data/spec/lib/sendgrid/template_mailer_spec.rb +0 -86
  60. data/spec/lib/sendgrid/template_spec.rb +0 -61
  61. data/spec/lib/sendgrid_spec.rb +0 -7
  62. data/spec/spec_helper.rb +0 -1
@@ -0,0 +1,14 @@
1
+ **This helper allows you to quickly and easily build a Mail object for sending email through SendGrid.**
2
+
3
+ # Quick Start
4
+
5
+ Run the [example](https://github.com/sendgrid/sendgrid-ruby/tree/master/examples/helpers/mail) (make sure you have set your environment variable to include your SENDGRID_API_KEY).
6
+
7
+ ```bash
8
+ ruby examples/helpers/mail/example.rb
9
+ ```
10
+
11
+ ## Usage
12
+
13
+ - See the [example](https://github.com/sendgrid/sendgrid-ruby/tree/master/examples/helpers/mail) for a complete working example.
14
+ - [Documentation](https://sendgrid.com/docs/API_Reference/Web_API_v3/Mail/overview.html)
@@ -0,0 +1,999 @@
1
+ # Build the request body for the v3/mail/send endpoint
2
+ # Please see the examples/helpers/mail/example.rb for a demonstration of usage
3
+ require 'json'
4
+
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 initilize
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 initilize
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
783
+
784
+ def name=(name)
785
+ @name = name
786
+ end
787
+
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
+ def initialize(from_email=nil, subj=nil, to_email=nil, cont=nil)
802
+ @from = nil
803
+ @subject = nil
804
+ @personalizations = nil
805
+ @contents = nil
806
+ @attachments = nil
807
+ @template_id = nil
808
+ @sections = nil
809
+ @headers = nil
810
+ @categories = nil
811
+ @custom_args = nil
812
+ @send_at = nil
813
+ @batch_id = nil
814
+ @asm = nil
815
+ @ip_pool_name = nil
816
+ @mail_settings = nil
817
+ @tracking_settings = nil
818
+ @reply_to = nil
819
+
820
+ if !(from_email.nil? && subj.nil? && to_email.nil? && cont.nil?)
821
+ self.from = from_email
822
+ self.subject = subj
823
+ personalization = Personalization.new
824
+ personalization.to = to_email
825
+ self.personalizations = personalization
826
+ self.contents = cont
827
+ end
828
+ end
829
+
830
+ def from=(from)
831
+ @from = from
832
+ end
833
+
834
+ def from
835
+ @from.nil? ? nil : @from.to_json
836
+ end
837
+
838
+ def subject=(subject)
839
+ @subject = subject
840
+ end
841
+
842
+ def subject
843
+ @subject
844
+ end
845
+
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
853
+ end
854
+
855
+ def contents=(content)
856
+ @contents = @contents ? @contents : []
857
+ @contents = @contents.push(content.to_json)
858
+ end
859
+
860
+ def contents
861
+ @contents
862
+ end
863
+
864
+ def attachments=(attachments)
865
+ @attachments = @attachments.nil? ? [] : @attachments
866
+ @attachments = @attachments.push(attachments.to_json)
867
+ end
868
+
869
+ def attachments
870
+ @attachments
871
+ end
872
+
873
+ def template_id=(template_id)
874
+ @template_id = template_id
875
+ end
876
+
877
+ def template_id
878
+ @template_id
879
+ end
880
+
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
909
+ end
910
+
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'])
915
+ end
916
+
917
+ def custom_args
918
+ @custom_args
919
+ end
920
+
921
+ def send_at=(send_at)
922
+ @send_at = send_at
923
+ end
924
+
925
+ def send_at
926
+ @send_at
927
+ end
928
+
929
+ def batch_id=(batch_id)
930
+ @batch_id = batch_id
931
+ end
932
+
933
+ def batch_id
934
+ @batch_id
935
+ end
936
+
937
+ def asm=(asm)
938
+ @asm = asm
939
+ end
940
+
941
+ def asm
942
+ @asm.nil? ? nil : @asm.to_json
943
+ end
944
+
945
+ def ip_pool_name=(ip_pool_name)
946
+ @ip_pool_name = ip_pool_name
947
+ end
948
+
949
+ def ip_pool_name
950
+ @ip_pool_name
951
+ end
952
+
953
+ def mail_settings=(mail_settings)
954
+ @mail_settings = mail_settings
955
+ end
956
+
957
+ def mail_settings
958
+ @mail_settings.nil? ? nil : @mail_settings.to_json
959
+ end
960
+
961
+ def tracking_settings=(tracking_settings)
962
+ @tracking_settings = tracking_settings
963
+ end
964
+
965
+ def tracking_settings
966
+ @tracking_settings.nil? ? nil : @tracking_settings.to_json
967
+ end
968
+
969
+ def reply_to=(reply_to)
970
+ @reply_to = reply_to
971
+ end
972
+
973
+ def reply_to
974
+ @reply_to.nil? ? nil : @reply_to.to_json
975
+ end
976
+
977
+ def to_json(*)
978
+ {
979
+ 'from' => self.from,
980
+ 'subject' => self.subject,
981
+ 'personalizations' => self.personalizations,
982
+ 'content' => self.contents,
983
+ 'attachments' => self.attachments,
984
+ 'template_id' => self.template_id,
985
+ 'sections' => self.sections,
986
+ 'headers' => self.headers,
987
+ 'categories' => self.categories,
988
+ 'custom_args' => self.custom_args,
989
+ 'send_at' => self.send_at,
990
+ 'batch_id' => self.batch_id,
991
+ 'asm' => self.asm,
992
+ 'ip_pool_name' => self.ip_pool_name,
993
+ 'mail_settings' => self.mail_settings,
994
+ 'tracking_settings' => self.tracking_settings,
995
+ 'reply_to' => self.reply_to
996
+ }.delete_if { |_, value| value.to_s.strip == '' }
997
+ end
998
+ end
999
+ end