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,41 @@
1
+ module SendGrid4r::CLI
2
+ module Suppressions
3
+ #
4
+ # SendGrid Web API v3 Suppressions Bounce
5
+ #
6
+ class Bounce < SgThor
7
+ desc 'list', 'List bounces'
8
+ option :start_time, type: :numeric
9
+ option :end_time, type: :numeric
10
+ def list
11
+ puts @client.get_bounces(parameterise(options))
12
+ rescue RestClient::ExceptionWithResponse => e
13
+ puts e.inspect
14
+ end
15
+
16
+ desc 'delete', 'Delete bounces'
17
+ option :delete_all, type: :boolean
18
+ option :email
19
+ option :emails, type: :array
20
+ def delete
21
+ if options[:email]
22
+ puts @client.delete_bounce(email: options[:email])
23
+ else
24
+ puts @client.delete_bounces(
25
+ delete_all: options[:delete_all], emails: options[:emails]
26
+ )
27
+ end
28
+ rescue RestClient::ExceptionWithResponse => e
29
+ puts e.inspect
30
+ end
31
+
32
+ desc 'get', 'Get a bounce'
33
+ option :email, require: true
34
+ def get
35
+ puts @client.get_bounce(parameterise(options))
36
+ rescue RestClient::ExceptionWithResponse => e
37
+ puts e.inspect
38
+ end
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,43 @@
1
+ module SendGrid4r::CLI
2
+ module Suppressions
3
+ #
4
+ # SendGrid Web API v3 Suppressions GlobalUnsubscribe
5
+ #
6
+ class GlobalUnsubscribe < SgThor
7
+ desc 'list', 'List global unsubscribes'
8
+ option :start_time, type: :numeric
9
+ option :end_time, type: :numeric
10
+ option :limit, type: :numeric
11
+ option :offset, type: :numeric
12
+ def list
13
+ puts @client.get_global_unsubscribes(parameterise(options))
14
+ rescue RestClient::ExceptionWithResponse => e
15
+ puts e.inspect
16
+ end
17
+
18
+ desc 'add', 'Add email addresses to the Global Unsubscribes'
19
+ option :recipient_emails, type: :array, require: true
20
+ def add
21
+ puts @client.post_global_unsubscribes(parameterise(options))
22
+ rescue RestClient::ExceptionWithResponse => e
23
+ puts e.inspect
24
+ end
25
+
26
+ desc 'delete', 'Delete global unsubscribes'
27
+ option :email_address, require: true
28
+ def delete
29
+ puts @client.delete_global_unsubscribe(parameterise(options))
30
+ rescue RestClient::ExceptionWithResponse => e
31
+ puts e.inspect
32
+ end
33
+
34
+ desc 'get', 'Get a global unsubscribe'
35
+ option :email_address, require: true
36
+ def get
37
+ puts @client.get_global_unsubscribe(parameterise(options))
38
+ rescue RestClient::ExceptionWithResponse => e
39
+ puts e.inspect
40
+ end
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,56 @@
1
+ module SendGrid4r::CLI
2
+ module Suppressions
3
+ #
4
+ # SendGrid Web API v3 Suppressions Group
5
+ #
6
+ class Group < SgThor
7
+ desc 'create', 'Create a new supression group'
8
+ option :name, require: true
9
+ option :description, require: true
10
+ option :is_default, type: :boolean
11
+ def create
12
+ puts @client.post_group(parameterise(options))
13
+ rescue RestClient::ExceptionWithResponse => e
14
+ puts e.inspect
15
+ end
16
+
17
+ desc 'list', 'List supression groups'
18
+ def list
19
+ puts @client.get_groups
20
+ rescue RestClient::ExceptionWithResponse => e
21
+ puts e.inspect
22
+ end
23
+
24
+ desc 'get', 'Get a supression group'
25
+ option :group_id, require: true
26
+ def get
27
+ puts @client.get_group(parameterise(options))
28
+ rescue RestClient::ExceptionWithResponse => e
29
+ puts e.inspect
30
+ end
31
+
32
+ desc 'update', 'Update a supression group'
33
+ option :group_id, require: true
34
+ option :name
35
+ option :description
36
+ def update
37
+ group = parameterise(options)
38
+ group.delete(:group_id)
39
+ puts @client.patch_group(
40
+ group_id: options[:group_id],
41
+ group: group
42
+ )
43
+ rescue RestClient::ExceptionWithResponse => e
44
+ puts e.inspect
45
+ end
46
+
47
+ desc 'delete', 'Delete a supression group'
48
+ option :group_id, require: true
49
+ def delete
50
+ puts @client.delete_group(parameterise(options))
51
+ rescue RestClient::ExceptionWithResponse => e
52
+ puts e.inspect
53
+ end
54
+ end
55
+ end
56
+ end
@@ -0,0 +1,34 @@
1
+ module SendGrid4r::CLI
2
+ module Suppressions
3
+ #
4
+ # SendGrid Web API v3 Suppressions GroupUnsubscribe
5
+ #
6
+ class GroupUnsubscribe < SgThor
7
+ desc 'add', 'Add email addresses to the group supressions'
8
+ option :group_id, require: true
9
+ option :recipient_emails, type: :array, require: true
10
+ def add
11
+ puts @client.post_suppressed_emails(parameterise(options))
12
+ rescue RestClient::ExceptionWithResponse => e
13
+ puts e.inspect
14
+ end
15
+
16
+ desc 'list', 'List suppressed addresses for a given group'
17
+ option :group_id, require: true
18
+ def list
19
+ puts @client.get_suppressed_emails(parameterise(options))
20
+ rescue RestClient::ExceptionWithResponse => e
21
+ puts e.inspect
22
+ end
23
+
24
+ desc 'remove', 'Remove an email address from the given group'
25
+ option :group_id, require: true
26
+ option :email_address, require: true
27
+ def remove
28
+ @client.delete_suppressed_email(parameterise(options))
29
+ rescue RestClient::ExceptionWithResponse => e
30
+ puts e.inspect
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,43 @@
1
+ module SendGrid4r::CLI
2
+ module Suppressions
3
+ #
4
+ # SendGrid Web API v3 Suppressions InvalidEmail
5
+ #
6
+ class InvalidEmail < SgThor
7
+ desc 'list', 'List blocks'
8
+ option :start_time, type: :numeric
9
+ option :end_time, type: :numeric
10
+ option :limit, type: :numeric
11
+ option :offset, type: :numeric
12
+ def list
13
+ puts @client.get_invalid_emails(parameterise(options))
14
+ rescue RestClient::ExceptionWithResponse => e
15
+ puts e.inspect
16
+ end
17
+
18
+ desc 'delete', 'Delete invalid emails'
19
+ option :delete_all, type: :boolean
20
+ option :email
21
+ option :emails, type: :array
22
+ def delete
23
+ if options[:email]
24
+ @client.delete_invalid_email(email: options[:email])
25
+ else
26
+ @client.delete_invalid_emails(
27
+ delete_all: options[:delete_all], emails: options[:emails]
28
+ )
29
+ end
30
+ rescue RestClient::ExceptionWithResponse => e
31
+ puts e.inspect
32
+ end
33
+
34
+ desc 'get', 'Get a invalid email'
35
+ option :email, require: true
36
+ def get
37
+ puts @client.get_invalid_email(parameterise(options))
38
+ rescue RestClient::ExceptionWithResponse => e
39
+ puts e.inspect
40
+ end
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,43 @@
1
+ module SendGrid4r::CLI
2
+ module Suppressions
3
+ #
4
+ # SendGrid Web API v3 Suppressions SpamReport
5
+ #
6
+ class SpamReport < SgThor
7
+ desc 'list', 'List spam reports'
8
+ option :start_time, type: :numeric
9
+ option :end_time, type: :numeric
10
+ option :limit, type: :numeric
11
+ option :offset, type: :numeric
12
+ def list
13
+ puts @client.get_spam_reports(parameterise(options))
14
+ rescue RestClient::ExceptionWithResponse => e
15
+ puts e.inspect
16
+ end
17
+
18
+ desc 'delete', 'Delete spam reports'
19
+ option :delete_all, type: :boolean
20
+ option :email
21
+ option :emails, type: :array
22
+ def delete
23
+ if options[:email]
24
+ @client.delete_spam_report(email: options[:email])
25
+ else
26
+ @client.delete_spam_reports(
27
+ delete_all: options[:delete_all], emails: options[:emails]
28
+ )
29
+ end
30
+ rescue RestClient::ExceptionWithResponse => e
31
+ puts e.inspect
32
+ end
33
+
34
+ desc 'get', 'Get a spam report'
35
+ option :email, require: true
36
+ def get
37
+ puts @client.get_spam_report(parameterise(options))
38
+ rescue RestClient::ExceptionWithResponse => e
39
+ puts e.inspect
40
+ end
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,36 @@
1
+ module SendGrid4r::CLI
2
+ module Suppressions
3
+ #
4
+ # SendGrid Web API v3 Suppressions Suppression
5
+ #
6
+ class Suppression < SgThor
7
+ desc('block SUBCOMMAND ...ARGS', 'Manage blocks list')
8
+ subcommand('block', Block)
9
+
10
+ desc('bounce SUBCOMMAND ...ARGS', 'Manage bounces list')
11
+ subcommand('bounce', Bounce)
12
+
13
+ desc('invalid_email SUBCOMMAND ...ARGS', 'Manage invalid emails list')
14
+ subcommand('invalid_email', InvalidEmail)
15
+
16
+ desc('spam_report SUBCOMMAND ...ARGS', 'Manage spam reports list')
17
+ subcommand('spam_report', SpamReport)
18
+
19
+ desc(
20
+ 'global_unsubscribe SUBCOMMAND ...ARGS',
21
+ 'Manage global unsubscribe list'
22
+ )
23
+ subcommand('global_unsubscribe', GlobalUnsubscribe)
24
+
25
+ desc(
26
+ 'group SUBCOMMAND ...ARGS', 'Manage suppression groups'
27
+ )
28
+ subcommand('group', Group)
29
+
30
+ desc(
31
+ 'group_unsubscribe SUBCOMMAND ...ARGS', 'Manage group unsubscribes'
32
+ )
33
+ subcommand('group_unsubscribe', GroupUnsubscribe)
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,51 @@
1
+ module SendGrid4r::CLI
2
+ module Templates
3
+ #
4
+ # SendGrid Web API v3 Templates
5
+ #
6
+ class Template < SgThor
7
+ desc 'create', 'Create a template'
8
+ option :name, require: true
9
+ def create
10
+ puts @client.post_template(parameterise(options))
11
+ rescue RestClient::ExceptionWithResponse => e
12
+ puts e.inspect
13
+ end
14
+
15
+ desc 'list', 'Retrieve all templates'
16
+ def list
17
+ puts @client.get_templates
18
+ rescue RestClient::ExceptionWithResponse => e
19
+ puts e.inspect
20
+ end
21
+
22
+ desc 'get', 'Get a template'
23
+ option :template_id, require: true
24
+ def get
25
+ puts @client.get_template(parameterise(options))
26
+ rescue RestClient::ExceptionWithResponse => e
27
+ puts e.inspect
28
+ end
29
+
30
+ desc 'update', 'Edit a template'
31
+ option :template_id, require: true
32
+ option :name, require: true
33
+ def update
34
+ puts @client.patch_template(parameterise(options))
35
+ rescue RestClient::ExceptionWithResponse => e
36
+ puts e.inspect
37
+ end
38
+
39
+ desc 'delete', 'Delete a template'
40
+ option :template_id, require: true
41
+ def delete
42
+ puts @client.delete_template(parameterise(options))
43
+ rescue RestClient::ExceptionWithResponse => e
44
+ puts e.inspect
45
+ end
46
+
47
+ desc('version SUBCOMMAND ...ARGS', 'Manage template versions')
48
+ subcommand('version', Version)
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,78 @@
1
+ module SendGrid4r::CLI
2
+ module Templates
3
+ #
4
+ # SendGrid Web API v3 Templates Version
5
+ #
6
+ class Version < SgThor
7
+ desc 'create', 'Create a version'
8
+ option :template_id, require: true
9
+ option :name, require: true
10
+ option :subject, require: true
11
+ option :html_content, require: true
12
+ option :plain_content, require: true
13
+ option :active, type: :numeric
14
+ def create
15
+ factory = SendGrid4r::Factory::VersionFactory.new
16
+ params = parameterise(options)
17
+ params.delete(:template_id)
18
+ version = factory.create(params)
19
+ puts @client.post_version(
20
+ template_id: options[:template_id],
21
+ version: version
22
+ )
23
+ rescue RestClient::ExceptionWithResponse => e
24
+ puts e.inspect
25
+ end
26
+
27
+ desc 'activate', 'Activate a version'
28
+ option :template_id, require: true
29
+ option :version_id, require: true
30
+ def activate
31
+ puts @client.activate_version(parameterise(options))
32
+ rescue RestClient::ExceptionWithResponse => e
33
+ puts e.inspect
34
+ end
35
+
36
+ desc 'get', 'Get a version'
37
+ option :template_id, require: true
38
+ option :version_id, require: true
39
+ def get
40
+ puts @client.get_version(parameterise(options))
41
+ rescue RestClient::ExceptionWithResponse => e
42
+ puts e.inspect
43
+ end
44
+
45
+ desc 'update', 'Edit a version'
46
+ option :template_id, require: true
47
+ option :version_id, require: true
48
+ option :name
49
+ option :subject
50
+ option :html_content
51
+ option :plain_content
52
+ option :active
53
+ def update
54
+ factory = SendGrid4r::Factory::VersionFactory.new
55
+ params = parameterise(options)
56
+ params.delete(:template_id)
57
+ params.delete(:version_id)
58
+ version = factory.create(params)
59
+ puts @client.patch_version(
60
+ template_id: options[:template_id],
61
+ version_id: options[:version_id],
62
+ version: version
63
+ )
64
+ rescue RestClient::ExceptionWithResponse => e
65
+ puts e.inspect
66
+ end
67
+
68
+ desc 'delete', 'Delete a version'
69
+ option :template_id, require: true
70
+ option :version_id, require: true
71
+ def delete
72
+ puts @client.delete_version(parameterise(options))
73
+ rescue RestClient::ExceptionWithResponse => e
74
+ puts e.inspect
75
+ end
76
+ end
77
+ end
78
+ end
@@ -0,0 +1,86 @@
1
+ module SendGrid4r::CLI
2
+ #
3
+ # SendGrid Web API v3 User
4
+ #
5
+ class User < SgThor
6
+ desc 'profile', 'Get or Update user Profile'
7
+ option :address
8
+ option :city
9
+ option :company
10
+ option :country
11
+ option :first_name
12
+ option :last_name
13
+ option :phone
14
+ option :state
15
+ option :website
16
+ option :zip
17
+ def profile(action)
18
+ case action
19
+ when 'get'
20
+ puts @client.get_user_profile
21
+ when 'update'
22
+ puts @client.patch_user_profile(params: parameterise(options))
23
+ else
24
+ puts "error: #{action} is not supported in action parameter"
25
+ end
26
+ rescue RestClient::ExceptionWithResponse => e
27
+ puts e.inspect
28
+ end
29
+
30
+ desc 'account', 'Get user account'
31
+ def account(action)
32
+ case action
33
+ when 'get'
34
+ puts @client.get_user_account
35
+ else
36
+ puts "error: #{action} is not supported in action parameter"
37
+ end
38
+ rescue RestClient::ExceptionWithResponse => e
39
+ puts e.inspect
40
+ end
41
+
42
+ desc 'email', 'Get or update user email'
43
+ option :email
44
+ def email(action)
45
+ case action
46
+ when 'get'
47
+ puts @client.get_user_email
48
+ when 'update'
49
+ puts @client.put_user_email(parameterise(options))
50
+ else
51
+ puts "error: #{action} is not supported in action parameter"
52
+ end
53
+ rescue RestClient::ExceptionWithResponse => e
54
+ puts e.inspect
55
+ end
56
+
57
+ desc 'username', 'Get or update username'
58
+ option :username
59
+ def username(action)
60
+ case action
61
+ when 'get'
62
+ puts @client.get_user_username
63
+ when 'update'
64
+ puts @client.put_user_username(parameterise(options))
65
+ else
66
+ puts "error: #{action} is not supported in action parameter"
67
+ end
68
+ rescue RestClient::ExceptionWithResponse => e
69
+ puts e.inspect
70
+ end
71
+
72
+ desc('password', 'Update password')
73
+ option :new_password, require: true
74
+ option :old_password, require: true
75
+ def password(action)
76
+ case action
77
+ when 'update'
78
+ puts @client.put_user_password(parameterise(options))
79
+ else
80
+ puts "error: #{action} is not supported in action parameter"
81
+ end
82
+ rescue RestClient::ExceptionWithResponse => e
83
+ puts e.inspect
84
+ end
85
+ end
86
+ end