sendgrid-ruby 1.1.6 → 3.0.0

Sign up to get free protection for your applications and to get access to all the features.
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