dyn-rb 1.0.2
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 +7 -0
- data/LICENSE +202 -0
- data/lib/dyn-rb.rb +19 -0
- data/lib/dyn/exceptions.rb +36 -0
- data/lib/dyn/http/curb.rb +79 -0
- data/lib/dyn/http/http_client.rb +90 -0
- data/lib/dyn/http/net_http.rb +50 -0
- data/lib/dyn/http/patron.rb +52 -0
- data/lib/dyn/messaging.rb +156 -0
- data/lib/dyn/messaging/accounts.rb +53 -0
- data/lib/dyn/messaging/bounces.rb +41 -0
- data/lib/dyn/messaging/clicks.rb +49 -0
- data/lib/dyn/messaging/complaints.rb +41 -0
- data/lib/dyn/messaging/delivery.rb +41 -0
- data/lib/dyn/messaging/issues.rb +41 -0
- data/lib/dyn/messaging/opens.rb +49 -0
- data/lib/dyn/messaging/recipients.rb +41 -0
- data/lib/dyn/messaging/send_mail.rb +37 -0
- data/lib/dyn/messaging/senders.rb +61 -0
- data/lib/dyn/messaging/sent_mail.rb +41 -0
- data/lib/dyn/messaging/suppressions.rb +49 -0
- data/lib/dyn/traffic.rb +238 -0
- data/lib/dyn/traffic/base.rb +57 -0
- data/lib/dyn/traffic/gslb.rb +169 -0
- data/lib/dyn/traffic/http_redirect.rb +83 -0
- data/lib/dyn/traffic/qps_report.rb +30 -0
- data/lib/dyn/traffic/resource.rb +150 -0
- data/lib/dyn/traffic/secondary_zone.rb +87 -0
- data/lib/dyn/traffic/session.rb +37 -0
- data/lib/dyn/traffic/zone.rb +51 -0
- data/lib/dyn/version.rb +3 -0
- metadata +76 -0
@@ -0,0 +1,52 @@
|
|
1
|
+
#
|
2
|
+
# Author:: Sunny Gleason (<sunny@thesunnycloud.com>)
|
3
|
+
# Copyright:: Copyright (c) 2013 Dyn, Inc.
|
4
|
+
# License:: Apache License, Version 2.0
|
5
|
+
#
|
6
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
7
|
+
# you may not use this file except in compliance with the License.
|
8
|
+
# You may obtain a copy of the License at
|
9
|
+
#
|
10
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
11
|
+
#
|
12
|
+
# Unless required by applicable law or agreed to in writing, software
|
13
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
14
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
15
|
+
# See the License for the specific language governing permissions and
|
16
|
+
# limitations under the License.
|
17
|
+
#
|
18
|
+
require 'patron'
|
19
|
+
|
20
|
+
module Dyn
|
21
|
+
module HttpClient
|
22
|
+
class PatronClient < Base
|
23
|
+
private
|
24
|
+
|
25
|
+
def fixup_request(original)
|
26
|
+
headers = original[:headers]
|
27
|
+
|
28
|
+
if !original[:body].nil? && headers["Content-Type"].nil?
|
29
|
+
headers = headers.merge({"Content-Type" => "application/x-www-form-urlencoded"})
|
30
|
+
end
|
31
|
+
|
32
|
+
original.merge({:headers => headers})
|
33
|
+
end
|
34
|
+
|
35
|
+
def perform_request(method, uri, body, headers)
|
36
|
+
options = {}
|
37
|
+
options[:data] = body unless body.nil?
|
38
|
+
options[:max_redirects] = 0
|
39
|
+
headers = headers ? headers : {}
|
40
|
+
|
41
|
+
response = Patron::Session.new.request(method.to_s.downcase.to_sym, @base_url + uri, headers, options)
|
42
|
+
|
43
|
+
Response.new(response.status, response.body, response.headers)
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
unless defined?(DefaultClient)
|
48
|
+
class DefaultClient < Dynect::HttpClient::PatronClient
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
@@ -0,0 +1,156 @@
|
|
1
|
+
#
|
2
|
+
# Author:: Sunny Gleason (<sunny@thesunnycloud.com>)
|
3
|
+
# Copyright:: Copyright (c) 2013 Dyn, Inc.
|
4
|
+
# License:: Apache License, Version 2.0
|
5
|
+
#
|
6
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
7
|
+
# you may not use this file except in compliance with the License.
|
8
|
+
# You may obtain a copy of the License at
|
9
|
+
#
|
10
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
11
|
+
#
|
12
|
+
# Unless required by applicable law or agreed to in writing, software
|
13
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
14
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
15
|
+
# See the License for the specific language governing permissions and
|
16
|
+
# limitations under the License.
|
17
|
+
#
|
18
|
+
|
19
|
+
module Dyn
|
20
|
+
module Messaging
|
21
|
+
class Client
|
22
|
+
require 'uri'
|
23
|
+
require 'json'
|
24
|
+
require 'dyn/exceptions'
|
25
|
+
require 'dyn/messaging/senders'
|
26
|
+
require 'dyn/messaging/accounts'
|
27
|
+
require 'dyn/messaging/recipients'
|
28
|
+
require 'dyn/messaging/suppressions'
|
29
|
+
require 'dyn/messaging/delivery'
|
30
|
+
require 'dyn/messaging/sent_mail'
|
31
|
+
require 'dyn/messaging/bounces'
|
32
|
+
require 'dyn/messaging/complaints'
|
33
|
+
require 'dyn/messaging/issues'
|
34
|
+
require 'dyn/messaging/opens'
|
35
|
+
require 'dyn/messaging/clicks'
|
36
|
+
require 'dyn/messaging/send_mail'
|
37
|
+
require 'dyn/http/http_client'
|
38
|
+
|
39
|
+
unless defined?(Dyn::HttpClient::DefaultClient)
|
40
|
+
require 'dyn/http/net_http'
|
41
|
+
end
|
42
|
+
|
43
|
+
attr_accessor :apikey, :rest
|
44
|
+
|
45
|
+
# Creates a new base object for interacting with Dyn's REST API
|
46
|
+
#
|
47
|
+
# @param [String] Your dyn api key
|
48
|
+
# @param [Boolean] Verbosity
|
49
|
+
def initialize(apikey, verbose=false)
|
50
|
+
@apikey = apikey
|
51
|
+
@rest = Dyn::HttpClient::DefaultClient.new("emailapi.dynect.net", "443", "https")
|
52
|
+
@rest.default_headers = {
|
53
|
+
'User-Agent' => 'dyn-rb 1.0.2',
|
54
|
+
'Content-Type' => 'application/x-www-form-urlencoded'
|
55
|
+
}
|
56
|
+
@verbose = verbose
|
57
|
+
end
|
58
|
+
|
59
|
+
##
|
60
|
+
# Senders API
|
61
|
+
##
|
62
|
+
def senders
|
63
|
+
Dyn::Messaging::Senders.new(self)
|
64
|
+
end
|
65
|
+
|
66
|
+
def accounts
|
67
|
+
Dyn::Messaging::Accounts.new(self)
|
68
|
+
end
|
69
|
+
|
70
|
+
def recipients
|
71
|
+
Dyn::Messaging::Recipients.new(self)
|
72
|
+
end
|
73
|
+
|
74
|
+
def suppressions
|
75
|
+
Dyn::Messaging::Suppressions.new(self)
|
76
|
+
end
|
77
|
+
|
78
|
+
def delivery
|
79
|
+
Dyn::Messaging::Delivery.new(self)
|
80
|
+
end
|
81
|
+
|
82
|
+
def sent_mail
|
83
|
+
Dyn::Messaging::SentMail.new(self)
|
84
|
+
end
|
85
|
+
|
86
|
+
def bounces
|
87
|
+
Dyn::Messaging::Bounces.new(self)
|
88
|
+
end
|
89
|
+
|
90
|
+
def complaints
|
91
|
+
Dyn::Messaging::Complaints.new(self)
|
92
|
+
end
|
93
|
+
|
94
|
+
def issues
|
95
|
+
Dyn::Messaging::Issues.new(self)
|
96
|
+
end
|
97
|
+
|
98
|
+
def opens
|
99
|
+
Dyn::Messaging::Opens.new(self)
|
100
|
+
end
|
101
|
+
|
102
|
+
def clicks
|
103
|
+
Dyn::Messaging::Clicks.new(self)
|
104
|
+
end
|
105
|
+
|
106
|
+
def send_mail
|
107
|
+
Dyn::Messaging::SendMail.new(self)
|
108
|
+
end
|
109
|
+
|
110
|
+
# Raw GET request, formatted for Dyn. See list of endpoints at:
|
111
|
+
#
|
112
|
+
# https://help.dynect.net/api/
|
113
|
+
#
|
114
|
+
# @param [String] The partial path to GET - for example, 'senders' or 'accounts'.
|
115
|
+
# @param [Hash] Query Parameters
|
116
|
+
# @param [Hash] Additional HTTP headers
|
117
|
+
def get(path_part, query_params = {}, additional_headers = {}, &block)
|
118
|
+
api_request { @rest.get("/rest/json/#{path_part}?" + URI.encode_www_form(query_params.merge({apikey:@apikey})), nil, additional_headers, &block) }
|
119
|
+
end
|
120
|
+
|
121
|
+
# Raw POST request, formatted for Dyn. See list of endpoints at:
|
122
|
+
#
|
123
|
+
# https://help.dynect.net/api/
|
124
|
+
#
|
125
|
+
# Read the API documentation, and submit the proper data structure from here.
|
126
|
+
#
|
127
|
+
# @param [String] The partial path to POST - for example, 'senders' or 'accounts'.
|
128
|
+
# @param [Hash] The data structure to submit as the body, is automatically turned to encoded Form POST
|
129
|
+
# @param [Hash] Additional HTTP headers
|
130
|
+
def post(path_part, form_params = {}, additional_headers = {}, &block)
|
131
|
+
api_request { @rest.post("/rest/json/#{path_part}", URI.encode_www_form(form_params.merge({apikey:@apikey})), additional_headers, &block) }
|
132
|
+
end
|
133
|
+
|
134
|
+
# Handles making Dynect API requests and formatting the responses properly.
|
135
|
+
def api_request(&block)
|
136
|
+
response_body = begin
|
137
|
+
response = block.call
|
138
|
+
response.body
|
139
|
+
rescue Exception => e
|
140
|
+
if @verbose
|
141
|
+
puts "I have #{e.inspect} with #{e.http_code}"
|
142
|
+
end
|
143
|
+
e.response
|
144
|
+
end
|
145
|
+
|
146
|
+
response = JSON.parse(response_body || '{}')
|
147
|
+
|
148
|
+
if (response["response"] && response["response"]["status"] == 200)
|
149
|
+
response["response"]["data"]
|
150
|
+
else
|
151
|
+
response
|
152
|
+
end
|
153
|
+
end
|
154
|
+
end
|
155
|
+
end
|
156
|
+
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
#
|
2
|
+
# Author:: Sunny Gleason (<sunny@thesunnycloud.com>)
|
3
|
+
# Copyright:: Copyright (c) 2013 Dyn, Inc.
|
4
|
+
# License:: Apache License, Version 2.0
|
5
|
+
#
|
6
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
7
|
+
# you may not use this file except in compliance with the License.
|
8
|
+
# You may obtain a copy of the License at
|
9
|
+
#
|
10
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
11
|
+
#
|
12
|
+
# Unless required by applicable law or agreed to in writing, software
|
13
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
14
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
15
|
+
# See the License for the specific language governing permissions and
|
16
|
+
# limitations under the License.
|
17
|
+
#
|
18
|
+
|
19
|
+
module Dyn
|
20
|
+
module Messaging
|
21
|
+
class Accounts
|
22
|
+
def initialize(dyn)
|
23
|
+
@dyn = dyn
|
24
|
+
end
|
25
|
+
|
26
|
+
def list(startindex="0")
|
27
|
+
@dyn.get("#{resource_path}", {startindex:startindex})
|
28
|
+
end
|
29
|
+
|
30
|
+
def create(username, password, companyname, phone, address, city, state, zipcode, country, timezone, bounceurl, spamurl, unsubscribeurl, tracelinks, trackunsubscribes, generatenewapikey)
|
31
|
+
@dyn.post("#{resource_path}", {username:username, password:password, companyname:companyname, phone:phone, address:address, city:city, state:state, zipcode:zipcode, country:country, timezone:timezone, bounceurl:bounceurl, spamurl:spamurl, unsubscribeurl:unsubscribeurl, tracelinks:tracelinks, trackunsubscribes:trackunsubscribes, generatenewapikey:generatenewapikey})
|
32
|
+
end
|
33
|
+
|
34
|
+
def destroy(username)
|
35
|
+
@dyn.post("#{resource_path}/delete", {username:username})
|
36
|
+
end
|
37
|
+
|
38
|
+
def list_xheaders
|
39
|
+
@dyn.get("#{resource_path}/xheaders")
|
40
|
+
end
|
41
|
+
|
42
|
+
def update_xheaders(xh1, xh2, xh3, xh4)
|
43
|
+
@dyn.post("#{resource_path}/xheaders", {xheader1:xh1,xheader2:xh2,xheader3:xh3,xheader4:xh4})
|
44
|
+
end
|
45
|
+
|
46
|
+
private
|
47
|
+
|
48
|
+
def resource_path
|
49
|
+
"accounts"
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
#
|
2
|
+
# Author:: Sunny Gleason (<sunny@thesunnycloud.com>)
|
3
|
+
# Copyright:: Copyright (c) 2013 Dyn, Inc.
|
4
|
+
# License:: Apache License, Version 2.0
|
5
|
+
#
|
6
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
7
|
+
# you may not use this file except in compliance with the License.
|
8
|
+
# You may obtain a copy of the License at
|
9
|
+
#
|
10
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
11
|
+
#
|
12
|
+
# Unless required by applicable law or agreed to in writing, software
|
13
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
14
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
15
|
+
# See the License for the specific language governing permissions and
|
16
|
+
# limitations under the License.
|
17
|
+
#
|
18
|
+
|
19
|
+
module Dyn
|
20
|
+
module Messaging
|
21
|
+
class Bounces
|
22
|
+
def initialize(dyn)
|
23
|
+
@dyn = dyn
|
24
|
+
end
|
25
|
+
|
26
|
+
def count(starttime, endtime, sender, xheadername)
|
27
|
+
@dyn.get("#{resource_path}/count", {starttime:starttime, endtime:endtime, sender:sender, xheadername:xheadername})
|
28
|
+
end
|
29
|
+
|
30
|
+
def list(starttime, endtime, startindex=0, sender, email, bouncetype, noheaders, xheadername)
|
31
|
+
@dyn.get("#{resource_path}", {starttime:starttime, endtime:endtime, startindex:startindex, sender:sender, emailaddress:email, bouncetype:bouncetype, noheaders:noheaders, xheadername:xheadername})
|
32
|
+
end
|
33
|
+
|
34
|
+
private
|
35
|
+
|
36
|
+
def resource_path
|
37
|
+
"reports/bounces"
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
#
|
2
|
+
# Author:: Sunny Gleason (<sunny@thesunnycloud.com>)
|
3
|
+
# Copyright:: Copyright (c) 2013 Dyn, Inc.
|
4
|
+
# License:: Apache License, Version 2.0
|
5
|
+
#
|
6
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
7
|
+
# you may not use this file except in compliance with the License.
|
8
|
+
# You may obtain a copy of the License at
|
9
|
+
#
|
10
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
11
|
+
#
|
12
|
+
# Unless required by applicable law or agreed to in writing, software
|
13
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
14
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
15
|
+
# See the License for the specific language governing permissions and
|
16
|
+
# limitations under the License.
|
17
|
+
#
|
18
|
+
|
19
|
+
module Dyn
|
20
|
+
module Messaging
|
21
|
+
class Clicks
|
22
|
+
def initialize(dyn)
|
23
|
+
@dyn = dyn
|
24
|
+
end
|
25
|
+
|
26
|
+
def count(starttime, endtime, xheadername)
|
27
|
+
@dyn.get("#{resource_path}/count", {starttime:starttime, endtime:endtime, xheadername:xheadername})
|
28
|
+
end
|
29
|
+
|
30
|
+
def list(starttime, endtime, startindex=0, xheadername)
|
31
|
+
@dyn.get("#{resource_path}", {starttime:starttime, endtime:endtime, startindex:startindex, xheadername:xheadername})
|
32
|
+
end
|
33
|
+
|
34
|
+
def unique_count(starttime, endtime, xheadername)
|
35
|
+
@dyn.get("#{resource_path}/count/unique", {starttime:starttime, endtime:endtime, xheadername:xheadername})
|
36
|
+
end
|
37
|
+
|
38
|
+
def unique(starttime, endtime, startindex=0, xheadername)
|
39
|
+
@dyn.get("#{resource_path}/unique", {starttime:starttime, endtime:endtime, startindex:startindex, xheadername:xheadername})
|
40
|
+
end
|
41
|
+
|
42
|
+
private
|
43
|
+
|
44
|
+
def resource_path
|
45
|
+
"reports/clicks"
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
#
|
2
|
+
# Author:: Sunny Gleason (<sunny@thesunnycloud.com>)
|
3
|
+
# Copyright:: Copyright (c) 2013 Dyn, Inc.
|
4
|
+
# License:: Apache License, Version 2.0
|
5
|
+
#
|
6
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
7
|
+
# you may not use this file except in compliance with the License.
|
8
|
+
# You may obtain a copy of the License at
|
9
|
+
#
|
10
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
11
|
+
#
|
12
|
+
# Unless required by applicable law or agreed to in writing, software
|
13
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
14
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
15
|
+
# See the License for the specific language governing permissions and
|
16
|
+
# limitations under the License.
|
17
|
+
#
|
18
|
+
|
19
|
+
module Dyn
|
20
|
+
module Messaging
|
21
|
+
class Complaints
|
22
|
+
def initialize(dyn)
|
23
|
+
@dyn = dyn
|
24
|
+
end
|
25
|
+
|
26
|
+
def count(starttime, endtime, sender, xheadername)
|
27
|
+
@dyn.get("#{resource_path}/count", {starttime:starttime, endtime:endtime, sender:sender, xheadername:xheadername})
|
28
|
+
end
|
29
|
+
|
30
|
+
def list(starttime, endtime, startindex=0, sender, xheadername)
|
31
|
+
@dyn.get("#{resource_path}", {starttime:starttime, endtime:endtime, startindex:startindex, sender:sender, xheadername:xheadername})
|
32
|
+
end
|
33
|
+
|
34
|
+
private
|
35
|
+
|
36
|
+
def resource_path
|
37
|
+
"reports/complaints"
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
#
|
2
|
+
# Author:: Sunny Gleason (<sunny@thesunnycloud.com>)
|
3
|
+
# Copyright:: Copyright (c) 2013 Dyn, Inc.
|
4
|
+
# License:: Apache License, Version 2.0
|
5
|
+
#
|
6
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
7
|
+
# you may not use this file except in compliance with the License.
|
8
|
+
# You may obtain a copy of the License at
|
9
|
+
#
|
10
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
11
|
+
#
|
12
|
+
# Unless required by applicable law or agreed to in writing, software
|
13
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
14
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
15
|
+
# See the License for the specific language governing permissions and
|
16
|
+
# limitations under the License.
|
17
|
+
#
|
18
|
+
|
19
|
+
module Dyn
|
20
|
+
module Messaging
|
21
|
+
class Delivery
|
22
|
+
def initialize(dyn)
|
23
|
+
@dyn = dyn
|
24
|
+
end
|
25
|
+
|
26
|
+
def count(starttime, endtime, sender, xheadername)
|
27
|
+
@dyn.get("#{resource_path}/count", {starttime:starttime, endtime:endtime, sender:sender, xheadername:xheadername})
|
28
|
+
end
|
29
|
+
|
30
|
+
def list(starttime, endtime, startindex=0, sender, xheadername)
|
31
|
+
@dyn.get("#{resource_path}", {starttime:starttime, endtime:endtime, startindex:startindex, sender:sender, xheadername:xheadername})
|
32
|
+
end
|
33
|
+
|
34
|
+
private
|
35
|
+
|
36
|
+
def resource_path
|
37
|
+
"reports/delivered"
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
#
|
2
|
+
# Author:: Sunny Gleason (<sunny@thesunnycloud.com>)
|
3
|
+
# Copyright:: Copyright (c) 2013 Dyn, Inc.
|
4
|
+
# License:: Apache License, Version 2.0
|
5
|
+
#
|
6
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
7
|
+
# you may not use this file except in compliance with the License.
|
8
|
+
# You may obtain a copy of the License at
|
9
|
+
#
|
10
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
11
|
+
#
|
12
|
+
# Unless required by applicable law or agreed to in writing, software
|
13
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
14
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
15
|
+
# See the License for the specific language governing permissions and
|
16
|
+
# limitations under the License.
|
17
|
+
#
|
18
|
+
|
19
|
+
module Dyn
|
20
|
+
module Messaging
|
21
|
+
class Issues
|
22
|
+
def initialize(dyn)
|
23
|
+
@dyn = dyn
|
24
|
+
end
|
25
|
+
|
26
|
+
def count(starttime, endtime)
|
27
|
+
@dyn.get("#{resource_path}/count", {starttime:starttime, endtime:endtime})
|
28
|
+
end
|
29
|
+
|
30
|
+
def list(starttime, endtime, startindex=0)
|
31
|
+
@dyn.get("#{resource_path}", {starttime:starttime, endtime:endtime, startindex:startindex})
|
32
|
+
end
|
33
|
+
|
34
|
+
private
|
35
|
+
|
36
|
+
def resource_path
|
37
|
+
"reports/issues"
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|