sendgrid4r 1.11.0 → 1.12.0

Sign up to get free protection for your applications and to get access to all the features.
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
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4cda12931359478f468bbeded469791515cf5860
4
- data.tar.gz: 97cac6512ee508361d0af538fb139ebaa50bafa5
3
+ metadata.gz: f63d8884d3b1ca8b9eb7091d85b912efa8bf4560
4
+ data.tar.gz: 3561561011662deb924811afc9b171d574b075e2
5
5
  SHA512:
6
- metadata.gz: cb38ffbfc69efab257fec97f634efb9bfa8f5a7d1e36e1c8256b0fc64b3e68f2a73eaa19cf3fc8bad245c6abb865c0266a9087d39b401828ae02b1faa74f8207
7
- data.tar.gz: 56fbd91625138b4f67abb5734708ca474c864d8b0d79ee986701e2952db85eb19cb9f5fe6118bb3bfba1f8e7b12052bac68f683fa7063be93ffb08421941bf69
6
+ metadata.gz: b9c8576c472b175ed404c66c47d2582191166e6c577fe490309c9342afb9916361b6914286ff478a177414293af4df1f9f8ab631e2ec438ba9cbc185a2f96fcd
7
+ data.tar.gz: 0705ed5391a47a46014cd88f26ad5101331c97576dc2535ca31ea2616bf23feb00f161304843a210d17dfa14b9a46a39c30e9a6f7441f6883709dddd16b12b67
data/.rubocop.yml CHANGED
@@ -18,7 +18,7 @@ ParameterLists:
18
18
 
19
19
  # Change limitation of AbcSize
20
20
  AbcSize:
21
- Max: 22
21
+ Max: 27
22
22
 
23
23
  # Change numeric literals
24
24
  NumericLiterals:
@@ -27,3 +27,8 @@ NumericLiterals:
27
27
  # Disable force module and class style
28
28
  ClassAndModuleChildren:
29
29
  Enabled: false
30
+
31
+ # Change limitation of the class length
32
+ ClassLength:
33
+ CountComments: false # count full line comments?
34
+ Max: 160
data/exe/sg ADDED
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'sendgrid4r'
4
+
5
+ SendGrid4r::CLI::SG.start(ARGV)
@@ -0,0 +1,53 @@
1
+ module SendGrid4r::CLI
2
+ module ApiKeys
3
+ #
4
+ # SendGrid Web API v3 ApiKeys ApiKey
5
+ #
6
+ class ApiKey < SgThor
7
+ desc 'list', 'List API keys'
8
+ def list
9
+ puts @client.get_api_keys
10
+ rescue RestClient::ExceptionWithResponse => e
11
+ puts e.inspect
12
+ end
13
+
14
+ desc 'create', 'Create an API key'
15
+ option :name, require: true
16
+ option :scopes, type: :array
17
+ def create
18
+ puts @client.post_api_key(parameterise(options))
19
+ rescue RestClient::ExceptionWithResponse => e
20
+ puts e.inspect
21
+ end
22
+
23
+ desc 'get', 'Get an API key'
24
+ option :api_key_id, require: true
25
+ def get
26
+ puts @client.get_api_key(parameterise(options))
27
+ rescue RestClient::ExceptionWithResponse => e
28
+ puts e.inspect
29
+ end
30
+
31
+ desc 'delete', 'Delete an API key'
32
+ option :api_key_id, require: true
33
+ def delete
34
+ puts @client.delete_api_key(parameterise(options))
35
+ rescue RestClient::ExceptionWithResponse => e
36
+ puts e.inspect
37
+ end
38
+
39
+ desc 'update', 'Update an API key'
40
+ option :api_key_id, require: true
41
+ option :name, require: true
42
+ option :scopes, type: :array
43
+ def update
44
+ puts @client.put_api_key(parameterise(options))
45
+ rescue RestClient::ExceptionWithResponse => e
46
+ puts e.inspect
47
+ end
48
+
49
+ desc('permission SUBCOMMAND ...ARGS', 'Manage permission for API key')
50
+ subcommand('permission', Permission)
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,15 @@
1
+ module SendGrid4r::CLI
2
+ module ApiKeys
3
+ #
4
+ # SendGrid Web API v3 ApiKeys Permission
5
+ #
6
+ class Permission < SgThor
7
+ desc 'list', 'List all available scopes for a user'
8
+ def list
9
+ puts @client.get_permissions
10
+ rescue RestClient::ExceptionWithResponse => e
11
+ puts e.inspect
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,134 @@
1
+ module SendGrid4r::CLI
2
+ module Campaign
3
+ #
4
+ # SendGrid Web API v3 Marketing Campaigns
5
+ #
6
+ class Campaign < SgThor
7
+ desc 'create', 'Create a campaign'
8
+ option :title
9
+ option :subject
10
+ option :sender_id, type: :numeric
11
+ option :list_ids, type: :array
12
+ option :segment_ids, type: :array
13
+ option :categories, type: :array
14
+ option :suppression_group_id, type: :numeric
15
+ option :html_content
16
+ option :plain_content
17
+ def create
18
+ params = SendGrid4r::Factory::CampaignFactory.new.create(
19
+ parameterise(options)
20
+ )
21
+ res = @client.post_campaign(params: params)
22
+ puts URI.decode(JSON.load(res).to_s)
23
+ rescue RestClient::ExceptionWithResponse => e
24
+ puts e.inspect
25
+ end
26
+
27
+ desc 'list', 'List campaigns'
28
+ def list
29
+ res = @client.get_campaigns
30
+ puts URI.decode(JSON.load(res).to_s)
31
+ rescue RestClient::ExceptionWithResponse => e
32
+ puts e.inspect
33
+ end
34
+
35
+ desc 'get', 'Get a campaign'
36
+ option :campaign_id, type: :numeric, require: true
37
+ def get
38
+ res = @client.get_campaign(parameterise(options))
39
+ puts URI.decode(JSON.load(res).to_s)
40
+ rescue RestClient::ExceptionWithResponse => e
41
+ puts e.inspect
42
+ end
43
+
44
+ desc 'delete', 'Delete a campaign'
45
+ option :campaign_id, type: :numeric, require: true
46
+ def delete
47
+ puts @client.delete_campaign(parameterise(options))
48
+ rescue RestClient::ExceptionWithResponse => e
49
+ puts e.inspect
50
+ end
51
+
52
+ desc 'update', 'Update a campaign'
53
+ option :campaign_id, type: :numeric, require: true
54
+ option :title
55
+ option :subject
56
+ option :sender_id, type: :numeric
57
+ option :list_ids, type: :array
58
+ option :categories, type: :array
59
+ option :suppression_group_id, type: :numeric
60
+ option :html_content
61
+ option :plain_content
62
+ def update
63
+ factory = SendGrid4r::Factory::CampaignFactory.new
64
+ params = parameterise(options)
65
+ params.delete(:campaign_id)
66
+ campaign = factory.create(params)
67
+ res = @client.patch_campaign(
68
+ campaign_id: options[:campaign_id],
69
+ params: campaign
70
+ )
71
+ puts URI.decode(JSON.load(res).to_s)
72
+ rescue RestClient::ExceptionWithResponse => e
73
+ puts e.inspect
74
+ end
75
+
76
+ desc 'send', 'Send a campaign'
77
+ option :campaign_id, type: :numeric, require: true
78
+ def send
79
+ puts @client.send_campaign(parameterise(options))
80
+ rescue RestClient::ExceptionWithResponse => e
81
+ puts e.inspect
82
+ end
83
+
84
+ desc 'schedule', 'Schedule a campaign'
85
+ option :campaign_id, type: :numeric, require: true
86
+ option :send_at, type: :numeric, require: true
87
+ def schedule
88
+ puts @client.schedule_campaign(parameterise(options))
89
+ rescue RestClient::ExceptionWithResponse => e
90
+ puts e.inspect
91
+ end
92
+
93
+ desc 'reschedule', 'Reschedule a campaign'
94
+ option :campaign_id, type: :numeric, require: true
95
+ option :send_at, type: :numeric, require: true
96
+ def reschedule
97
+ puts @client.reschedule_campaign(parameterise(options))
98
+ rescue RestClient::ExceptionWithResponse => e
99
+ puts e.inspect
100
+ end
101
+
102
+ desc 'unschedule', 'Unschedule a campaign'
103
+ option :campaign_id, type: :numeric, require: true
104
+ def unschedule
105
+ puts @client.unschedule_campaign(parameterise(options))
106
+ rescue RestClient::ExceptionWithResponse => e
107
+ puts e.inspect
108
+ end
109
+
110
+ desc 'time', 'View scheduled time of a campaign'
111
+ option :campaign_id, type: :numeric, require: true
112
+ def time
113
+ puts @client.get_schedule_time_campaign(parameterise(options))
114
+ rescue RestClient::ExceptionWithResponse => e
115
+ puts e.inspect
116
+ end
117
+
118
+ desc 'test', 'Send a test campaign'
119
+ option :campaign_id, type: :numeric, require: true
120
+ option :to, require: true
121
+ def test
122
+ puts @client.test_campaign(parameterise(options))
123
+ rescue RestClient::ExceptionWithResponse => e
124
+ puts e.inspect
125
+ end
126
+
127
+ desc('sender SUBCOMMAND ...ARGS', 'Manage senders')
128
+ subcommand('sender', Sender)
129
+
130
+ desc('contact SUBCOMMAND ...ARGS', 'Manage contacts')
131
+ subcommand('contact', Contact::Contact)
132
+ end
133
+ end
134
+ end
@@ -0,0 +1,25 @@
1
+ module SendGrid4r::CLI
2
+ module Campaign
3
+ module Contact
4
+ #
5
+ # SendGrid Web API v3 Marketing Campaigns - Contact
6
+ #
7
+ class Contact < SgThor
8
+ desc('custom SUBCOMMAND ...ARGS', 'Manage custom fields')
9
+ subcommand('custom', CustomField)
10
+
11
+ desc('list SUBCOMMAND ...ARGS', 'Manage lists')
12
+ subcommand('list', List)
13
+
14
+ desc('recipient SUBCOMMAND ...ARGS', 'Manage recipients')
15
+ subcommand('recipint', Recipient)
16
+
17
+ desc('reserved SUBCOMMAND ...ARGS', 'Manage reserved fields')
18
+ subcommand('reserved', ReservedField)
19
+
20
+ desc('segment SUBCOMMAND ...ARGS', 'Manage segments')
21
+ subcommand('segment', Segment)
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,42 @@
1
+ module SendGrid4r::CLI
2
+ module Campaign
3
+ module Contact
4
+ #
5
+ # SendGrid Web API v3 Marketing Campaigns
6
+ #
7
+ class CustomField < SgThor
8
+ desc 'create', 'Create a custom field'
9
+ option :name, require: true
10
+ option :type, require: true
11
+ def create
12
+ puts @client.post_custom_field(parameterise(options))
13
+ rescue RestClient::ExceptionWithResponse => e
14
+ puts e.inspect
15
+ end
16
+
17
+ desc 'list', 'List custom fields'
18
+ def list
19
+ puts @client.get_custom_fields
20
+ rescue RestClient::ExceptionWithResponse => e
21
+ puts e.inspect
22
+ end
23
+
24
+ desc 'get', 'Get a custom field'
25
+ option :custom_field_id, require: true
26
+ def get
27
+ puts @client.get_custom_field(parameterise(options))
28
+ rescue RestClient::ExceptionWithResponse => e
29
+ puts e.inspect
30
+ end
31
+
32
+ desc 'delete', 'Delete a custom field'
33
+ option :custom_field_id, require: true
34
+ def delete
35
+ puts @client.delete_custom_field(parameterise(options))
36
+ rescue RestClient::ExceptionWithResponse => e
37
+ puts e.inspect
38
+ end
39
+ end
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,71 @@
1
+ module SendGrid4r::CLI
2
+ module Campaign
3
+ module Contact
4
+ #
5
+ # SendGrid Web API v3 Marketing Campaigns - List
6
+ #
7
+ class List < SgThor
8
+ desc 'create', 'Create a list'
9
+ option :name, require: true
10
+ def create
11
+ puts @client.post_list(parameterise(options))
12
+ rescue RestClient::ExceptionWithResponse => e
13
+ puts e.inspect
14
+ end
15
+
16
+ desc 'list', 'List lists'
17
+ def list
18
+ puts @client.get_lists
19
+ rescue RestClient::ExceptionWithResponse => e
20
+ puts e.inspect
21
+ end
22
+
23
+ desc 'get', 'Get a list'
24
+ option :list_id, type: :numeric, require: true
25
+ def get
26
+ puts @client.get_list(parameterise(options))
27
+ rescue RestClient::ExceptionWithResponse => e
28
+ puts e.inspect
29
+ end
30
+
31
+ desc 'rename', 'Rename a list'
32
+ option :list_id, type: :numeric, require: true
33
+ option :name
34
+ def rename
35
+ puts @client.patch_list(parameterise(options))
36
+ rescue RestClient::ExceptionWithResponse => e
37
+ puts e.inspect
38
+ end
39
+
40
+ desc 'delete', 'Delete lists'
41
+ option :list_ids, type: :array, require: true
42
+ def delete
43
+ puts @client.delete_lists(parameterise(options))
44
+ rescue RestClient::ExceptionWithResponse => e
45
+ puts e.inspect
46
+ end
47
+
48
+ desc 'recipient', 'Add, Remove, List a recipient'
49
+ option :list_id, type: :numeric, require: true
50
+ option :recipients, type: :array, desc: 'for add action'
51
+ option :recipient_id, desc: 'for remove action'
52
+ option :page, type: :numeric, desc: 'for list action'
53
+ option :page_size, type: :numeric, desc: 'for list action'
54
+ def recipient(action)
55
+ case action
56
+ when 'add'
57
+ puts @client.post_recipients_to_list(parameterise(options))
58
+ when 'remove'
59
+ puts @client.delete_recipient_from_list(parameterise(options))
60
+ when 'list'
61
+ puts @client.get_recipients_from_list(parameterise(options))
62
+ else
63
+ puts "error: #{action} is not supported in action parameter"
64
+ end
65
+ rescue RestClient::ExceptionWithResponse => e
66
+ puts e.inspect
67
+ end
68
+ end
69
+ end
70
+ end
71
+ end
@@ -0,0 +1,78 @@
1
+ module SendGrid4r::CLI
2
+ module Campaign
3
+ module Contact
4
+ #
5
+ # SendGrid Web API v3 Marketing Campaigns - Recipient
6
+ #
7
+ class Recipient < SgThor
8
+ desc 'create', 'Create a recipient'
9
+ option :params, type: :hash, require: true
10
+ def create
11
+ puts @client.post_recipients(
12
+ params: [parameterise(options[:params])]
13
+ )
14
+ rescue RestClient::ExceptionWithResponse => e
15
+ puts e.inspect
16
+ end
17
+
18
+ desc 'update', 'Update a recipient'
19
+ option :params, type: :hash, require: true
20
+ def update
21
+ puts @client.patch_recipients(
22
+ params: [parameterise(options[:params])]
23
+ )
24
+ rescue RestClient::ExceptionWithResponse => e
25
+ puts e.inspect
26
+ end
27
+
28
+ desc 'delete', 'Delete recipients'
29
+ option :recipient_ids, type: :array, require: true
30
+ def delete
31
+ puts @client.delete_recipients(parameterise(options))
32
+ rescue RestClient::ExceptionWithResponse => e
33
+ puts e.inspect
34
+ end
35
+
36
+ desc 'list', 'List recipients'
37
+ option :page
38
+ option :page_size
39
+ def list
40
+ puts @client.get_recipients(parameterise(options))
41
+ rescue RestClient::ExceptionWithResponse => e
42
+ puts e.inspect
43
+ end
44
+
45
+ desc 'get', 'Get a recipient'
46
+ option :recipient_id, require: true
47
+ def get
48
+ puts @client.get_recipient(parameterise(options))
49
+ rescue RestClient::ExceptionWithResponse => e
50
+ puts e.inspect
51
+ end
52
+
53
+ desc 'count', 'Get recipients count'
54
+ def count
55
+ puts @client.get_recipients_count
56
+ rescue RestClient::ExceptionWithResponse => e
57
+ puts e.inspect
58
+ end
59
+
60
+ desc 'search', 'Search recipients'
61
+ option :params, type: :hash, require: true
62
+ def search
63
+ puts @client.search_recipients(params: options[:params])
64
+ rescue RestClient::ExceptionWithResponse => e
65
+ puts e.inspect
66
+ end
67
+
68
+ desc 'belong', 'List lists a recipient belongs to'
69
+ option :recipient_id, require: true
70
+ def belong
71
+ puts @client.get_lists_recipient_belong(parameterise(options))
72
+ rescue RestClient::ExceptionWithResponse => e
73
+ puts e.inspect
74
+ end
75
+ end
76
+ end
77
+ end
78
+ end