sendgrid4r 0.0.5 → 0.1.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.
- checksums.yaml +4 -4
- data/.rubocop.yml +21 -0
- data/.travis.yml +2 -3
- data/README.md +3 -373
- data/Rakefile +1 -1
- data/lib/auth.rb +7 -9
- data/lib/client.rb +8 -9
- data/lib/sendgrid4r/factory/version_factory.rb +20 -10
- data/lib/sendgrid4r/rest/api.rb +28 -9
- data/lib/sendgrid4r/rest/asm/global_suppressions.rb +46 -0
- data/lib/sendgrid4r/rest/asm/groups.rb +69 -0
- data/lib/sendgrid4r/rest/asm/suppressions.rb +68 -0
- data/lib/sendgrid4r/rest/categories/categories.rb +38 -0
- data/lib/sendgrid4r/rest/ips/addresses.rb +74 -0
- data/lib/sendgrid4r/rest/ips/pools.rb +63 -0
- data/lib/sendgrid4r/rest/ips/warmup.rb +55 -0
- data/lib/sendgrid4r/rest/request.rb +34 -19
- data/lib/sendgrid4r/rest/settings/enforced_tls.rb +39 -0
- data/lib/sendgrid4r/rest/stats/advanced.rb +91 -0
- data/lib/sendgrid4r/rest/stats/category.rb +47 -0
- data/lib/sendgrid4r/rest/stats/global.rb +26 -0
- data/lib/sendgrid4r/rest/stats/parse.rb +26 -0
- data/lib/sendgrid4r/rest/stats/stats.rb +89 -0
- data/lib/sendgrid4r/rest/stats/subuser.rb +47 -0
- data/lib/sendgrid4r/rest/templates/templates.rb +61 -0
- data/lib/sendgrid4r/rest/templates/versions.rb +92 -0
- data/lib/sendgrid4r/version.rb +4 -1
- data/lib/sendgrid4r.rb +5 -2
- data/sendgrid4r.gemspec +13 -12
- data/spec/{global_suppressions_spec.rb → asm/global_suppressions_spec.rb} +25 -17
- data/spec/asm/groups_spec.rb +58 -0
- data/spec/{suppressions_spec.rb → asm/suppressions_spec.rb} +24 -22
- data/spec/categories/categories_spec.rb +39 -0
- data/spec/client_spec.rb +65 -50
- data/spec/ips/addresses_spec.rb +116 -0
- data/spec/ips/pools_spec.rb +43 -0
- data/spec/ips/warmup_spec.rb +52 -0
- data/spec/{enforced_tls_spec.rb → settings/enforced_tls_spec.rb} +12 -11
- data/spec/stats/advanced_spec.rb +243 -0
- data/spec/stats/category_spec.rb +112 -0
- data/spec/stats/global_spec.rb +64 -0
- data/spec/stats/parse_spec.rb +49 -0
- data/spec/stats/subuser_spec.rb +105 -0
- data/spec/templates/templates_spec.rb +66 -0
- data/spec/templates/versions_spec.rb +89 -0
- data/spec/version_factory_spec.rb +20 -15
- metadata +94 -42
- data/lib/sendgrid4r/rest/addresses.rb +0 -62
- data/lib/sendgrid4r/rest/enforced_tls.rb +0 -46
- data/lib/sendgrid4r/rest/global_suppressions.rb +0 -35
- data/lib/sendgrid4r/rest/groups.rb +0 -68
- data/lib/sendgrid4r/rest/pools.rb +0 -53
- data/lib/sendgrid4r/rest/suppressions.rb +0 -57
- data/lib/sendgrid4r/rest/templates.rb +0 -64
- data/lib/sendgrid4r/rest/versions.rb +0 -65
- data/lib/sendgrid4r/rest/warmup.rb +0 -53
- data/spec/addresses_spec.rb +0 -80
- data/spec/groups_spec.rb +0 -54
- data/spec/pools_spec.rb +0 -62
- data/spec/templates_spec.rb +0 -38
- data/spec/versions_spec.rb +0 -75
- data/spec/warmup_spec.rb +0 -52
@@ -0,0 +1,68 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$LOAD_PATH.unshift File.dirname(__FILE__)
|
3
|
+
|
4
|
+
require 'sendgrid4r/rest/request'
|
5
|
+
|
6
|
+
module SendGrid4r
|
7
|
+
module REST
|
8
|
+
module Asm
|
9
|
+
#
|
10
|
+
# SendGrid Web API v3 Advanced Suppression Manager - Suppressions
|
11
|
+
#
|
12
|
+
module Suppressions
|
13
|
+
include SendGrid4r::REST::Request
|
14
|
+
|
15
|
+
Suppression = Struct.new(:id, :name, :description, :suppressed)
|
16
|
+
|
17
|
+
def self.url(group_id, email_address = nil)
|
18
|
+
url =
|
19
|
+
"#{SendGrid4r::Client::BASE_URL}"\
|
20
|
+
"/asm/groups/#{group_id}/suppressions"
|
21
|
+
url = "#{url}/#{email_address}" unless email_address.nil?
|
22
|
+
url
|
23
|
+
end
|
24
|
+
|
25
|
+
def self.create_suppression(resp)
|
26
|
+
Suppression.new(
|
27
|
+
resp['id'], resp['name'], resp['description'], resp['suppressed'])
|
28
|
+
end
|
29
|
+
|
30
|
+
def post_suppressed_emails(group_id, recipient_emails)
|
31
|
+
resp = post(
|
32
|
+
@auth,
|
33
|
+
SendGrid4r::REST::Asm::Suppressions.url(group_id),
|
34
|
+
recipient_emails: recipient_emails
|
35
|
+
)
|
36
|
+
resp['recipient_emails']
|
37
|
+
end
|
38
|
+
|
39
|
+
def get_suppressions(email_address)
|
40
|
+
resp_a = get(
|
41
|
+
@auth,
|
42
|
+
"#{SendGrid4r::Client::BASE_URL}/asm/suppressions/#{email_address}")
|
43
|
+
suppressions = []
|
44
|
+
resp_a['suppressions'].each do |resp|
|
45
|
+
suppressions.push(
|
46
|
+
SendGrid4r::REST::Asm::Suppressions.create_suppression(resp)
|
47
|
+
)
|
48
|
+
end
|
49
|
+
suppressions
|
50
|
+
end
|
51
|
+
|
52
|
+
def get_suppressed_emails(group_id)
|
53
|
+
get(
|
54
|
+
@auth,
|
55
|
+
SendGrid4r::REST::Asm::Suppressions.url(group_id)
|
56
|
+
)
|
57
|
+
end
|
58
|
+
|
59
|
+
def delete_suppressed_email(group_id, email_address)
|
60
|
+
delete(
|
61
|
+
@auth,
|
62
|
+
SendGrid4r::REST::Asm::Suppressions.url(group_id, email_address)
|
63
|
+
)
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$LOAD_PATH.unshift File.dirname(__FILE__)
|
3
|
+
|
4
|
+
require 'sendgrid4r/rest/request'
|
5
|
+
|
6
|
+
module SendGrid4r
|
7
|
+
module REST
|
8
|
+
module Categories
|
9
|
+
#
|
10
|
+
# SendGrid Web API v3 Categories - Categories
|
11
|
+
#
|
12
|
+
module Categories
|
13
|
+
include SendGrid4r::REST::Request
|
14
|
+
|
15
|
+
Category = Struct.new(:category)
|
16
|
+
|
17
|
+
def self.create_category(resp)
|
18
|
+
Category.new(resp['category'])
|
19
|
+
end
|
20
|
+
|
21
|
+
def get_categories(category = nil, limit = nil, offset = nil)
|
22
|
+
params = {}
|
23
|
+
params['category'] = category unless category.nil?
|
24
|
+
params['limit'] = limit unless limit.nil?
|
25
|
+
params['offset'] = offset unless limit.nil?
|
26
|
+
resp_a = get(
|
27
|
+
@auth, "#{SendGrid4r::Client::BASE_URL}/categories", params)
|
28
|
+
categories = []
|
29
|
+
resp_a.each do |resp|
|
30
|
+
categories.push(
|
31
|
+
SendGrid4r::REST::Categories::Categories.create_category(resp))
|
32
|
+
end
|
33
|
+
categories
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,74 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$LOAD_PATH.unshift File.dirname(__FILE__)
|
3
|
+
|
4
|
+
require 'sendgrid4r/rest/request'
|
5
|
+
|
6
|
+
module SendGrid4r
|
7
|
+
module REST
|
8
|
+
#
|
9
|
+
# SendGrid Web API v3 Ip Management
|
10
|
+
#
|
11
|
+
module Ips
|
12
|
+
#
|
13
|
+
# SendGrid Web API v3 Ip Management - Pools
|
14
|
+
#
|
15
|
+
module Addresses
|
16
|
+
include SendGrid4r::REST::Request
|
17
|
+
|
18
|
+
Address = Struct.new(
|
19
|
+
:ip, :pools, :warmup, :start_date, :subusers, :rdns, :pool_name)
|
20
|
+
|
21
|
+
def self.create_address(resp)
|
22
|
+
Address.new(
|
23
|
+
resp['ip'],
|
24
|
+
resp['pools'],
|
25
|
+
resp['warmup'],
|
26
|
+
resp['start_date'],
|
27
|
+
resp['subusers'],
|
28
|
+
resp['rdns'],
|
29
|
+
resp['pool_name']
|
30
|
+
)
|
31
|
+
end
|
32
|
+
|
33
|
+
def post_ip_to_pool(pool_name, ip)
|
34
|
+
resp = post(
|
35
|
+
@auth,
|
36
|
+
"#{SendGrid4r::Client::BASE_URL}/ips/pools/#{pool_name}/ips",
|
37
|
+
ip: ip
|
38
|
+
)
|
39
|
+
SendGrid4r::REST::Ips::Addresses.create_address(resp)
|
40
|
+
end
|
41
|
+
|
42
|
+
def get_ips
|
43
|
+
resp_a = get(@auth, "#{SendGrid4r::Client::BASE_URL}/ips")
|
44
|
+
ips = []
|
45
|
+
resp_a.each do |resp|
|
46
|
+
ips.push(SendGrid4r::REST::Ips::Addresses.create_address(resp))
|
47
|
+
end
|
48
|
+
ips
|
49
|
+
end
|
50
|
+
|
51
|
+
def get_ips_assigned
|
52
|
+
resp_a = get(@auth, "#{SendGrid4r::Client::BASE_URL}/ips/assigned")
|
53
|
+
ips = []
|
54
|
+
resp_a.each do |resp|
|
55
|
+
ips.push(SendGrid4r::REST::Ips::Addresses.create_address(resp))
|
56
|
+
end
|
57
|
+
ips
|
58
|
+
end
|
59
|
+
|
60
|
+
def get_ip(ip)
|
61
|
+
resp = get(@auth, "#{SendGrid4r::Client::BASE_URL}/ips/#{ip}")
|
62
|
+
SendGrid4r::REST::Ips::Addresses.create_address(resp)
|
63
|
+
end
|
64
|
+
|
65
|
+
def delete_ip_from_pool(pool_name, ip)
|
66
|
+
delete(
|
67
|
+
@auth,
|
68
|
+
"#{SendGrid4r::Client::BASE_URL}/ips/pools/#{pool_name}/ips/#{ip}"
|
69
|
+
)
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
@@ -0,0 +1,63 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$LOAD_PATH.unshift File.dirname(__FILE__)
|
3
|
+
|
4
|
+
require 'sendgrid4r/rest/request'
|
5
|
+
|
6
|
+
module SendGrid4r
|
7
|
+
module REST
|
8
|
+
#
|
9
|
+
# SendGrid Web API v3 Ip Management
|
10
|
+
#
|
11
|
+
module Ips
|
12
|
+
#
|
13
|
+
# SendGrid Web API v3 Ip Management - Pools
|
14
|
+
#
|
15
|
+
module Pools
|
16
|
+
include SendGrid4r::REST::Request
|
17
|
+
|
18
|
+
Pool = Struct.new(:pool_name, :name, :ips)
|
19
|
+
|
20
|
+
def self.create_pool(resp)
|
21
|
+
ips = []
|
22
|
+
Array(resp['ips']).each { |ip| ips.push(ip) }
|
23
|
+
Pool.new(resp['pool_name'], resp['name'], ips)
|
24
|
+
end
|
25
|
+
|
26
|
+
def post_pool(name)
|
27
|
+
resp = post(
|
28
|
+
@auth, "#{SendGrid4r::Client::BASE_URL}/ips/pools", name: name
|
29
|
+
)
|
30
|
+
SendGrid4r::REST::Ips::Pools.create_pool(resp)
|
31
|
+
end
|
32
|
+
|
33
|
+
def get_pools
|
34
|
+
resp_a = get(@auth, "#{SendGrid4r::Client::BASE_URL}/ips/pools")
|
35
|
+
pools = []
|
36
|
+
resp_a.each do |resp|
|
37
|
+
pools.push(SendGrid4r::REST::Ips::Pools.create_pool(resp))
|
38
|
+
end
|
39
|
+
pools
|
40
|
+
end
|
41
|
+
|
42
|
+
def get_pool(name)
|
43
|
+
resp = get(
|
44
|
+
@auth, "#{SendGrid4r::Client::BASE_URL}/ips/pools/#{name}"
|
45
|
+
)
|
46
|
+
SendGrid4r::REST::Ips::Pools.create_pool(resp)
|
47
|
+
end
|
48
|
+
|
49
|
+
def put_pool(name, new_name)
|
50
|
+
resp = put(
|
51
|
+
@auth,
|
52
|
+
"#{SendGrid4r::Client::BASE_URL}/ips/pools/#{name}",
|
53
|
+
name: new_name)
|
54
|
+
SendGrid4r::REST::Ips::Pools.create_pool(resp)
|
55
|
+
end
|
56
|
+
|
57
|
+
def delete_pool(name)
|
58
|
+
delete(@auth, "#{SendGrid4r::Client::BASE_URL}/ips/pools/#{name}")
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
@@ -0,0 +1,55 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$LOAD_PATH.unshift File.dirname(__FILE__)
|
3
|
+
|
4
|
+
require 'sendgrid4r/rest/request'
|
5
|
+
|
6
|
+
module SendGrid4r
|
7
|
+
module REST
|
8
|
+
module Ips
|
9
|
+
#
|
10
|
+
# SendGrid Web API v3 Ip Management - Warmup
|
11
|
+
#
|
12
|
+
module Warmup
|
13
|
+
include SendGrid4r::REST::Request
|
14
|
+
WarmupIp = Struct.new(:ip, :start_date)
|
15
|
+
|
16
|
+
def self.create_warmup_ip(resp)
|
17
|
+
WarmupIp.new(resp['ip'], resp['start_date'])
|
18
|
+
end
|
19
|
+
|
20
|
+
def get_warmup_ips
|
21
|
+
ips = []
|
22
|
+
resp_a = get(@auth, "#{SendGrid4r::Client::BASE_URL}/ips/warmup")
|
23
|
+
resp_a.each do |resp|
|
24
|
+
ips.push(SendGrid4r::REST::Ips::Warmup.create_warmup_ip(resp))
|
25
|
+
end
|
26
|
+
ips
|
27
|
+
end
|
28
|
+
|
29
|
+
def get_warmup_ip(ip_address)
|
30
|
+
resp = get(
|
31
|
+
@auth,
|
32
|
+
"#{SendGrid4r::Client::BASE_URL}/ips/warmup/#{ip_address}"
|
33
|
+
)
|
34
|
+
SendGrid4r::REST::Ips::Warmup.create_warmup_ip(resp)
|
35
|
+
end
|
36
|
+
|
37
|
+
def post_warmup_ip(ip_address)
|
38
|
+
resp = post(
|
39
|
+
@auth,
|
40
|
+
"#{SendGrid4r::Client::BASE_URL}/ips/warmup",
|
41
|
+
ip: ip_address
|
42
|
+
)
|
43
|
+
SendGrid4r::REST::Ips::Warmup.create_warmup_ip(resp)
|
44
|
+
end
|
45
|
+
|
46
|
+
def delete_warmup_ip(ip_address)
|
47
|
+
delete(
|
48
|
+
@auth,
|
49
|
+
"#{SendGrid4r::Client::BASE_URL}/ips/warmup/#{ip_address}"
|
50
|
+
)
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
@@ -1,48 +1,63 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
|
-
|
2
|
+
$LOAD_PATH.unshift File.dirname(__FILE__)
|
3
3
|
|
4
|
-
require
|
5
|
-
require
|
6
|
-
require
|
4
|
+
require 'rest-client'
|
5
|
+
require 'uri'
|
6
|
+
require 'json'
|
7
7
|
|
8
8
|
module SendGrid4r
|
9
9
|
module REST
|
10
|
+
#
|
11
|
+
# SendGrid Web API v3 Request
|
12
|
+
#
|
10
13
|
module Request
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
14
|
+
def get(auth, endpoint, params = nil)
|
15
|
+
resource = RestClient::Resource.new(
|
16
|
+
endpoint, auth.username, auth.password)
|
17
|
+
p = { params: params } unless params.nil?
|
18
|
+
if p.nil?
|
19
|
+
body = resource.get
|
20
|
+
else
|
21
|
+
body = resource.get(p)
|
22
|
+
# TODO: handle ratelimit headers
|
23
|
+
# do |response, request, result, &block|
|
24
|
+
# # puts response.headers
|
25
|
+
# break response.body
|
26
|
+
# end
|
27
|
+
end
|
15
28
|
JSON.parse(body)
|
16
29
|
end
|
17
30
|
|
18
31
|
def post(auth, endpoint, params = nil)
|
19
|
-
resource = RestClient::Resource.new(
|
20
|
-
|
21
|
-
|
32
|
+
resource = RestClient::Resource.new(
|
33
|
+
endpoint, auth.username, auth.password)
|
34
|
+
if params.nil?
|
35
|
+
body = resource.post(content_type: :json).body
|
22
36
|
else
|
23
|
-
body = resource.post(params.to_json, :
|
37
|
+
body = resource.post(params.to_json, content_type: :json).body
|
24
38
|
end
|
25
39
|
JSON.parse(body)
|
26
40
|
end
|
27
41
|
|
28
42
|
def patch(auth, endpoint, params)
|
29
|
-
resource = RestClient::Resource.new(
|
30
|
-
|
43
|
+
resource = RestClient::Resource.new(
|
44
|
+
endpoint, auth.username, auth.password)
|
45
|
+
body = resource.patch(params.to_json, content_type: :json).body
|
31
46
|
JSON.parse(body)
|
32
47
|
end
|
33
48
|
|
34
49
|
def put(auth, endpoint, params)
|
35
|
-
resource = RestClient::Resource.new(
|
36
|
-
|
50
|
+
resource = RestClient::Resource.new(
|
51
|
+
endpoint, auth.username, auth.password)
|
52
|
+
body = resource.put(params.to_json, content_type: :json).body
|
37
53
|
JSON.parse(body)
|
38
54
|
end
|
39
55
|
|
40
56
|
def delete(auth, endpoint)
|
41
|
-
resource = RestClient::Resource.new(
|
57
|
+
resource = RestClient::Resource.new(
|
58
|
+
endpoint, auth.username, auth.password)
|
42
59
|
resource.delete
|
43
60
|
end
|
44
|
-
|
45
61
|
end
|
46
|
-
|
47
62
|
end
|
48
63
|
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$LOAD_PATH.unshift File.dirname(__FILE__)
|
3
|
+
|
4
|
+
require 'sendgrid4r/rest/request'
|
5
|
+
|
6
|
+
module SendGrid4r
|
7
|
+
module REST
|
8
|
+
module Settings
|
9
|
+
#
|
10
|
+
# SendGrid Web API v3 Settings - EnforcedTls
|
11
|
+
#
|
12
|
+
module EnforcedTls
|
13
|
+
include SendGrid4r::REST::Request
|
14
|
+
EnforcedTls = Struct.new(:require_tls, :require_valid_cert)
|
15
|
+
|
16
|
+
def self.create_enforced_tls(resp)
|
17
|
+
EnforcedTls.new(resp['require_tls'], resp['require_valid_cert'])
|
18
|
+
end
|
19
|
+
|
20
|
+
def get_enforced_tls
|
21
|
+
resp = get(
|
22
|
+
@auth,
|
23
|
+
"#{SendGrid4r::Client::BASE_URL}/user/settings/enforced_tls"
|
24
|
+
)
|
25
|
+
SendGrid4r::REST::Settings::EnforcedTls.create_enforced_tls(resp)
|
26
|
+
end
|
27
|
+
|
28
|
+
def patch_enforced_tls(params)
|
29
|
+
resp = patch(
|
30
|
+
@auth,
|
31
|
+
"#{SendGrid4r::Client::BASE_URL}/user/settings/enforced_tls",
|
32
|
+
params.to_h
|
33
|
+
)
|
34
|
+
SendGrid4r::REST::Settings::EnforcedTls.create_enforced_tls(resp)
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,91 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$LOAD_PATH.unshift File.dirname(__FILE__)
|
3
|
+
|
4
|
+
require 'sendgrid4r/rest/request'
|
5
|
+
|
6
|
+
module SendGrid4r
|
7
|
+
module REST
|
8
|
+
module Stats
|
9
|
+
#
|
10
|
+
# SendGrid Web API v3 Stats - Advanced
|
11
|
+
#
|
12
|
+
module Advanced
|
13
|
+
def get_geo_stats(
|
14
|
+
start_date:, end_date: nil, aggregated_by: nil, country: nil)
|
15
|
+
params = {
|
16
|
+
start_date: start_date,
|
17
|
+
end_date: end_date,
|
18
|
+
aggregated_by: aggregated_by,
|
19
|
+
country: country
|
20
|
+
}
|
21
|
+
resp_a = get(
|
22
|
+
@auth, "#{SendGrid4r::Client::BASE_URL}/geo/stats", params)
|
23
|
+
SendGrid4r::REST::Stats.create_top_stats(resp_a)
|
24
|
+
end
|
25
|
+
|
26
|
+
def get_devices_stats(start_date:, end_date: nil, aggregated_by: nil)
|
27
|
+
params = {
|
28
|
+
start_date: start_date,
|
29
|
+
end_date: end_date,
|
30
|
+
aggregated_by: aggregated_by
|
31
|
+
}
|
32
|
+
resp_a = get(
|
33
|
+
@auth, "#{SendGrid4r::Client::BASE_URL}/devices/stats", params)
|
34
|
+
SendGrid4r::REST::Stats.create_top_stats(resp_a)
|
35
|
+
end
|
36
|
+
|
37
|
+
def get_clients_stats(start_date:, end_date: nil, aggregated_by: nil)
|
38
|
+
params = {
|
39
|
+
start_date: start_date,
|
40
|
+
end_date: end_date,
|
41
|
+
aggregated_by: aggregated_by
|
42
|
+
}
|
43
|
+
resp_a = get(
|
44
|
+
@auth, "#{SendGrid4r::Client::BASE_URL}/clients/stats", params)
|
45
|
+
SendGrid4r::REST::Stats.create_top_stats(resp_a)
|
46
|
+
end
|
47
|
+
|
48
|
+
def get_clients_type_stats(
|
49
|
+
start_date:, end_date: nil, aggregated_by: nil, client_type:)
|
50
|
+
params = {
|
51
|
+
start_date: start_date,
|
52
|
+
end_date: end_date,
|
53
|
+
aggregated_by: aggregated_by,
|
54
|
+
client_type: client_type
|
55
|
+
}
|
56
|
+
resp_a = get(
|
57
|
+
@auth,
|
58
|
+
"#{SendGrid4r::Client::BASE_URL}/clients/#{client_type}/stats",
|
59
|
+
params)
|
60
|
+
SendGrid4r::REST::Stats.create_top_stats(resp_a)
|
61
|
+
end
|
62
|
+
|
63
|
+
def get_esp_stats(
|
64
|
+
start_date:, end_date: nil, aggregated_by: nil, esps: nil)
|
65
|
+
params = {
|
66
|
+
start_date: start_date,
|
67
|
+
end_date: end_date,
|
68
|
+
aggregated_by: aggregated_by,
|
69
|
+
esps: esps
|
70
|
+
}
|
71
|
+
resp_a = get(
|
72
|
+
@auth, "#{SendGrid4r::Client::BASE_URL}/esp/stats", params)
|
73
|
+
SendGrid4r::REST::Stats.create_top_stats(resp_a)
|
74
|
+
end
|
75
|
+
|
76
|
+
def get_browsers_stats(
|
77
|
+
start_date:, end_date: nil, aggregated_by: nil, browsers: nil)
|
78
|
+
params = {
|
79
|
+
start_date: start_date,
|
80
|
+
end_date: end_date,
|
81
|
+
aggregated_by: aggregated_by,
|
82
|
+
browsers: browsers
|
83
|
+
}
|
84
|
+
resp_a = get(
|
85
|
+
@auth, "#{SendGrid4r::Client::BASE_URL}/browsers/stats", params)
|
86
|
+
SendGrid4r::REST::Stats.create_top_stats(resp_a)
|
87
|
+
end
|
88
|
+
end
|
89
|
+
end
|
90
|
+
end
|
91
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$LOAD_PATH.unshift File.dirname(__FILE__)
|
3
|
+
|
4
|
+
require 'sendgrid4r/rest/request'
|
5
|
+
|
6
|
+
module SendGrid4r
|
7
|
+
module REST
|
8
|
+
module Stats
|
9
|
+
#
|
10
|
+
# SendGrid Web API v3 Stats - Category
|
11
|
+
#
|
12
|
+
module Category
|
13
|
+
def get_categories_stats(
|
14
|
+
start_date:, end_date: nil, aggregated_by: nil, categories:)
|
15
|
+
params = {
|
16
|
+
start_date: start_date,
|
17
|
+
end_date: end_date,
|
18
|
+
aggregated_by: aggregated_by,
|
19
|
+
categories: categories
|
20
|
+
}
|
21
|
+
# TODO: categories does not support array yet
|
22
|
+
resp_a = get(
|
23
|
+
@auth, "#{SendGrid4r::Client::BASE_URL}/categories/stats", params)
|
24
|
+
SendGrid4r::REST::Stats.create_top_stats(resp_a)
|
25
|
+
end
|
26
|
+
|
27
|
+
def get_categories_stats_sums(
|
28
|
+
start_date:, end_date: nil, sort_by_metric: nil,
|
29
|
+
sort_by_direction: nil, limit: nil, offset: nil)
|
30
|
+
params = {
|
31
|
+
start_date: start_date,
|
32
|
+
end_date: end_date,
|
33
|
+
sort_by_metric: sort_by_metric,
|
34
|
+
sort_by_direction: sort_by_direction,
|
35
|
+
limit: limit,
|
36
|
+
offset: offset
|
37
|
+
}
|
38
|
+
resp = get(
|
39
|
+
@auth,
|
40
|
+
"#{SendGrid4r::Client::BASE_URL}/categories/stats/sums",
|
41
|
+
params)
|
42
|
+
SendGrid4r::REST::Stats.create_top_stat(resp)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$LOAD_PATH.unshift File.dirname(__FILE__)
|
3
|
+
|
4
|
+
require 'sendgrid4r/rest/request'
|
5
|
+
|
6
|
+
module SendGrid4r
|
7
|
+
module REST
|
8
|
+
module Stats
|
9
|
+
#
|
10
|
+
# SendGrid Web API v3 Stats - Global
|
11
|
+
#
|
12
|
+
module Global
|
13
|
+
def get_global_stats(start_date:, end_date: nil, aggregated_by: nil)
|
14
|
+
params = {
|
15
|
+
start_date: start_date,
|
16
|
+
end_date: end_date,
|
17
|
+
aggregated_by: aggregated_by
|
18
|
+
}
|
19
|
+
resp_a = get(
|
20
|
+
@auth, "#{SendGrid4r::Client::BASE_URL}/stats", params)
|
21
|
+
SendGrid4r::REST::Stats.create_top_stats(resp_a)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$LOAD_PATH.unshift File.dirname(__FILE__)
|
3
|
+
|
4
|
+
require 'sendgrid4r/rest/request'
|
5
|
+
|
6
|
+
module SendGrid4r
|
7
|
+
module REST
|
8
|
+
module Stats
|
9
|
+
#
|
10
|
+
# SendGrid Web API v3 Stats - Parse
|
11
|
+
#
|
12
|
+
module Parse
|
13
|
+
def get_parse_stats(start_date:, end_date: nil, aggregated_by: nil)
|
14
|
+
params = {
|
15
|
+
start_date: start_date,
|
16
|
+
end_date: end_date,
|
17
|
+
aggregated_by: aggregated_by
|
18
|
+
}
|
19
|
+
resp_a = get(
|
20
|
+
@auth, "#{SendGrid4r::Client::BASE_URL}/parse/stats", params)
|
21
|
+
SendGrid4r::REST::Stats.create_top_stats(resp_a)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|