sendgrid4r 1.11.0 → 1.12.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 (202) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +6 -1
  3. data/exe/sg +5 -0
  4. data/lib/sendgrid4r/cli/api_keys/api_key.rb +53 -0
  5. data/lib/sendgrid4r/cli/api_keys/permission.rb +15 -0
  6. data/lib/sendgrid4r/cli/campaign/campaign.rb +134 -0
  7. data/lib/sendgrid4r/cli/campaign/contact/contact.rb +25 -0
  8. data/lib/sendgrid4r/cli/campaign/contact/custom_field.rb +42 -0
  9. data/lib/sendgrid4r/cli/campaign/contact/list.rb +71 -0
  10. data/lib/sendgrid4r/cli/campaign/contact/recipient.rb +78 -0
  11. data/lib/sendgrid4r/cli/campaign/contact/reserved_field.rb +17 -0
  12. data/lib/sendgrid4r/cli/campaign/contact/segment.rb +96 -0
  13. data/lib/sendgrid4r/cli/campaign/sender.rb +83 -0
  14. data/lib/sendgrid4r/cli/cancel_schedules/batch_id.rb +23 -0
  15. data/lib/sendgrid4r/cli/cancel_schedules/cancel_schedule.rb +55 -0
  16. data/lib/sendgrid4r/cli/category.rb +16 -0
  17. data/lib/sendgrid4r/cli/ipam/activity.rb +16 -0
  18. data/lib/sendgrid4r/cli/ipam/ipam.rb +14 -0
  19. data/lib/sendgrid4r/cli/ipam/whitelist.rb +39 -0
  20. data/lib/sendgrid4r/cli/ips/address.rb +48 -0
  21. data/lib/sendgrid4r/cli/ips/ip.rb +17 -0
  22. data/lib/sendgrid4r/cli/ips/pool.rb +48 -0
  23. data/lib/sendgrid4r/cli/ips/warmup.rb +39 -0
  24. data/lib/sendgrid4r/cli/mail.rb +34 -0
  25. data/lib/sendgrid4r/cli/settings/enforced_tls.rb +24 -0
  26. data/lib/sendgrid4r/cli/settings/mail.rb +171 -0
  27. data/lib/sendgrid4r/cli/settings/partner.rb +34 -0
  28. data/lib/sendgrid4r/cli/settings/settings.rb +20 -0
  29. data/lib/sendgrid4r/cli/settings/tracking.rb +92 -0
  30. data/lib/sendgrid4r/cli/sg.rb +55 -0
  31. data/lib/sendgrid4r/cli/sg_thor.rb +34 -0
  32. data/lib/sendgrid4r/cli/stats/advanced.rb +72 -0
  33. data/lib/sendgrid4r/cli/stats/category.rb +35 -0
  34. data/lib/sendgrid4r/cli/stats/global.rb +18 -0
  35. data/lib/sendgrid4r/cli/stats/parse.rb +18 -0
  36. data/lib/sendgrid4r/cli/stats/stats.rb +23 -0
  37. data/lib/sendgrid4r/cli/stats/subuser.rb +67 -0
  38. data/lib/sendgrid4r/cli/subusers/monitor.rb +44 -0
  39. data/lib/sendgrid4r/cli/subusers/subuser.rb +77 -0
  40. data/lib/sendgrid4r/cli/suppressions/block.rb +43 -0
  41. data/lib/sendgrid4r/cli/suppressions/bounce.rb +41 -0
  42. data/lib/sendgrid4r/cli/suppressions/global_unsubscribe.rb +43 -0
  43. data/lib/sendgrid4r/cli/suppressions/group.rb +56 -0
  44. data/lib/sendgrid4r/cli/suppressions/group_unsubscribe.rb +34 -0
  45. data/lib/sendgrid4r/cli/suppressions/invalid_email.rb +43 -0
  46. data/lib/sendgrid4r/cli/suppressions/spam_report.rb +43 -0
  47. data/lib/sendgrid4r/cli/suppressions/suppression.rb +36 -0
  48. data/lib/sendgrid4r/cli/templates/template.rb +51 -0
  49. data/lib/sendgrid4r/cli/templates/version.rb +78 -0
  50. data/lib/sendgrid4r/cli/user.rb +86 -0
  51. data/lib/sendgrid4r/cli/webhooks/event.rb +53 -0
  52. data/lib/sendgrid4r/cli/webhooks/parse.rb +15 -0
  53. data/lib/sendgrid4r/cli/webhooks/webhook.rb +14 -0
  54. data/lib/sendgrid4r/cli/whitelabel/domain.rb +117 -0
  55. data/lib/sendgrid4r/cli/whitelabel/ip.rb +52 -0
  56. data/lib/sendgrid4r/cli/whitelabel/link.rb +96 -0
  57. data/lib/sendgrid4r/cli/whitelabel/whitelabel.rb +17 -0
  58. data/lib/sendgrid4r/client.rb +4 -1
  59. data/lib/sendgrid4r/factory/campaign_factory.rb +1 -1
  60. data/lib/sendgrid4r/factory/condition_factory.rb +2 -2
  61. data/lib/sendgrid4r/factory/event_factory.rb +21 -0
  62. data/lib/sendgrid4r/rest/api_keys_management/api_keys.rb +5 -5
  63. data/lib/sendgrid4r/rest/api_keys_management/permissions.rb +3 -1
  64. data/lib/sendgrid4r/rest/blocks.rb +2 -2
  65. data/lib/sendgrid4r/rest/bounces.rb +2 -2
  66. data/lib/sendgrid4r/rest/cancel_scheduled_sends.rb +12 -4
  67. data/lib/sendgrid4r/rest/categories.rb +1 -1
  68. data/lib/sendgrid4r/rest/email_activity.rb +1 -1
  69. data/lib/sendgrid4r/rest/invalid_emails.rb +2 -2
  70. data/lib/sendgrid4r/rest/ip_access_management.rb +12 -4
  71. data/lib/sendgrid4r/rest/ips/addresses.rb +4 -4
  72. data/lib/sendgrid4r/rest/ips/pools.rb +4 -4
  73. data/lib/sendgrid4r/rest/ips/warmup.rb +3 -3
  74. data/lib/sendgrid4r/rest/marketing_campaigns/contacts/custom_fields.rb +9 -3
  75. data/lib/sendgrid4r/rest/marketing_campaigns/contacts/lists.rb +7 -5
  76. data/lib/sendgrid4r/rest/marketing_campaigns/contacts/recipients.rb +22 -7
  77. data/lib/sendgrid4r/rest/marketing_campaigns/contacts/reserved_fields.rb +3 -1
  78. data/lib/sendgrid4r/rest/marketing_campaigns/contacts/segments.rb +7 -5
  79. data/lib/sendgrid4r/rest/marketing_campaigns/marketing_campaigns.rb +8 -8
  80. data/lib/sendgrid4r/rest/marketing_campaigns/senders.rb +4 -4
  81. data/lib/sendgrid4r/rest/request.rb +6 -4
  82. data/lib/sendgrid4r/rest/settings/enforced_tls.rb +6 -2
  83. data/lib/sendgrid4r/rest/settings/mail.rb +71 -17
  84. data/lib/sendgrid4r/rest/settings/partner.rb +3 -3
  85. data/lib/sendgrid4r/rest/settings/tracking.rb +17 -9
  86. data/lib/sendgrid4r/rest/sm/global_unsubscribes.rb +5 -3
  87. data/lib/sendgrid4r/rest/sm/groups.rb +4 -4
  88. data/lib/sendgrid4r/rest/sm/suppressions.rb +6 -3
  89. data/lib/sendgrid4r/rest/spam_reports.rb +2 -2
  90. data/lib/sendgrid4r/rest/stats/advanced.rb +8 -8
  91. data/lib/sendgrid4r/rest/stats/category.rb +2 -2
  92. data/lib/sendgrid4r/rest/stats/global.rb +1 -1
  93. data/lib/sendgrid4r/rest/stats/parse.rb +1 -1
  94. data/lib/sendgrid4r/rest/stats/subuser.rb +4 -4
  95. data/lib/sendgrid4r/rest/subusers.rb +15 -10
  96. data/lib/sendgrid4r/rest/transactional_templates/templates.rb +12 -4
  97. data/lib/sendgrid4r/rest/transactional_templates/versions.rb +4 -4
  98. data/lib/sendgrid4r/rest/users.rb +9 -9
  99. data/lib/sendgrid4r/rest/webhooks/event.rb +2 -2
  100. data/lib/sendgrid4r/rest/webhooks/parse.rb +1 -1
  101. data/lib/sendgrid4r/rest/whitelabel/domains.rb +10 -11
  102. data/lib/sendgrid4r/rest/whitelabel/ips.rb +4 -4
  103. data/lib/sendgrid4r/rest/whitelabel/links.rb +8 -8
  104. data/lib/sendgrid4r/version.rb +1 -1
  105. data/lib/sendgrid4r.rb +57 -0
  106. data/sendgrid4r.gemspec +3 -1
  107. data/spec/cli/api_keys/api_key_spec.rb +77 -0
  108. data/spec/cli/api_keys/permission_spec.rb +29 -0
  109. data/spec/cli/campaign/campaign_spec.rb +136 -0
  110. data/spec/cli/campaign/contact/custom_field_spec.rb +48 -0
  111. data/spec/cli/campaign/contact/list_spec.rb +88 -0
  112. data/spec/cli/campaign/contact/recipient_spec.rb +93 -0
  113. data/spec/cli/campaign/contact/reserved_field_spec.rb +20 -0
  114. data/spec/cli/campaign/contact/segment_spec.rb +93 -0
  115. data/spec/cli/campaign/sender_spec.rb +83 -0
  116. data/spec/cli/cancel_schedules/batch_id_spec.rb +33 -0
  117. data/spec/cli/cancel_schedules/cancel_schedule_spec.rb +69 -0
  118. data/spec/cli/category_spec.rb +23 -0
  119. data/spec/cli/ipam/activity_spec.rb +21 -0
  120. data/spec/cli/ipam/ipam_spec.rb +26 -0
  121. data/spec/cli/ipam/whitelist_spec.rb +47 -0
  122. data/spec/cli/ips/address_spec.rb +57 -0
  123. data/spec/cli/ips/ip_spec.rb +33 -0
  124. data/spec/cli/ips/pool_spec.rb +57 -0
  125. data/spec/cli/ips/warmup_spec.rb +47 -0
  126. data/spec/cli/mail_spec.rb +37 -0
  127. data/spec/cli/settings/enforced_tls_spec.rb +30 -0
  128. data/spec/cli/settings/mail_spec.rb +255 -0
  129. data/spec/cli/settings/partner_spec.rb +47 -0
  130. data/spec/cli/settings/settings_spec.rb +40 -0
  131. data/spec/cli/settings/tracking_spec.rb +128 -0
  132. data/spec/cli/sg_spec.rb +82 -0
  133. data/spec/cli/stats/advanced_spec.rb +137 -0
  134. data/spec/cli/stats/category_spec.rb +57 -0
  135. data/spec/cli/stats/global_spec.rb +32 -0
  136. data/spec/cli/stats/parse_spec.rb +32 -0
  137. data/spec/cli/stats/stats_spec.rb +40 -0
  138. data/spec/cli/stats/subuser_spec.rb +104 -0
  139. data/spec/cli/subusers/monitor_spec.rb +52 -0
  140. data/spec/cli/subusers/subuser_spec.rb +88 -0
  141. data/spec/cli/suppressions/block_spec.rb +60 -0
  142. data/spec/cli/suppressions/bounce_spec.rb +58 -0
  143. data/spec/cli/suppressions/global_unsubscribe_spec.rb +59 -0
  144. data/spec/cli/suppressions/group_spec.rb +69 -0
  145. data/spec/cli/suppressions/group_unsubscribe_spec.rb +41 -0
  146. data/spec/cli/suppressions/invalid_email_spec.rb +60 -0
  147. data/spec/cli/suppressions/spam_report_spec.rb +60 -0
  148. data/spec/cli/suppressions/suppression_spec.rb +68 -0
  149. data/spec/cli/templates/template_spec.rb +65 -0
  150. data/spec/cli/templates/version_spec.rb +71 -0
  151. data/spec/cli/user_spec.rb +82 -0
  152. data/spec/cli/webhooks/event_spec.rb +67 -0
  153. data/spec/cli/webhooks/parse_spec.rb +20 -0
  154. data/spec/cli/webhooks/webhook_spec.rb +28 -0
  155. data/spec/cli/whitelabel/domain_spec.rb +112 -0
  156. data/spec/cli/whitelabel/ip_spec.rb +61 -0
  157. data/spec/cli/whitelabel/link_spec.rb +110 -0
  158. data/spec/cli/whitelabel/whitelabel_spec.rb +27 -0
  159. data/spec/client_spec.rb +1 -1
  160. data/spec/factory/campaign_factory_spec.rb +2 -2
  161. data/spec/factory/event_factory_spec.rb +36 -0
  162. data/spec/rest/api_keys_management/api_keys_spec.rb +24 -24
  163. data/spec/rest/api_keys_management/permissions_spec.rb +8 -10
  164. data/spec/rest/blocks_spec.rb +14 -18
  165. data/spec/rest/bounces_spec.rb +28 -32
  166. data/spec/rest/cancel_scheduled_sends_spec.rb +15 -19
  167. data/spec/rest/categories_spec.rb +8 -10
  168. data/spec/rest/email_activity_spec.rb +18 -22
  169. data/spec/rest/invalid_emails_spec.rb +19 -23
  170. data/spec/rest/ip_access_management_spec.rb +46 -52
  171. data/spec/rest/ips/addresses_spec.rb +21 -25
  172. data/spec/rest/ips/pools_spec.rb +20 -24
  173. data/spec/rest/ips/warmup_spec.rb +11 -15
  174. data/spec/rest/marketing_campaigns/contacts/custom_fields_spec.rb +26 -30
  175. data/spec/rest/marketing_campaigns/contacts/lists_spec.rb +58 -66
  176. data/spec/rest/marketing_campaigns/contacts/recipients_spec.rb +77 -87
  177. data/spec/rest/marketing_campaigns/contacts/reserved_fields_spec.rb +46 -50
  178. data/spec/rest/marketing_campaigns/contacts/segments_spec.rb +75 -78
  179. data/spec/rest/marketing_campaigns/marketing_campaigns_spec.rb +92 -94
  180. data/spec/rest/marketing_campaigns/senders_spec.rb +51 -51
  181. data/spec/rest/settings/enforced_tls_spec.rb +5 -7
  182. data/spec/rest/settings/mail_spec.rb +89 -60
  183. data/spec/rest/settings/partner_spec.rb +5 -7
  184. data/spec/rest/settings/settings_spec.rb +18 -22
  185. data/spec/rest/settings/tracking_spec.rb +26 -34
  186. data/spec/rest/sm/global_unsubscribes_spec.rb +9 -13
  187. data/spec/rest/sm/groups_spec.rb +24 -28
  188. data/spec/rest/sm/sm_spec.rb +15 -15
  189. data/spec/rest/sm/suppressions_spec.rb +34 -44
  190. data/spec/rest/spam_reports_spec.rb +19 -23
  191. data/spec/rest/stats/advanced_spec.rb +4 -4
  192. data/spec/rest/stats/global_spec.rb +0 -21
  193. data/spec/rest/subusers_spec.rb +38 -47
  194. data/spec/rest/transactional_templates/templates_spec.rb +29 -33
  195. data/spec/rest/transactional_templates/versions_spec.rb +11 -93
  196. data/spec/rest/users_spec.rb +42 -54
  197. data/spec/rest/webhooks/event_spec.rb +16 -18
  198. data/spec/rest/webhooks/parse_spec.rb +16 -20
  199. data/spec/rest/whitelabel/domains_spec.rb +93 -100
  200. data/spec/rest/whitelabel/ips_spec.rb +28 -32
  201. data/spec/rest/whitelabel/links_spec.rb +41 -45
  202. metadata +181 -4
@@ -0,0 +1,53 @@
1
+ module SendGrid4r::CLI
2
+ module Webhooks
3
+ #
4
+ # SendGrid Web API v3 Webhooks Event
5
+ #
6
+ class Event < SgThor
7
+ desc 'get', 'Get Event Webhook Settings'
8
+ def get
9
+ puts @client.get_settings_event_notification
10
+ rescue RestClient::ExceptionWithResponse => e
11
+ puts e.inspect
12
+ end
13
+
14
+ desc 'enable', 'Enable Event Webhook Settings'
15
+ option :url
16
+ option :group_resubscribe, type: :boolean
17
+ option :delivered, type: :boolean
18
+ option :group_unsubscribe, type: :boolean
19
+ option :spam_report, type: :boolean
20
+ option :bounce, type: :boolean
21
+ option :deferred, type: :boolean
22
+ option :unsubscribe, type: :boolean
23
+ option :processed, type: :boolean
24
+ option :open, type: :boolean
25
+ option :click, type: :boolean
26
+ option :dropped, type: :boolean
27
+ def enable
28
+ params = parameterise(options)
29
+ params[:enabled] = true
30
+ event = SendGrid4r::Factory::EventFactory.create(params)
31
+ puts @client.patch_settings_event_notification(params: event)
32
+ rescue RestClient::ExceptionWithResponse => e
33
+ puts e.inspect
34
+ end
35
+
36
+ desc 'disable', 'Disable Event Webhook Settings'
37
+ def disable
38
+ params = { enabled: false }
39
+ puts @client.patch_settings_event_notification(params: params)
40
+ rescue RestClient::ExceptionWithResponse => e
41
+ puts e.inspect
42
+ end
43
+
44
+ desc 'test', 'Sends a fake event notification post to the provided URL'
45
+ option :url
46
+ def test
47
+ puts @client.test_settings_event_notification(parameterise(options))
48
+ rescue RestClient::ExceptionWithResponse => e
49
+ puts e.inspect
50
+ end
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,15 @@
1
+ module SendGrid4r::CLI
2
+ module Webhooks
3
+ #
4
+ # SendGrid Web API v3 Webhook Parse
5
+ #
6
+ class Parse < SgThor
7
+ desc 'get', 'Get Parse Webhook Settings'
8
+ def get
9
+ puts @client.get_parse_settings
10
+ rescue RestClient::ExceptionWithResponse => e
11
+ puts e.inspect
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,14 @@
1
+ module SendGrid4r::CLI
2
+ module Webhooks
3
+ #
4
+ # SendGrid Web API v3 Webhooks Webhook
5
+ #
6
+ class Webhook < SgThor
7
+ desc('event SUBCOMMAND ...ARGS', 'Manage event webhook settings')
8
+ subcommand('event', Event)
9
+
10
+ desc('parse SUBCOMMAND ...ARGS', 'Manage parse webhook settings')
11
+ subcommand('parse', Parse)
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,117 @@
1
+ module SendGrid4r::CLI
2
+ module Whitelabel
3
+ #
4
+ # SendGrid Web API v3 Whitelabel Domain
5
+ #
6
+ class Domain < SgThor
7
+ desc 'list', 'List all Domain whitelabels'
8
+ option :limit
9
+ option :offset
10
+ option :exclude_subusers
11
+ option :username
12
+ option :domain
13
+ def list
14
+ puts @client.get_wl_domains(parameterise(options))
15
+ rescue RestClient::ExceptionWithResponse => e
16
+ puts e.inspect
17
+ end
18
+
19
+ desc 'create', 'Create a domain whitelabel'
20
+ option :domain, require: true
21
+ option :subdomain, require: true
22
+ option :automatic_security, type: :boolean
23
+ option :custom_spf, type: :boolean
24
+ option :default, type: :boolean
25
+ def create
26
+ puts @client.post_wl_domain(parameterise(options))
27
+ rescue RestClient::ExceptionWithResponse => e
28
+ puts e.inspect
29
+ end
30
+
31
+ desc 'get', 'Retrieve a domain whitelabel'
32
+ option :id, require: true
33
+ def get
34
+ puts @client.get_wl_domain(parameterise(options))
35
+ rescue RestClient::ExceptionWithResponse => e
36
+ puts e.inspect
37
+ end
38
+
39
+ desc 'update', 'Update a domain whitelabel'
40
+ option :id, require: true
41
+ option :custom_spf, type: :boolean
42
+ option :default, type: :boolean
43
+ def update
44
+ puts @client.patch_wl_domain(parameterise(options))
45
+ rescue RestClient::ExceptionWithResponse => e
46
+ puts e.inspect
47
+ end
48
+
49
+ desc 'delete', 'Delete a domain whitelabel'
50
+ option :id, require: true
51
+ def delete
52
+ puts @client.delete_wl_domain(parameterise(options))
53
+ rescue RestClient::ExceptionWithResponse => e
54
+ puts e.inspect
55
+ end
56
+
57
+ desc 'default', 'Default a domain'
58
+ option :domain
59
+ def default
60
+ puts @client.get_default_wl_domain(parameterise(options))
61
+ rescue RestClient::ExceptionWithResponse => e
62
+ puts e.inspect
63
+ end
64
+
65
+ desc 'add_ip', 'Add an IP to a Domain'
66
+ option :id, require: true
67
+ option :ip, require: true
68
+ def add_ip
69
+ puts @client.add_ip_to_wl_domain(parameterise(options))
70
+ rescue RestClient::ExceptionWithResponse => e
71
+ puts e.inspect
72
+ end
73
+
74
+ desc 'remove_ip', 'Remove an IP from a Domain'
75
+ option :id, require: true
76
+ option :ip, require: true
77
+ def remove_ip
78
+ puts @client.remove_ip_from_wl_domain(parameterise(options))
79
+ rescue RestClient::ExceptionWithResponse => e
80
+ puts e.inspect
81
+ end
82
+
83
+ desc 'validate', 'Validate a Domain'
84
+ option :id, require: true
85
+ def validate
86
+ puts @client.validate_wl_domain(parameterise(options))
87
+ rescue RestClient::ExceptionWithResponse => e
88
+ puts e.inspect
89
+ end
90
+
91
+ desc 'list_associated', 'List Associated Domain'
92
+ option :username, require: true
93
+ def list_associated
94
+ puts @client.get_associated_wl_domain(parameterise(options))
95
+ rescue RestClient::ExceptionWithResponse => e
96
+ puts e.inspect
97
+ end
98
+
99
+ desc 'disassociate', 'Disassociate Domain'
100
+ option :username, require: true
101
+ def disassociate
102
+ puts @client.disassociate_wl_domain(parameterise(options))
103
+ rescue RestClient::ExceptionWithResponse => e
104
+ puts e.inspect
105
+ end
106
+
107
+ desc 'associate', 'Associate Domain'
108
+ option :id, require: true
109
+ option :username, require: true
110
+ def associate
111
+ puts @client.associate_wl_domain(parameterise(options))
112
+ rescue RestClient::ExceptionWithResponse => e
113
+ puts e.inspect
114
+ end
115
+ end
116
+ end
117
+ end
@@ -0,0 +1,52 @@
1
+ module SendGrid4r::CLI
2
+ module Whitelabel
3
+ #
4
+ # SendGrid Web API v3 Whitelabel Ip
5
+ #
6
+ class Ip < SgThor
7
+ desc 'list', 'List all IP whitelabels'
8
+ option :ip
9
+ option :limit, type: :numeric
10
+ option :offset, type: :numeric
11
+ def list
12
+ puts @client.get_wl_ips(parameterise(options))
13
+ rescue RestClient::ExceptionWithResponse => e
14
+ puts e.inspect
15
+ end
16
+
17
+ desc 'create', 'Create an IP whitelabel'
18
+ option :ip, require: true
19
+ option :domain, require: true
20
+ option :subdomain, require: true
21
+ def create
22
+ puts @client.post_wl_ip(parameterise(options))
23
+ rescue RestClient::ExceptionWithResponse => e
24
+ puts e.inspect
25
+ end
26
+
27
+ desc 'get', 'Retrieve an IP whitelabel'
28
+ option :id, require: true
29
+ def get
30
+ puts @client.get_wl_ip(parameterise(options))
31
+ rescue RestClient::ExceptionWithResponse => e
32
+ puts e.inspect
33
+ end
34
+
35
+ desc 'delete', 'Delete an IP whitelabel'
36
+ option :id, require: true
37
+ def delete
38
+ puts @client.delete_wl_ip(parameterise(options))
39
+ rescue RestClient::ExceptionWithResponse => e
40
+ puts e.inspect
41
+ end
42
+
43
+ desc 'validate', 'Validate IP whitelabel'
44
+ option :id, require: true
45
+ def validate
46
+ puts @client.validate_wl_ip(parameterise(options))
47
+ rescue RestClient::ExceptionWithResponse => e
48
+ puts e.inspect
49
+ end
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,96 @@
1
+ module SendGrid4r::CLI
2
+ module Whitelabel
3
+ #
4
+ # SendGrid Web API v3 Whitelabel Link
5
+ #
6
+ class Link < SgThor
7
+ desc 'list', 'List all Link whitelabels'
8
+ option :limit
9
+ option :offset
10
+ option :exclude_subusers
11
+ option :username
12
+ option :domain
13
+ def list
14
+ puts @client.get_wl_links(parameterise(options))
15
+ rescue RestClient::ExceptionWithResponse => e
16
+ puts e.inspect
17
+ end
18
+
19
+ desc 'create', 'Create a link whitelabel'
20
+ option :domain, require: true
21
+ option :subdomain, require: true
22
+ option :default, type: :boolean
23
+ def create
24
+ puts @client.post_wl_link(parameterise(options))
25
+ rescue RestClient::ExceptionWithResponse => e
26
+ puts e.inspect
27
+ end
28
+
29
+ desc 'get', 'Retrieve a link whitelabel'
30
+ option :id, require: true
31
+ def get
32
+ puts @client.get_wl_link(parameterise(options))
33
+ rescue RestClient::ExceptionWithResponse => e
34
+ puts e.inspect
35
+ end
36
+
37
+ desc 'update', 'Update a link whitelabel'
38
+ option :id, require: true
39
+ option :default, type: :boolean, require: true
40
+ def update
41
+ puts @client.patch_wl_link(parameterise(options))
42
+ rescue RestClient::ExceptionWithResponse => e
43
+ puts e.inspect
44
+ end
45
+
46
+ desc 'delete', 'Delete a link whitelabel'
47
+ option :id, require: true
48
+ def delete
49
+ puts @client.delete_wl_link(parameterise(options))
50
+ rescue RestClient::ExceptionWithResponse => e
51
+ puts e.inspect
52
+ end
53
+
54
+ desc 'default', 'Default a link whitelabel'
55
+ option :domain
56
+ def default
57
+ puts @client.get_default_wl_link(parameterise(options))
58
+ rescue RestClient::ExceptionWithResponse => e
59
+ puts e.inspect
60
+ end
61
+
62
+ desc 'validate', 'Validate a link whitelabel'
63
+ option :id, require: true
64
+ def validate
65
+ puts @client.validate_wl_link(parameterise(options))
66
+ rescue RestClient::ExceptionWithResponse => e
67
+ puts e.inspect
68
+ end
69
+
70
+ desc 'list_associated', 'List Associated link'
71
+ option :username, require: true
72
+ def list_associated
73
+ puts @client.get_associated_wl_link(parameterise(options))
74
+ rescue RestClient::ExceptionWithResponse => e
75
+ puts e.inspect
76
+ end
77
+
78
+ desc 'disassociate', 'Disassociate link'
79
+ option :username, require: true
80
+ def disassociate
81
+ puts @client.disassociate_wl_link(parameterise(options))
82
+ rescue RestClient::ExceptionWithResponse => e
83
+ puts e.inspect
84
+ end
85
+
86
+ desc 'associate', 'Associate link'
87
+ option :id, require: true
88
+ option :username, require: true
89
+ def associate
90
+ puts @client.associate_wl_link(parameterise(options))
91
+ rescue RestClient::ExceptionWithResponse => e
92
+ puts e.inspect
93
+ end
94
+ end
95
+ end
96
+ end
@@ -0,0 +1,17 @@
1
+ module SendGrid4r::CLI
2
+ module Whitelabel
3
+ #
4
+ # SendGrid Web API v3 Whitelabel
5
+ #
6
+ class Whitelabel < SgThor
7
+ desc('domain SUBCOMMAND ...ARGS', 'Manage domain whitelabel settings')
8
+ subcommand('domain', Domain)
9
+
10
+ desc('link SUBCOMMAND ...ARGS', 'Manage link whitelabel settings')
11
+ subcommand('link', Link)
12
+
13
+ desc('ip SUBCOMMAND ...ARGS', 'Manage IP whitelabel settings')
14
+ subcommand('ip', Ip)
15
+ end
16
+ end
17
+ end
@@ -7,10 +7,13 @@ module SendGrid4r
7
7
  class Client
8
8
  include SendGrid4r::REST::API
9
9
 
10
+ attr_accessor :raw_resp
11
+
10
12
  def initialize(
11
- username: nil, password: nil, api_key: nil
13
+ username: nil, password: nil, api_key: nil, raw_response: false
12
14
  )
13
15
  @auth = Auth.new(username: username, password: password, api_key: api_key)
16
+ @raw_resp = raw_response
14
17
  end
15
18
  end
16
19
  end
@@ -32,7 +32,7 @@ module SendGrid4r
32
32
  end
33
33
 
34
34
  def create_address(email:, name:)
35
- REST::MarketingCampaigns::Address.new(email, name)
35
+ REST::MarketingCampaigns::Address.new(email, name).to_h
36
36
  end
37
37
  end
38
38
  end
@@ -6,12 +6,12 @@ module SendGrid4r
6
6
  # SendGrid Web API v3 Condition Factory Class implementation
7
7
  #
8
8
  class ConditionFactory
9
- def create(field:, value:, operator:, and_or:)
9
+ def create(field:, value:, operator:, and_or: nil)
10
10
  REST::MarketingCampaigns::Contacts::Segments::Condition.new(
11
11
  field,
12
12
  value,
13
13
  operator,
14
- and_or
14
+ and_or.nil? ? '' : and_or
15
15
  ).to_h
16
16
  end
17
17
  end
@@ -0,0 +1,21 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ module SendGrid4r
4
+ module Factory
5
+ #
6
+ # SendGrid Web API v3 Event Factory Class implementation
7
+ #
8
+ module EventFactory
9
+ def self.create(enabled:, url: nil, group_resubscribe: nil,
10
+ delivered: nil, group_unsubscribe: nil, spam_report: nil,
11
+ bounce: nil, deferred: nil, unsubscribe: nil, processed: nil,
12
+ open: nil, click: nil, dropped: nil)
13
+ REST::Webhooks::Event::EventNotification.new(
14
+ enabled, url, group_resubscribe, delivered,
15
+ group_unsubscribe, spam_report, bounce, deferred,
16
+ unsubscribe, processed, open, click, dropped
17
+ )
18
+ end
19
+ end
20
+ end
21
+ end
@@ -36,20 +36,20 @@ module SendGrid4r::REST
36
36
 
37
37
  def get_api_keys(&block)
38
38
  resp = get(@auth, ApiKeysManagement.url, &block)
39
- ApiKeysManagement.create_api_keys(resp)
39
+ finish(resp, @raw_resp) { |r| ApiKeysManagement.create_api_keys(r) }
40
40
  end
41
41
 
42
42
  def post_api_key(name:, scopes: nil, &block)
43
43
  params = { name: name }
44
44
  params[:scopes] = scopes unless scopes.nil?
45
45
  resp = post(@auth, ApiKeysManagement.url, params, &block)
46
- ApiKeysManagement.create_api_key(resp)
46
+ finish(resp, @raw_resp) { |r| ApiKeysManagement.create_api_key(r) }
47
47
  end
48
48
 
49
49
  def get_api_key(api_key_id:, &block)
50
50
  endpoint = ApiKeysManagement.url(api_key_id)
51
51
  resp = get(@auth, endpoint, &block)
52
- ApiKeysManagement.create_api_key(resp)
52
+ finish(resp, @raw_resp) { |r| ApiKeysManagement.create_api_key(r) }
53
53
  end
54
54
 
55
55
  def delete_api_key(api_key_id:, &block)
@@ -60,7 +60,7 @@ module SendGrid4r::REST
60
60
  params = { name: name }
61
61
  endpoint = ApiKeysManagement.url(api_key_id)
62
62
  resp = patch(@auth, endpoint, params, &block)
63
- ApiKeysManagement.create_api_key(resp)
63
+ finish(resp, @raw_resp) { |r| ApiKeysManagement.create_api_key(r) }
64
64
  end
65
65
 
66
66
  def put_api_key(api_key_id:, name:, scopes:, &block)
@@ -69,7 +69,7 @@ module SendGrid4r::REST
69
69
  params[:scopes] = scopes unless scopes.nil?
70
70
  endpoint = ApiKeysManagement.url(api_key_id)
71
71
  resp = put(@auth, endpoint, params, &block)
72
- ApiKeysManagement.create_api_key(resp)
72
+ finish(resp, @raw_resp) { |r| ApiKeysManagement.create_api_key(r) }
73
73
  end
74
74
  end
75
75
  end