ns-1 0.3.4 → 0.4.1
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/CHANGELOG.md +9 -0
- data/lib/nsone/api/account.rb +10 -2
- data/lib/nsone/api/feeds.rb +51 -0
- data/lib/nsone/api/jobs.rb +2 -2
- data/lib/nsone/api/networks.rb +29 -0
- data/lib/nsone/api/records.rb +4 -5
- data/lib/nsone/api/stats.rb +34 -27
- data/lib/nsone/api/zones.rb +6 -6
- data/lib/nsone/api.rb +3 -1
- data/lib/nsone/client.rb +7 -5
- data/lib/nsone/error.rb +1 -0
- data/lib/nsone/response/base.rb +3 -2
- data/lib/nsone/transport/net_http.rb +25 -9
- data/lib/nsone/transport.rb +1 -0
- data/lib/nsone/version.rb +1 -1
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 53d583c0dc699961263edfc90e1acbe5888edc5e5fd45e0eb1c233a85b3311c5
|
4
|
+
data.tar.gz: f1b314fe81a07341b3ed732b84bdb0d149ff08e2578f6114032589293d465d13
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f3026392da94f8fc9a57e954a9d80f5c27cec58a958a59f6866db07ce961af7c454a3ea5578ae8f91f5a8d4bf9ea027c3dbd2bb4754dacf85156f80703cb45dc
|
7
|
+
data.tar.gz: a4bfc1757973256ef7e31198bf3b7816c71155bdd4463456acb6edcba2480f99d852a8dbf2772dc3726fe87665a001c4a8da75303dfc497c3d0d85cc3ec2b19b
|
data/CHANGELOG.md
CHANGED
@@ -1,6 +1,15 @@
|
|
1
1
|
# Changelog
|
2
2
|
All notable changes to this project will be documented in this file.
|
3
3
|
|
4
|
+
## 0.4.1 - 2019-08-26
|
5
|
+
- Added network call for managed/private/dedicated networks lists
|
6
|
+
|
7
|
+
## 0.4.0 - 2019-08-17
|
8
|
+
- Added NSOne::Transport::RateLimitExceeded exception and get_rates method to add to the NSOne::Response::Base class the rate limit headers to help with exponential backoff
|
9
|
+
- Added billataglance and plan methods for account API
|
10
|
+
- Added Feeds APIs
|
11
|
+
- Seperated API version string from static paths to allow easy to change, versions in the future.
|
12
|
+
|
4
13
|
## 0.3.4 - 2019-08-06
|
5
14
|
- change module name
|
6
15
|
|
data/lib/nsone/api/account.rb
CHANGED
@@ -10,7 +10,7 @@ module NSOne
|
|
10
10
|
# @return [NSOne::Response]
|
11
11
|
#
|
12
12
|
def account()
|
13
|
-
perform_request(HTTP_GET, "/
|
13
|
+
perform_request(HTTP_GET, "/account/settings")
|
14
14
|
end
|
15
15
|
|
16
16
|
#
|
@@ -19,7 +19,15 @@ module NSOne
|
|
19
19
|
# @return [NSOne::Response]
|
20
20
|
#
|
21
21
|
def account_overage()
|
22
|
-
perform_request(HTTP_GET, "/
|
22
|
+
perform_request(HTTP_GET, "/account/usagewarnings")
|
23
|
+
end
|
24
|
+
|
25
|
+
def plan
|
26
|
+
perform_request(HTTP_GET, "/account/plan")
|
27
|
+
end
|
28
|
+
|
29
|
+
def billataglance
|
30
|
+
perform_request(HTTP_GET, "/account/billataglance")
|
23
31
|
end
|
24
32
|
|
25
33
|
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module NSOne
|
4
|
+
module API
|
5
|
+
module Feeds
|
6
|
+
|
7
|
+
def source_types()
|
8
|
+
types = perform_request(HTTP_GET, "/data/sourcetypes")
|
9
|
+
raise NSOne::UnexpectedResponse, "Expected a Hash but responses does not look like a Hash" if ! types.respond_to?(:keys)
|
10
|
+
types.keys
|
11
|
+
end
|
12
|
+
|
13
|
+
def data_sources()
|
14
|
+
perform_request(HTTP_GET, "/data/sources")
|
15
|
+
end
|
16
|
+
|
17
|
+
def data_source(data_source_id)
|
18
|
+
raise NSOne::MissingParameter, "Data Source ID cannot be blank" if blank?(data_source_id)
|
19
|
+
perform_request(HTTP_GET, "/data/sources/#{data_source_id}")
|
20
|
+
end
|
21
|
+
|
22
|
+
def create_data_source(params)
|
23
|
+
validate_required!(params, :sourcetype, :name, :config)
|
24
|
+
perform_request(HTTP_PUT, "/data/sources", params)
|
25
|
+
end
|
26
|
+
|
27
|
+
def feeds(data_source_id)
|
28
|
+
raise NSOne::MissingParameter, "Data Source ID cannot be blank" if blank?(data_source_id)
|
29
|
+
perform_request(HTTP_GET, "/data/feeds/#{data_source_id}")
|
30
|
+
end
|
31
|
+
|
32
|
+
def create_data_feed(data_source_id, params)
|
33
|
+
raise NSOne::MissingParameter, "Data Source ID cannot be blank" if blank?(data_source_id)
|
34
|
+
validate_required!(params, :name, :config)
|
35
|
+
perform_request(HTTP_PUT, "/data/feeds/#{data_source_id}", params)
|
36
|
+
end
|
37
|
+
|
38
|
+
def delete_data_feed(data_source_id, data_feed_id)
|
39
|
+
raise NSOne::MissingParameter, "Data Source ID cannot be blank" if blank?(data_source_id)
|
40
|
+
raise NSOne::MissingParameter, "Data Feed ID cannot be blank" if blank?(data_feed_id)
|
41
|
+
perform_request(HTTP_DELETE, "/data/feeds/#{data_source_id}/#{data_feed_id}")
|
42
|
+
end
|
43
|
+
|
44
|
+
def modify_feed(data_source_id, params)
|
45
|
+
raise NSOne::MissingParameter, "Data Source ID cannot be blank" if blank?(data_source_id)
|
46
|
+
perform_request(HTTP_POST, "/feed/#{data_source_id}", params)
|
47
|
+
end
|
48
|
+
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
data/lib/nsone/api/jobs.rb
CHANGED
@@ -10,7 +10,7 @@ module NSOne
|
|
10
10
|
# @return [NSOne::Response]
|
11
11
|
#
|
12
12
|
def jobs()
|
13
|
-
perform_request(HTTP_GET, "/
|
13
|
+
perform_request(HTTP_GET, "/monitoring/jobs")
|
14
14
|
end
|
15
15
|
|
16
16
|
#
|
@@ -22,7 +22,7 @@ module NSOne
|
|
22
22
|
#
|
23
23
|
def job(job_id)
|
24
24
|
raise NSOne::MissingParameter, "job_id cannot be blank" if blank?(job_id)
|
25
|
-
perform_request(HTTP_GET, "/
|
25
|
+
perform_request(HTTP_GET, "/monitoring/jobs/#{job_id}")
|
26
26
|
end
|
27
27
|
|
28
28
|
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module NSOne
|
4
|
+
module API
|
5
|
+
module Networks
|
6
|
+
|
7
|
+
#
|
8
|
+
# Returns a lists of all networks for which you may create zones and records.
|
9
|
+
# By default network '0' is always returned as it the NS1 main network.
|
10
|
+
# Customers with dedicated/private DNS service can have more.
|
11
|
+
#
|
12
|
+
# @example Response
|
13
|
+
# [
|
14
|
+
# {
|
15
|
+
# "network_id"=>0,
|
16
|
+
# "name"=>"NS1 Managed DNS Network",
|
17
|
+
# "label"=>"NSONE"
|
18
|
+
# }
|
19
|
+
# ]
|
20
|
+
#
|
21
|
+
# @return [NSOne::Response]
|
22
|
+
#
|
23
|
+
def networks()
|
24
|
+
perform_request(HTTP_GET, "/networks")
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
data/lib/nsone/api/records.rb
CHANGED
@@ -16,10 +16,9 @@ module NSOne
|
|
16
16
|
#
|
17
17
|
def record(zone, domain, type)
|
18
18
|
raise NSOne::MissingParameter, "zone cannot be blank" if blank?(zone)
|
19
|
-
raise NSOne::MissingParameter, "domain cannot be blank" if blank?(domain)
|
20
19
|
raise NSOne::MissingParameter, "type cannot be blank" if blank?(type)
|
21
20
|
normalize_names!(zone, domain)
|
22
|
-
perform_request(HTTP_GET, "/
|
21
|
+
perform_request(HTTP_GET, "/zones/#{zone}/#{domain}/#{type}")
|
23
22
|
end
|
24
23
|
|
25
24
|
#
|
@@ -99,7 +98,7 @@ module NSOne
|
|
99
98
|
validate_required!(params, :answers)
|
100
99
|
normalize_names!(zone, domain)
|
101
100
|
params = params.merge(zone: zone, domain: domain, type: type)
|
102
|
-
perform_request(HTTP_PUT, "/
|
101
|
+
perform_request(HTTP_PUT, "/zones/#{zone}/#{domain}/#{type}", params)
|
103
102
|
end
|
104
103
|
|
105
104
|
#
|
@@ -112,7 +111,7 @@ module NSOne
|
|
112
111
|
raise NSOne::MissingParameter, "domain cannot be blank" if blank?(domain)
|
113
112
|
raise NSOne::MissingParameter, "type cannot be blank" if blank?(type)
|
114
113
|
normalize_names!(zone, domain)
|
115
|
-
perform_request(HTTP_POST, "/
|
114
|
+
perform_request(HTTP_POST, "/zones/#{zone}/#{domain}/#{type}", params)
|
116
115
|
end
|
117
116
|
|
118
117
|
#
|
@@ -129,7 +128,7 @@ module NSOne
|
|
129
128
|
raise NSOne::MissingParameter, "domain cannot be blank" if blank?(domain)
|
130
129
|
raise NSOne::MissingParameter, "type cannot be blank" if blank?(type)
|
131
130
|
normalize_names!(zone, domain)
|
132
|
-
perform_request(HTTP_DELETE, "/
|
131
|
+
perform_request(HTTP_DELETE, "/zones/#{zone}/#{domain}/#{type}")
|
133
132
|
end
|
134
133
|
|
135
134
|
end
|
data/lib/nsone/api/stats.rb
CHANGED
@@ -10,9 +10,10 @@ module NSOne
|
|
10
10
|
# @return [NSOne::Response]
|
11
11
|
#
|
12
12
|
def qps()
|
13
|
-
perform_request(HTTP_GET, "/
|
13
|
+
perform_request(HTTP_GET, "/stats/qps")
|
14
14
|
end
|
15
15
|
|
16
|
+
|
16
17
|
#
|
17
18
|
# Returns current queries per second (QPS) for a specific zone
|
18
19
|
#
|
@@ -23,9 +24,10 @@ module NSOne
|
|
23
24
|
def zone_qps(zone)
|
24
25
|
raise NSOne::MissingParameter, "zone cannot be blank" if blank?(zone)
|
25
26
|
normalize_names!(zone)
|
26
|
-
perform_request(HTTP_GET, "/
|
27
|
+
perform_request(HTTP_GET, "/stats/qps/#{zone}")
|
27
28
|
end
|
28
29
|
|
30
|
+
|
29
31
|
#
|
30
32
|
# Returns current queries per second (QPS) for a specific record
|
31
33
|
#
|
@@ -40,9 +42,10 @@ module NSOne
|
|
40
42
|
raise NSOne::MissingParameter, "domain cannot be blank" if blank?(domain)
|
41
43
|
raise NSOne::MissingParameter, "type cannot be blank" if blank?(type)
|
42
44
|
normalize_names!(zone, domain)
|
43
|
-
perform_request(HTTP_GET, "/
|
45
|
+
perform_request(HTTP_GET, "/stats/qps/#{zone}/#{domain}/#{type}")
|
44
46
|
end
|
45
47
|
|
48
|
+
|
46
49
|
#
|
47
50
|
# Returns statistics and graphs for the entire account over a given period
|
48
51
|
#
|
@@ -63,13 +66,15 @@ module NSOne
|
|
63
66
|
# @return [NSOne::Response]
|
64
67
|
#
|
65
68
|
def usage(params = {})
|
66
|
-
perform_request(HTTP_GET, "/
|
69
|
+
perform_request(HTTP_GET, "/stats/usage", params)
|
67
70
|
end
|
68
71
|
|
72
|
+
|
69
73
|
#
|
70
|
-
# Returns statistics and graphs
|
74
|
+
# Returns statistics and graphs for a given zone over a given period
|
71
75
|
#
|
72
76
|
# @param [Hash] params will be used as the request body
|
77
|
+
# @param [String] zone NSOne zone name
|
73
78
|
#
|
74
79
|
# @option params [String] :period one of `1h`, `24h`, or `30d`
|
75
80
|
#
|
@@ -85,15 +90,20 @@ module NSOne
|
|
85
90
|
#
|
86
91
|
# @return [NSOne::Response]
|
87
92
|
#
|
88
|
-
def
|
89
|
-
|
93
|
+
def zone_usage(zone, params = {})
|
94
|
+
raise NSOne::MissingParameter, "zone cannot be blank" if blank?(zone)
|
95
|
+
normalize_names!(zone)
|
96
|
+
perform_request(HTTP_GET, "/stats/usage/#{zone}", params)
|
90
97
|
end
|
91
98
|
|
99
|
+
|
92
100
|
#
|
93
|
-
# Returns
|
94
|
-
# Europe, North America, Oceania, Africa, Asia
|
101
|
+
# Returns statistics and graphs for a given record over a given period
|
95
102
|
#
|
96
103
|
# @param [Hash] params will be used as the request body
|
104
|
+
# @param [String] zone zone name
|
105
|
+
# @param [String] domain record name
|
106
|
+
# @param [String] type record type (A, CNAME etc)
|
97
107
|
#
|
98
108
|
# @option params [String] :period one of `1h`, `24h`, or `30d`
|
99
109
|
#
|
@@ -109,15 +119,19 @@ module NSOne
|
|
109
119
|
#
|
110
120
|
# @return [NSOne::Response]
|
111
121
|
#
|
112
|
-
def
|
113
|
-
|
122
|
+
def record_usage(zone, domain, type, params = {})
|
123
|
+
raise NSOne::MissingParameter, "zone cannot be blank" if blank?(zone)
|
124
|
+
raise NSOne::MissingParameter, "domain cannot be blank" if blank?(domain)
|
125
|
+
raise NSOne::MissingParameter, "type cannot be blank" if blank?(type)
|
126
|
+
normalize_names!(zone, domain)
|
127
|
+
perform_request(HTTP_GET, "/stats/usage/#{zone}/#{domain}/#{type}", params)
|
114
128
|
end
|
115
129
|
|
130
|
+
|
116
131
|
#
|
117
|
-
# Returns statistics and graphs
|
132
|
+
# Returns statistics and graphs on `NSOne Network` level (Managed/Dedicated)
|
118
133
|
#
|
119
134
|
# @param [Hash] params will be used as the request body
|
120
|
-
# @param [String] zone NSOne zone name
|
121
135
|
#
|
122
136
|
# @option params [String] :period one of `1h`, `24h`, or `30d`
|
123
137
|
#
|
@@ -133,19 +147,16 @@ module NSOne
|
|
133
147
|
#
|
134
148
|
# @return [NSOne::Response]
|
135
149
|
#
|
136
|
-
def
|
137
|
-
|
138
|
-
normalize_names!(zone)
|
139
|
-
perform_request(HTTP_GET, "/v1/stats/usage/#{zone}", params)
|
150
|
+
def network_usage(params = {})
|
151
|
+
perform_request(HTTP_GET, "/stats/network/usage", params)
|
140
152
|
end
|
141
153
|
|
154
|
+
|
142
155
|
#
|
143
|
-
# Returns
|
156
|
+
# Returns total usage (Queries) during `:period` per region/Geo-Location. At the moment NSOne API return the following areas:
|
157
|
+
# Europe, North America, Oceania, Africa, Asia
|
144
158
|
#
|
145
159
|
# @param [Hash] params will be used as the request body
|
146
|
-
# @param [String] zone zone name
|
147
|
-
# @param [String] domain record name
|
148
|
-
# @param [String] type record type (A, CNAME etc)
|
149
160
|
#
|
150
161
|
# @option params [String] :period one of `1h`, `24h`, or `30d`
|
151
162
|
#
|
@@ -161,12 +172,8 @@ module NSOne
|
|
161
172
|
#
|
162
173
|
# @return [NSOne::Response]
|
163
174
|
#
|
164
|
-
def
|
165
|
-
|
166
|
-
raise NSOne::MissingParameter, "domain cannot be blank" if blank?(domain)
|
167
|
-
raise NSOne::MissingParameter, "type cannot be blank" if blank?(type)
|
168
|
-
normalize_names!(zone, domain)
|
169
|
-
perform_request(HTTP_GET, "/v1/stats/usage/#{zone}/#{domain}/#{type}", params)
|
175
|
+
def region_usage(params = {})
|
176
|
+
perform_request(HTTP_GET, "/stats/region/usage", params)
|
170
177
|
end
|
171
178
|
|
172
179
|
end
|
data/lib/nsone/api/zones.rb
CHANGED
@@ -10,7 +10,7 @@ module NSOne
|
|
10
10
|
# @return [NSOne::Response]
|
11
11
|
#
|
12
12
|
def zones
|
13
|
-
perform_request(HTTP_GET, "/
|
13
|
+
perform_request(HTTP_GET, "/zones")
|
14
14
|
end
|
15
15
|
|
16
16
|
#
|
@@ -22,7 +22,7 @@ module NSOne
|
|
22
22
|
#
|
23
23
|
def zone(zone)
|
24
24
|
raise NSOne::MissingParameter, "zone cannot be blank" if blank?(zone)
|
25
|
-
perform_request(HTTP_GET, "/
|
25
|
+
perform_request(HTTP_GET, "/zones/#{zone}")
|
26
26
|
end
|
27
27
|
|
28
28
|
#
|
@@ -39,7 +39,7 @@ module NSOne
|
|
39
39
|
def create_zone(zone, params = {})
|
40
40
|
raise NSOne::MissingParameter, "zone cannot be blank" if blank?(zone)
|
41
41
|
params = params.merge(zone: zone)
|
42
|
-
perform_request(HTTP_PUT, "/
|
42
|
+
perform_request(HTTP_PUT, "/zones/#{zone}", params)
|
43
43
|
end
|
44
44
|
|
45
45
|
#
|
@@ -55,7 +55,7 @@ module NSOne
|
|
55
55
|
def modify_zone(zone, params = {})
|
56
56
|
raise NSOne::MissingParameter, "zone cannot be blank" if blank?(zone)
|
57
57
|
raise NSOne::MissingParameter, "params hash must contain valid zone settings" if !params.is_a?(Hash) || params.empty?
|
58
|
-
perform_request(HTTP_POST, "/
|
58
|
+
perform_request(HTTP_POST, "/zones/#{zone}", params)
|
59
59
|
end
|
60
60
|
|
61
61
|
#
|
@@ -67,7 +67,7 @@ module NSOne
|
|
67
67
|
#
|
68
68
|
def delete_zone(zone)
|
69
69
|
raise NSOne::MissingParameter, "zone cannot be blank" if blank?(zone)
|
70
|
-
perform_request(HTTP_DELETE, "/
|
70
|
+
perform_request(HTTP_DELETE, "/zones/#{zone}")
|
71
71
|
end
|
72
72
|
|
73
73
|
#
|
@@ -86,7 +86,7 @@ module NSOne
|
|
86
86
|
def search(string, params = {})
|
87
87
|
raise NSOne::MissingParameter, "search string cannot be blank" if blank?(string)
|
88
88
|
params = params.merge(q: string)
|
89
|
-
perform_request(HTTP_GET, "/
|
89
|
+
perform_request(HTTP_GET, "/search", params)
|
90
90
|
end
|
91
91
|
|
92
92
|
end
|
data/lib/nsone/api.rb
CHANGED
data/lib/nsone/client.rb
CHANGED
@@ -1,5 +1,3 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
1
|
require "nsone/api"
|
4
2
|
require "nsone/transport/net_http"
|
5
3
|
require "nsone/error"
|
@@ -11,9 +9,10 @@ module NSOne
|
|
11
9
|
|
12
10
|
BASE_URL = "https://api.nsone.net"
|
13
11
|
|
14
|
-
def initialize(api_key, base_url: BASE_URL, logger: nil)
|
12
|
+
def initialize(api_key, api_version: "v1", base_url: BASE_URL, logger: nil)
|
15
13
|
@api_key = api_key
|
16
14
|
@base_url = base_url
|
15
|
+
@api_version = api_version
|
17
16
|
@logger = logger
|
18
17
|
end
|
19
18
|
|
@@ -33,7 +32,10 @@ module NSOne
|
|
33
32
|
end
|
34
33
|
|
35
34
|
def transport
|
36
|
-
|
35
|
+
begin
|
36
|
+
@transport ||= NSOne::Transport::NetHttp.new(@base_url, @api_version, @api_key)
|
37
|
+
rescue NSOne::Transport::RateLimitExceeded
|
38
|
+
end
|
37
39
|
end
|
38
40
|
|
39
41
|
def blank?(object)
|
@@ -51,6 +53,7 @@ module NSOne
|
|
51
53
|
# Helper to support `domain` name with or without the zone name.
|
52
54
|
# e.g. zone: example.com domain: www will generate domain: www.example.com
|
53
55
|
def normalize_names!(zone, domain = "")
|
56
|
+
domain.replace(zone) if domain.empty?
|
54
57
|
no_dot!(zone, domain)
|
55
58
|
domain << ".#{zone}" unless domain.empty? || domain.include?(zone)
|
56
59
|
end
|
@@ -58,7 +61,6 @@ module NSOne
|
|
58
61
|
# Removes trailing dot from all Strings given
|
59
62
|
def no_dot!(*array)
|
60
63
|
array.map {|a| a.chop! if a[/\.$/] != nil}
|
61
|
-
array
|
62
64
|
end
|
63
65
|
|
64
66
|
end
|
data/lib/nsone/error.rb
CHANGED
data/lib/nsone/response/base.rb
CHANGED
@@ -3,10 +3,11 @@ require 'delegate'
|
|
3
3
|
module NSOne
|
4
4
|
module Response
|
5
5
|
class Base < SimpleDelegator
|
6
|
-
attr_reader :status
|
6
|
+
attr_reader :status, :rates
|
7
7
|
|
8
|
-
def initialize(body, status)
|
8
|
+
def initialize(body, status, rates)
|
9
9
|
@status = status
|
10
|
+
@rates = rates
|
10
11
|
super(body)
|
11
12
|
end
|
12
13
|
end
|
@@ -10,31 +10,46 @@ require "nsone/response"
|
|
10
10
|
module NSOne
|
11
11
|
module Transport
|
12
12
|
class NetHttp
|
13
|
-
|
13
|
+
|
14
|
+
|
15
|
+
def initialize(base_url, api_version, api_key)
|
14
16
|
@base_url = base_url
|
17
|
+
@api_version = api_version
|
15
18
|
@api_key = api_key
|
16
19
|
end
|
17
20
|
|
18
21
|
def request(method, path, body = nil)
|
19
|
-
uri = URI.join(@base_url, path)
|
22
|
+
uri = URI.join(@base_url, "#{@api_version}#{path}")
|
20
23
|
Net::HTTP.start(uri.host, uri.port, opts(uri)) do |http|
|
21
24
|
response = http.send_request(method, uri, body, headers(body))
|
22
|
-
process_response(response)
|
25
|
+
process_response(response, get_rates(response))
|
23
26
|
end
|
24
27
|
end
|
25
28
|
|
26
29
|
private
|
27
30
|
|
28
|
-
def process_response(response)
|
31
|
+
def process_response(response, rates = {})
|
29
32
|
body = JSON.parse(response.body)
|
30
33
|
case response
|
34
|
+
when Net::HTTPTooManyRequests
|
35
|
+
raise NSOne::Transport::RateLimitExceeded, "#{response}, #{body}"
|
31
36
|
when Net::HTTPOK
|
32
|
-
NSOne::Response::Success.new(body, response.code.to_i)
|
37
|
+
NSOne::Response::Success.new(body, response.code.to_i, rates)
|
33
38
|
else
|
34
|
-
NSOne::Response::Error.new(body, response.code.to_i)
|
39
|
+
NSOne::Response::Error.new(body, response.code.to_i, rates)
|
40
|
+
end
|
41
|
+
rescue JSON::ParserError => e
|
42
|
+
raise NSOne::Transport::ResponseParseError, "#{response.code_type} #{response.code} error: #{e}"
|
43
|
+
end
|
44
|
+
|
45
|
+
def get_rates(response)
|
46
|
+
Hash.new.tap do | h |
|
47
|
+
h[:by] = response["x-ratelimit-by"] if response["x-ratelimit-by"]
|
48
|
+
h[:remaining] = response["x-ratelimit-remaining"] if response["x-ratelimit-remaining"]
|
49
|
+
h[:limit] = response["x-ratelimit-limit"].to_i if response["x-ratelimit-limit"]
|
50
|
+
h[:period] = response["x-ratelimit-period"].to_i if response["x-ratelimit-period"]
|
51
|
+
h[:rate] = (h[:limit] / h[:period]).to_f if h[:limit] && h[:period]
|
35
52
|
end
|
36
|
-
rescue JSON::ParserError
|
37
|
-
raise NSOne::Transport::ResponseParseError
|
38
53
|
end
|
39
54
|
|
40
55
|
def opts(uri)
|
@@ -54,6 +69,7 @@ module NSOne
|
|
54
69
|
def default_headers
|
55
70
|
{ "X-NSONE-Key" => @api_key }
|
56
71
|
end
|
72
|
+
|
57
73
|
end
|
58
74
|
end
|
59
|
-
end
|
75
|
+
end
|
data/lib/nsone/transport.rb
CHANGED
data/lib/nsone/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ns-1
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Esteban Pastorino
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-08-
|
11
|
+
date: 2019-08-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -86,7 +86,9 @@ files:
|
|
86
86
|
- lib/nsone.rb
|
87
87
|
- lib/nsone/api.rb
|
88
88
|
- lib/nsone/api/account.rb
|
89
|
+
- lib/nsone/api/feeds.rb
|
89
90
|
- lib/nsone/api/jobs.rb
|
91
|
+
- lib/nsone/api/networks.rb
|
90
92
|
- lib/nsone/api/records.rb
|
91
93
|
- lib/nsone/api/stats.rb
|
92
94
|
- lib/nsone/api/zones.rb
|