sendgrid4r 1.12.0 → 1.13.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +1 -1
- data/README.md +2 -1
- data/lib/sendgrid4r/cli/alert.rb +51 -0
- data/lib/sendgrid4r/cli/campaign/campaign.rb +2 -2
- data/lib/sendgrid4r/cli/campaign/contact/custom_field.rb +1 -1
- data/lib/sendgrid4r/cli/campaign/contact/list.rb +1 -1
- data/lib/sendgrid4r/cli/campaign/contact/recipient.rb +2 -2
- data/lib/sendgrid4r/cli/campaign/contact/segment.rb +12 -3
- data/lib/sendgrid4r/cli/ipam/whitelist.rb +1 -1
- data/lib/sendgrid4r/cli/settings/enforced_tls.rb +2 -2
- data/lib/sendgrid4r/cli/settings/mail.rb +33 -9
- data/lib/sendgrid4r/cli/settings/partner.rb +4 -1
- data/lib/sendgrid4r/cli/settings/tracking.rb +13 -4
- data/lib/sendgrid4r/cli/sg.rb +16 -10
- data/lib/sendgrid4r/cli/sg_thor.rb +27 -11
- data/lib/sendgrid4r/cli/stats/advanced.rb +22 -20
- data/lib/sendgrid4r/cli/stats/category.rb +8 -8
- data/lib/sendgrid4r/cli/stats/global.rb +3 -3
- data/lib/sendgrid4r/cli/stats/parse.rb +3 -3
- data/lib/sendgrid4r/cli/stats/subuser.rb +10 -10
- data/lib/sendgrid4r/cli/suppressions/block.rb +2 -2
- data/lib/sendgrid4r/cli/suppressions/bounce.rb +2 -2
- data/lib/sendgrid4r/cli/suppressions/global_unsubscribe.rb +2 -2
- data/lib/sendgrid4r/cli/suppressions/group.rb +6 -1
- data/lib/sendgrid4r/cli/suppressions/group_unsubscribe.rb +9 -0
- data/lib/sendgrid4r/cli/suppressions/invalid_email.rb +2 -2
- data/lib/sendgrid4r/cli/suppressions/spam_report.rb +2 -2
- data/lib/sendgrid4r/cli/templates/version.rb +2 -2
- data/lib/sendgrid4r/cli/user.rb +5 -5
- data/lib/sendgrid4r/cli/webhooks/parse.rb +42 -2
- data/lib/sendgrid4r/cli/whitelabel/domain.rb +3 -3
- data/lib/sendgrid4r/cli/whitelabel/link.rb +2 -2
- data/lib/sendgrid4r/rest/alerts.rb +81 -0
- data/lib/sendgrid4r/rest/api.rb +1 -0
- data/lib/sendgrid4r/rest/blocks.rb +2 -4
- data/lib/sendgrid4r/rest/bounces.rb +2 -4
- data/lib/sendgrid4r/rest/invalid_emails.rb +2 -4
- data/lib/sendgrid4r/rest/request.rb +10 -6
- data/lib/sendgrid4r/rest/sm/groups.rb +3 -2
- data/lib/sendgrid4r/rest/sm/suppressions.rb +61 -14
- data/lib/sendgrid4r/rest/spam_reports.rb +2 -4
- data/lib/sendgrid4r/rest/webhooks/parse.rb +47 -6
- data/lib/sendgrid4r/version.rb +1 -1
- data/lib/sendgrid4r.rb +3 -0
- data/spec/cli/alert_spec.rb +71 -0
- data/spec/cli/sg_spec.rb +5 -0
- data/spec/cli/suppressions/group_spec.rb +11 -2
- data/spec/cli/suppressions/group_unsubscribe_spec.rb +12 -2
- data/spec/cli/webhooks/parse_spec.rb +53 -1
- data/spec/client_spec.rb +17 -1
- data/spec/rest/alerts_spec.rb +188 -0
- data/spec/rest/mail/mail_spec.rb +10 -10
- data/spec/rest/request_spec.rb +41 -0
- data/spec/rest/sm/groups_spec.rb +9 -0
- data/spec/rest/sm/suppressions_spec.rb +122 -35
- data/spec/rest/webhooks/parse_spec.rb +94 -7
- metadata +10 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f8127a4d5294077d6b12ed4f655dc6781a931f96
|
4
|
+
data.tar.gz: fd2478d82a6423d5dcb2e783407c114f546d9f5a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9fc84962129b6444f935727954c8bfa6434e6a174f5490d2f062242c0da985101d92c6d5d09c21b3c6f7b05db040072117f82a1cf01e08293bc67d37a6251527
|
7
|
+
data.tar.gz: 58effad12a4cdf569e1dcc7b7e26642e03523193d934f78fb743ec1544e35844a9bc1888106900830f9ffa57ab0d384c5f391e8d03e776c03a48e72ced664e83
|
data/.rubocop.yml
CHANGED
data/README.md
CHANGED
@@ -1,7 +1,8 @@
|
|
1
1
|
# Sendgrid4r
|
2
2
|
|
3
3
|
This gem allows you to quickly and easily access to SendGrid Web API v3 for Ruby.
|
4
|
-
See [api reference](https://sendgrid.com/docs/API_Reference/Web_API_v3/index.html) for more
|
4
|
+
See [api reference](https://sendgrid.com/docs/API_Reference/Web_API_v3/index.html) for more details.
|
5
|
+
Also this gem provides `sg` command. `sg` is the command line interface to access SendGrid APIs. See [Command line interface Usage](Cli) for more details.
|
5
6
|
|
6
7
|
[![Build Status](https://travis-ci.org/awwa/sendgrid4r.svg?branch=master)](https://travis-ci.org/awwa/sendgrid4r)
|
7
8
|
[![Gem Version](https://badge.fury.io/rb/sendgrid4r.svg)](https://badge.fury.io/rb/sendgrid4r)
|
@@ -0,0 +1,51 @@
|
|
1
|
+
module SendGrid4r::CLI
|
2
|
+
#
|
3
|
+
# SendGrid Web API v3 Alert
|
4
|
+
#
|
5
|
+
class Alert < SgThor
|
6
|
+
desc 'list', 'List alerts'
|
7
|
+
def list
|
8
|
+
puts @client.get_alerts
|
9
|
+
rescue RestClient::ExceptionWithResponse => e
|
10
|
+
puts e.inspect
|
11
|
+
end
|
12
|
+
|
13
|
+
desc 'create', 'Create an alert'
|
14
|
+
option :type, banner: '[stats_notification|usage_limit]', require: true
|
15
|
+
option :email_to, require: true
|
16
|
+
option :percentage, type: :numeric
|
17
|
+
option :frequency, banner: '[daily|weekly|monthly]'
|
18
|
+
def create
|
19
|
+
puts @client.post_alert(parameterise(options))
|
20
|
+
rescue RestClient::ExceptionWithResponse => e
|
21
|
+
puts e.inspect
|
22
|
+
end
|
23
|
+
|
24
|
+
desc 'get', 'Get an alert'
|
25
|
+
option :alert_id, type: :numeric, require: true
|
26
|
+
def get
|
27
|
+
puts @client.get_alert(parameterise(options))
|
28
|
+
rescue RestClient::ExceptionWithResponse => e
|
29
|
+
puts e.inspect
|
30
|
+
end
|
31
|
+
|
32
|
+
desc 'delete', 'Delete an alert'
|
33
|
+
option :alert_id, type: :numeric, require: true
|
34
|
+
def delete
|
35
|
+
puts @client.delete_alert(parameterise(options))
|
36
|
+
rescue RestClient::ExceptionWithResponse => e
|
37
|
+
puts e.inspect
|
38
|
+
end
|
39
|
+
|
40
|
+
desc 'update', 'Update an alert'
|
41
|
+
option :alert_id, type: :numeric, require: true
|
42
|
+
option :email_to, require: true
|
43
|
+
option :percentage, type: :numeric
|
44
|
+
option :frequency, banner: '[daily|weekly|monthly]'
|
45
|
+
def update
|
46
|
+
puts @client.patch_alert(parameterise(options))
|
47
|
+
rescue RestClient::ExceptionWithResponse => e
|
48
|
+
puts e.inspect
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
@@ -83,7 +83,7 @@ module SendGrid4r::CLI
|
|
83
83
|
|
84
84
|
desc 'schedule', 'Schedule a campaign'
|
85
85
|
option :campaign_id, type: :numeric, require: true
|
86
|
-
option :send_at, type: :numeric, require: true
|
86
|
+
option :send_at, banner: SgThor::UTS, type: :numeric, require: true
|
87
87
|
def schedule
|
88
88
|
puts @client.schedule_campaign(parameterise(options))
|
89
89
|
rescue RestClient::ExceptionWithResponse => e
|
@@ -92,7 +92,7 @@ module SendGrid4r::CLI
|
|
92
92
|
|
93
93
|
desc 'reschedule', 'Reschedule a campaign'
|
94
94
|
option :campaign_id, type: :numeric, require: true
|
95
|
-
option :send_at, type: :numeric, require: true
|
95
|
+
option :send_at, banner: SgThor::UTS, type: :numeric, require: true
|
96
96
|
def reschedule
|
97
97
|
puts @client.reschedule_campaign(parameterise(options))
|
98
98
|
rescue RestClient::ExceptionWithResponse => e
|
@@ -7,7 +7,7 @@ module SendGrid4r::CLI
|
|
7
7
|
class CustomField < SgThor
|
8
8
|
desc 'create', 'Create a custom field'
|
9
9
|
option :name, require: true
|
10
|
-
option :type, require: true
|
10
|
+
option :type, banner: SgThor::TYP, require: true
|
11
11
|
def create
|
12
12
|
puts @client.post_custom_field(parameterise(options))
|
13
13
|
rescue RestClient::ExceptionWithResponse => e
|
@@ -45,7 +45,7 @@ module SendGrid4r::CLI
|
|
45
45
|
puts e.inspect
|
46
46
|
end
|
47
47
|
|
48
|
-
desc 'recipient', 'Add, Remove, List a recipient'
|
48
|
+
desc 'recipient [add|remove|list]', 'Add, Remove, List a recipient'
|
49
49
|
option :list_id, type: :numeric, require: true
|
50
50
|
option :recipients, type: :array, desc: 'for add action'
|
51
51
|
option :recipient_id, desc: 'for remove action'
|
@@ -34,8 +34,8 @@ module SendGrid4r::CLI
|
|
34
34
|
end
|
35
35
|
|
36
36
|
desc 'list', 'List recipients'
|
37
|
-
option :page
|
38
|
-
option :page_size
|
37
|
+
option :page, type: :numeric
|
38
|
+
option :page_size, type: :numeric
|
39
39
|
def list
|
40
40
|
puts @client.get_recipients(parameterise(options))
|
41
41
|
rescue RestClient::ExceptionWithResponse => e
|
@@ -14,7 +14,12 @@ module SendGrid4r::CLI
|
|
14
14
|
desc 'create', 'Create a segment'
|
15
15
|
option :name, require: true
|
16
16
|
option :list_id, type: :numeric, require: true
|
17
|
-
option
|
17
|
+
option(
|
18
|
+
:conditions,
|
19
|
+
type: :array,
|
20
|
+
require: true,
|
21
|
+
banner: 'field:email,value:abc@abc.abc,operator:eq,and_or:'
|
22
|
+
)
|
18
23
|
def create
|
19
24
|
conditions = options[:conditions].map do |c|
|
20
25
|
array = c.delete(' ').split(/[:,]/)
|
@@ -51,7 +56,11 @@ module SendGrid4r::CLI
|
|
51
56
|
desc 'update', 'Update a segment'
|
52
57
|
option :segment_id, require: true
|
53
58
|
option :name
|
54
|
-
option
|
59
|
+
option(
|
60
|
+
:conditions,
|
61
|
+
type: :array,
|
62
|
+
banner: 'field:email,value:abc@abc.abc,operator:eq,and_or:'
|
63
|
+
)
|
55
64
|
def update
|
56
65
|
conditions = options[:conditions].map do |c|
|
57
66
|
array = c.delete(' ').split(/[:,]/)
|
@@ -80,7 +89,7 @@ module SendGrid4r::CLI
|
|
80
89
|
puts e.inspect
|
81
90
|
end
|
82
91
|
|
83
|
-
desc 'recipient', 'List recipients'
|
92
|
+
desc 'recipient [list]', 'List recipients'
|
84
93
|
option :segment_id, require: true
|
85
94
|
def recipient(action)
|
86
95
|
case action
|
@@ -20,7 +20,7 @@ module SendGrid4r::CLI
|
|
20
20
|
end
|
21
21
|
|
22
22
|
desc 'delete', 'Delete Whitelisted IPs'
|
23
|
-
option :ids, type: :array
|
23
|
+
option :ids, type: :array, require: true
|
24
24
|
def delete
|
25
25
|
puts @client.delete_whitelisted_ips(parameterise(options))
|
26
26
|
rescue RestClient::ExceptionWithResponse => e
|
@@ -12,8 +12,8 @@ module SendGrid4r::CLI
|
|
12
12
|
end
|
13
13
|
|
14
14
|
desc 'update', 'Change the Enforced TLS settings'
|
15
|
-
option :require_tls
|
16
|
-
option :require_valid_cert
|
15
|
+
option :require_tls, type: :boolean
|
16
|
+
option :require_valid_cert, type: :boolean
|
17
17
|
def update
|
18
18
|
puts @client.patch_enforced_tls(params: parameterise(options))
|
19
19
|
rescue RestClient::ExceptionWithResponse => e
|
@@ -13,7 +13,10 @@ module SendGrid4r::CLI
|
|
13
13
|
puts e.inspect
|
14
14
|
end
|
15
15
|
|
16
|
-
desc
|
16
|
+
desc(
|
17
|
+
'whitelist [get|enable|disable]',
|
18
|
+
'Get, Enable and Disable address whitelist settings'
|
19
|
+
)
|
17
20
|
option :list, type: :array
|
18
21
|
def whitelist(action)
|
19
22
|
case action
|
@@ -30,7 +33,7 @@ module SendGrid4r::CLI
|
|
30
33
|
puts e.inspect
|
31
34
|
end
|
32
35
|
|
33
|
-
desc 'bcc', 'Get, Enable and Disable bcc settings'
|
36
|
+
desc 'bcc [get|enable|disable]', 'Get, Enable and Disable bcc settings'
|
34
37
|
option :email
|
35
38
|
def bcc(action)
|
36
39
|
case action
|
@@ -47,7 +50,10 @@ module SendGrid4r::CLI
|
|
47
50
|
puts e.inspect
|
48
51
|
end
|
49
52
|
|
50
|
-
desc
|
53
|
+
desc(
|
54
|
+
'bounce_purge [get|enable|disable]',
|
55
|
+
'Get, Enable and Disable bounce purge settings'
|
56
|
+
)
|
51
57
|
option :hard_bounces, type: :numeric
|
52
58
|
option :soft_bounces, type: :numeric
|
53
59
|
def bounce_purge(action)
|
@@ -65,7 +71,10 @@ module SendGrid4r::CLI
|
|
65
71
|
puts e.inspect
|
66
72
|
end
|
67
73
|
|
68
|
-
desc
|
74
|
+
desc(
|
75
|
+
'footer [get|enable|disable]',
|
76
|
+
'Get, Enable and Disable footer settings'
|
77
|
+
)
|
69
78
|
option :html_content
|
70
79
|
option :plain_content
|
71
80
|
def footer(action)
|
@@ -83,7 +92,10 @@ module SendGrid4r::CLI
|
|
83
92
|
puts e.inspect
|
84
93
|
end
|
85
94
|
|
86
|
-
desc
|
95
|
+
desc(
|
96
|
+
'forward_bounce [get|enable|disable]',
|
97
|
+
'Get, Enable and Disable forward bounce settings'
|
98
|
+
)
|
87
99
|
option :email
|
88
100
|
def forward_bounce(action)
|
89
101
|
case action
|
@@ -100,7 +112,10 @@ module SendGrid4r::CLI
|
|
100
112
|
puts e.inspect
|
101
113
|
end
|
102
114
|
|
103
|
-
desc
|
115
|
+
desc(
|
116
|
+
'forward_spam [get|enable|disable]',
|
117
|
+
'Get, Enable and Disable forward spam settings'
|
118
|
+
)
|
104
119
|
option :email
|
105
120
|
def forward_spam(action)
|
106
121
|
case action
|
@@ -117,7 +132,10 @@ module SendGrid4r::CLI
|
|
117
132
|
puts e.inspect
|
118
133
|
end
|
119
134
|
|
120
|
-
desc
|
135
|
+
desc(
|
136
|
+
'spam_check [get|enable|disable]',
|
137
|
+
'Get, Enable and Disable spam check settings'
|
138
|
+
)
|
121
139
|
option :url
|
122
140
|
option :max_score
|
123
141
|
def spam_check(action)
|
@@ -135,7 +153,10 @@ module SendGrid4r::CLI
|
|
135
153
|
puts e.inspect
|
136
154
|
end
|
137
155
|
|
138
|
-
desc
|
156
|
+
desc(
|
157
|
+
'template [get|enable|disable]',
|
158
|
+
'Get, Enable and Disable template settings'
|
159
|
+
)
|
139
160
|
option :html_content
|
140
161
|
def template(action)
|
141
162
|
case action
|
@@ -152,7 +173,10 @@ module SendGrid4r::CLI
|
|
152
173
|
puts e.inspect
|
153
174
|
end
|
154
175
|
|
155
|
-
desc
|
176
|
+
desc(
|
177
|
+
'plain_content [get|enable|disable]',
|
178
|
+
'Get, Enable and Disable plain content settings'
|
179
|
+
)
|
156
180
|
def plain_content(action)
|
157
181
|
case action
|
158
182
|
when 'get'
|
@@ -13,7 +13,10 @@ module SendGrid4r::CLI
|
|
13
13
|
puts e.inspect
|
14
14
|
end
|
15
15
|
|
16
|
-
desc
|
16
|
+
desc(
|
17
|
+
'new_relic [get|enable|disable]',
|
18
|
+
'Get, Enable and Disable new relic settings'
|
19
|
+
)
|
17
20
|
option :license_key
|
18
21
|
def new_relic(action)
|
19
22
|
case action
|
@@ -13,7 +13,10 @@ module SendGrid4r::CLI
|
|
13
13
|
puts e.inspect
|
14
14
|
end
|
15
15
|
|
16
|
-
desc
|
16
|
+
desc(
|
17
|
+
'click [get|enable|disable]',
|
18
|
+
'Get, Enable and Disable click tracking settings'
|
19
|
+
)
|
17
20
|
def click(action)
|
18
21
|
case action
|
19
22
|
when 'get'
|
@@ -28,7 +31,10 @@ module SendGrid4r::CLI
|
|
28
31
|
puts e.inspect
|
29
32
|
end
|
30
33
|
|
31
|
-
desc
|
34
|
+
desc(
|
35
|
+
'ganalytics [get|enable|disable]',
|
36
|
+
'Get, Enable and Disable google analytics settings'
|
37
|
+
)
|
32
38
|
option :utm_source
|
33
39
|
option :utm_medium
|
34
40
|
option :utm_term
|
@@ -49,7 +55,10 @@ module SendGrid4r::CLI
|
|
49
55
|
puts e.inspect
|
50
56
|
end
|
51
57
|
|
52
|
-
desc
|
58
|
+
desc(
|
59
|
+
'open [get|enable|disable]',
|
60
|
+
'Get, Enable and Disable open tracking settings'
|
61
|
+
)
|
53
62
|
def open(action)
|
54
63
|
case action
|
55
64
|
when 'get'
|
@@ -65,7 +74,7 @@ module SendGrid4r::CLI
|
|
65
74
|
end
|
66
75
|
|
67
76
|
desc(
|
68
|
-
'subscription',
|
77
|
+
'subscription [get|enable|disable]',
|
69
78
|
'Get, Enable and Disable subscription tracking settings'
|
70
79
|
)
|
71
80
|
option :landing
|
data/lib/sendgrid4r/cli/sg.rb
CHANGED
@@ -5,26 +5,35 @@ module SendGrid4r::CLI
|
|
5
5
|
class SG < Thor
|
6
6
|
map %w(--version -v) => :print_version
|
7
7
|
|
8
|
-
desc '--version, -v', '
|
8
|
+
desc '--version, -v', 'Print the version'
|
9
9
|
def print_version
|
10
10
|
puts SendGrid4r::VERSION
|
11
11
|
end
|
12
12
|
|
13
|
+
desc('alert SUBCOMMAND ...ARGS', 'Manage alert settings')
|
14
|
+
subcommand('alert', Alert)
|
15
|
+
|
13
16
|
desc('api_key SUBCOMMAND ...ARGS', 'Manage API keys')
|
14
17
|
subcommand('api_key', ApiKeys::ApiKey)
|
15
18
|
|
19
|
+
desc('campaign SUBCOMMAND ...ARGS', 'Manage Marketing Campaigns')
|
20
|
+
subcommand('campaign', Campaign::Campaign)
|
21
|
+
|
16
22
|
desc('cancel_schedule SUBCOMMAND ...ARGS', 'Manage canceling schedule send')
|
17
23
|
subcommand('cancel_schedule', CancelSchedules::CancelSchedule)
|
18
24
|
|
19
|
-
desc('ip SUBCOMMAND ...ARGS', 'Manage ips')
|
20
|
-
subcommand('ip', Ips::Ip)
|
21
|
-
|
22
25
|
desc('ipam SUBCOMMAND ...ARGS', 'Manage ip access')
|
23
26
|
subcommand('ipam', Ipam::Ipam)
|
24
27
|
|
28
|
+
desc('ip SUBCOMMAND ...ARGS', 'Manage ips')
|
29
|
+
subcommand('ip', Ips::Ip)
|
30
|
+
|
25
31
|
desc('settings SUBCOMMAND ...ARGS', 'Manage settings')
|
26
32
|
subcommand('settings', Settings::Settings)
|
27
33
|
|
34
|
+
desc('stats SUBCOMMAND ...ARGS', 'Get account statistics')
|
35
|
+
subcommand('stats', Stats::Stats)
|
36
|
+
|
28
37
|
desc('subuser SUBCOMMAND ...ARGS', 'Manage subuser')
|
29
38
|
subcommand('subuser', Subusers::Subuser)
|
30
39
|
|
@@ -43,13 +52,10 @@ module SendGrid4r::CLI
|
|
43
52
|
desc('category SUBCOMMAND ...ARGS', 'Manage categories')
|
44
53
|
subcommand('category', Category)
|
45
54
|
|
46
|
-
desc('user SUBCOMMAND ...ARGS', 'Manage user')
|
47
|
-
subcommand('user', User)
|
48
|
-
|
49
|
-
desc('campaign SUBCOMMAND ...ARGS', 'Manage Marketing Campaigns')
|
50
|
-
subcommand('campaign', Campaign::Campaign)
|
51
|
-
|
52
55
|
desc('mail SUBCOMMAND ...ARGS', 'Send mail')
|
53
56
|
subcommand('mail', Mail)
|
57
|
+
|
58
|
+
desc('user SUBCOMMAND ...ARGS', 'Manage user')
|
59
|
+
subcommand('user', User)
|
54
60
|
end
|
55
61
|
end
|
@@ -3,15 +3,29 @@ module SendGrid4r::CLI
|
|
3
3
|
# SendGrid Web API v3 SgThor
|
4
4
|
#
|
5
5
|
class SgThor < Thor
|
6
|
-
|
7
|
-
|
8
|
-
|
6
|
+
ISO = 'YYYY-MM-DD'
|
7
|
+
UTS = 'UNIX TIMESTAMP'
|
8
|
+
AGG = '[day|week|month]'
|
9
|
+
DIR = '[desc|asc]'
|
10
|
+
TYP = '[date|text|number]'
|
11
|
+
|
12
|
+
class_option :api_key, aliases: '-k', desc: 'API Key for APIKey Auth'
|
13
|
+
class_option :user, aliases: '-u', desc: 'Username for Basic Auth'
|
14
|
+
class_option :pass, aliases: '-p', desc: 'Password for Basic Auth'
|
15
|
+
class_option(
|
16
|
+
:envkey,
|
17
|
+
aliases: '-e',
|
18
|
+
desc: 'Load API Key from environment variable "SG_API_KEY"',
|
19
|
+
banner: ''
|
20
|
+
)
|
9
21
|
|
10
22
|
def initialize(*args)
|
11
23
|
super
|
24
|
+
api_key = options[:api_key]
|
25
|
+
api_key = ENV['SG_API_KEY'] if options[:envkey]
|
12
26
|
@client = SendGrid4r::Client.new(
|
13
27
|
username: options[:user], password: options[:pass],
|
14
|
-
api_key:
|
28
|
+
api_key: api_key, raw_response: true
|
15
29
|
)
|
16
30
|
end
|
17
31
|
|
@@ -22,13 +36,15 @@ module SendGrid4r::CLI
|
|
22
36
|
params = options.each_with_object({}) do |(k, v), memo|
|
23
37
|
memo[k.to_s.to_sym] = v
|
24
38
|
end
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
39
|
+
params.tap do |p|
|
40
|
+
# remove auth info
|
41
|
+
p.delete(:api_key)
|
42
|
+
p.delete(:user)
|
43
|
+
p.delete(:pass)
|
44
|
+
p.delete(:envkey)
|
45
|
+
# remove empty key and value
|
46
|
+
p.delete_if { |_k, v| v.nil? }
|
47
|
+
end
|
32
48
|
end
|
33
49
|
end
|
34
50
|
end
|
@@ -5,10 +5,10 @@ module SendGrid4r::CLI
|
|
5
5
|
#
|
6
6
|
class Advanced < SgThor
|
7
7
|
desc 'geo', 'Gets email statistics by country and state/province'
|
8
|
-
option :start_date, require: true
|
9
|
-
option :end_date
|
10
|
-
option :aggregated_by
|
11
|
-
option :country
|
8
|
+
option :start_date, banner: SgThor::ISO, require: true
|
9
|
+
option :end_date, banner: SgThor::ISO
|
10
|
+
option :aggregated_by, banner: SgThor::AGG
|
11
|
+
option :country, banner: '[US|CA]'
|
12
12
|
def geo
|
13
13
|
puts @client.get_geo_stats(parameterise(options))
|
14
14
|
rescue RestClient::ExceptionWithResponse => e
|
@@ -16,9 +16,9 @@ module SendGrid4r::CLI
|
|
16
16
|
end
|
17
17
|
|
18
18
|
desc 'device', 'Gets email statistics by device type'
|
19
|
-
option :start_date, require: true
|
20
|
-
option :end_date
|
21
|
-
option :aggregated_by
|
19
|
+
option :start_date, banner: SgThor::ISO, require: true
|
20
|
+
option :end_date, banner: SgThor::ISO
|
21
|
+
option :aggregated_by, banner: SgThor::AGG
|
22
22
|
def device
|
23
23
|
puts @client.get_devices_stats(parameterise(options))
|
24
24
|
rescue RestClient::ExceptionWithResponse => e
|
@@ -26,9 +26,9 @@ module SendGrid4r::CLI
|
|
26
26
|
end
|
27
27
|
|
28
28
|
desc 'client', 'Gets email statistics by client type'
|
29
|
-
option :start_date, require: true
|
30
|
-
option :end_date
|
31
|
-
option :aggregated_by
|
29
|
+
option :start_date, banner: SgThor::ISO, require: true
|
30
|
+
option :end_date, banner: SgThor::ISO
|
31
|
+
option :aggregated_by, banner: SgThor::AGG
|
32
32
|
def client
|
33
33
|
puts @client.get_clients_stats(parameterise(options))
|
34
34
|
rescue RestClient::ExceptionWithResponse => e
|
@@ -36,10 +36,12 @@ module SendGrid4r::CLI
|
|
36
36
|
end
|
37
37
|
|
38
38
|
desc 'client_type', 'Gets email statistics for a single client type'
|
39
|
-
option :start_date, require: true
|
40
|
-
option :end_date
|
41
|
-
option :aggregated_by
|
42
|
-
option
|
39
|
+
option :start_date, banner: SgThor::ISO, require: true
|
40
|
+
option :end_date, banner: SgThor::ISO
|
41
|
+
option :aggregated_by, banner: SgThor::AGG
|
42
|
+
option(
|
43
|
+
:client_type, banner: '[phone|tablet|webmail|desktop]', require: true
|
44
|
+
)
|
43
45
|
def client_type
|
44
46
|
puts @client.get_clients_type_stats(parameterise(options))
|
45
47
|
rescue RestClient::ExceptionWithResponse => e
|
@@ -47,9 +49,9 @@ module SendGrid4r::CLI
|
|
47
49
|
end
|
48
50
|
|
49
51
|
desc 'mailbox_provider', 'Gets email statistics by mailbox provider'
|
50
|
-
option :start_date, require: true
|
51
|
-
option :end_date
|
52
|
-
option :aggregated_by
|
52
|
+
option :start_date, banner: SgThor::ISO, require: true
|
53
|
+
option :end_date, banner: SgThor::ISO
|
54
|
+
option :aggregated_by, banner: SgThor::AGG
|
53
55
|
option :mailbox_providers
|
54
56
|
def mailbox_provider
|
55
57
|
puts @client.get_mailbox_providers_stats(parameterise(options))
|
@@ -58,9 +60,9 @@ module SendGrid4r::CLI
|
|
58
60
|
end
|
59
61
|
|
60
62
|
desc 'browser', 'Gets email statistics by browser'
|
61
|
-
option :start_date, require: true
|
62
|
-
option :end_date
|
63
|
-
option :aggregated_by
|
63
|
+
option :start_date, banner: SgThor::ISO, require: true
|
64
|
+
option :end_date, banner: SgThor::ISO
|
65
|
+
option :aggregated_by, banner: SgThor::AGG
|
64
66
|
option :browsers
|
65
67
|
def browser
|
66
68
|
puts @client.get_browsers_stats(parameterise(options))
|
@@ -5,9 +5,9 @@ module SendGrid4r::CLI
|
|
5
5
|
#
|
6
6
|
class Category < SgThor
|
7
7
|
desc 'get', 'Gets email statistics for the given categories.'
|
8
|
-
option :start_date, require: true
|
9
|
-
option :end_date
|
10
|
-
option :aggregated_by
|
8
|
+
option :start_date, banner: SgThor::ISO, require: true
|
9
|
+
option :end_date, banner: SgThor::ISO
|
10
|
+
option :aggregated_by, banner: SgThor::AGG
|
11
11
|
option :categories, require: true
|
12
12
|
def get
|
13
13
|
puts @client.get_categories_stats(parameterise(options))
|
@@ -19,12 +19,12 @@ module SendGrid4r::CLI
|
|
19
19
|
'sums',
|
20
20
|
'Gets the total sums of each email statistic metric for all categories'
|
21
21
|
)
|
22
|
-
option :start_date, require: true
|
23
|
-
option :end_date
|
22
|
+
option :start_date, banner: SgThor::ISO, require: true
|
23
|
+
option :end_date, banner: SgThor::ISO
|
24
24
|
option :sort_by_metric
|
25
|
-
option :sort_by_direction
|
26
|
-
option :limit
|
27
|
-
option :offset
|
25
|
+
option :sort_by_direction, banner: SgThor::DIR
|
26
|
+
option :limit, type: :numeric
|
27
|
+
option :offset, type: :numeric
|
28
28
|
def sums
|
29
29
|
puts @client.get_categories_stats_sums(parameterise(options))
|
30
30
|
rescue RestClient::ExceptionWithResponse => e
|
@@ -5,9 +5,9 @@ module SendGrid4r::CLI
|
|
5
5
|
#
|
6
6
|
class Global < SgThor
|
7
7
|
desc 'get', 'Gets all of your user’s email statistics.'
|
8
|
-
option :start_date, require: true
|
9
|
-
option :end_date
|
10
|
-
option :aggregated_by
|
8
|
+
option :start_date, banner: SgThor::ISO, require: true
|
9
|
+
option :end_date, banner: SgThor::ISO
|
10
|
+
option :aggregated_by, banner: SgThor::AGG
|
11
11
|
def get
|
12
12
|
puts @client.get_global_stats(parameterise(options))
|
13
13
|
rescue RestClient::ExceptionWithResponse => e
|
@@ -5,9 +5,9 @@ module SendGrid4r::CLI
|
|
5
5
|
#
|
6
6
|
class Parse < SgThor
|
7
7
|
desc 'get', 'Gets statistics for Parse Webhook usage'
|
8
|
-
option :start_date, require: true
|
9
|
-
option :end_date
|
10
|
-
option :aggregated_by
|
8
|
+
option :start_date, banner: SgThor::ISO, require: true
|
9
|
+
option :end_date, banner: SgThor::ISO
|
10
|
+
option :aggregated_by, banner: SgThor::AGG
|
11
11
|
def get
|
12
12
|
puts @client.get_parse_stats(parameterise(options))
|
13
13
|
rescue RestClient::ExceptionWithResponse => e
|
@@ -5,9 +5,9 @@ module SendGrid4r::CLI
|
|
5
5
|
#
|
6
6
|
class Subuser < SgThor
|
7
7
|
desc 'get', 'Gets email statistics for the given subusers'
|
8
|
-
option :start_date, require: true
|
9
|
-
option :end_date
|
10
|
-
option :aggregated_by
|
8
|
+
option :start_date, banner: SgThor::ISO, require: true
|
9
|
+
option :end_date, banner: SgThor::ISO
|
10
|
+
option :aggregated_by, banner: SgThor::AGG
|
11
11
|
option :subusers, type: :array, require: true
|
12
12
|
def get
|
13
13
|
puts @client.get_subusers_stats(parameterise(options))
|
@@ -19,10 +19,10 @@ module SendGrid4r::CLI
|
|
19
19
|
'sums',
|
20
20
|
'Gets the total sums of each email statistic metric for all subusers'
|
21
21
|
)
|
22
|
-
option :start_date, require: true
|
23
|
-
option :end_date
|
22
|
+
option :start_date, banner: SgThor::ISO, require: true
|
23
|
+
option :end_date, banner: SgThor::ISO
|
24
24
|
option :sort_by_metric
|
25
|
-
option :sort_by_direction
|
25
|
+
option :sort_by_direction, banner: SgThor::DIR
|
26
26
|
option :limit, type: :numeric
|
27
27
|
option :offset, type: :numeric
|
28
28
|
def sums
|
@@ -35,10 +35,10 @@ module SendGrid4r::CLI
|
|
35
35
|
'list_monthly',
|
36
36
|
'Retrieve the monthly email statistics for all subusers'
|
37
37
|
)
|
38
|
-
option :date, require: true
|
38
|
+
option :date, banner: SgThor::ISO, require: true
|
39
39
|
option :subuser
|
40
40
|
option :sort_by_metric
|
41
|
-
option :sort_by_direction
|
41
|
+
option :sort_by_direction, banner: SgThor::DIR
|
42
42
|
option :limit, type: :numeric
|
43
43
|
option :offset, type: :numeric
|
44
44
|
def list_monthly
|
@@ -52,9 +52,9 @@ module SendGrid4r::CLI
|
|
52
52
|
'Retrieve the monthly email statistics for a single subuser'
|
53
53
|
)
|
54
54
|
option :subuser_name, require: true
|
55
|
-
option :date, require: true
|
55
|
+
option :date, banner: SgThor::ISO, require: true
|
56
56
|
option :sort_by_metric
|
57
|
-
option :sort_by_direction
|
57
|
+
option :sort_by_direction, banner: SgThor::DIR
|
58
58
|
option :limit, type: :numeric
|
59
59
|
option :offset, type: :numeric
|
60
60
|
def get_monthly
|