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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: fd79d309501f2a7050ac268294910f89adcd0460b6878c4a2e925871ec03983b
4
- data.tar.gz: a18251a62183147f61fc237ce07098c435ebf60c2fc20a1ef1cbf9b72207bbc6
3
+ metadata.gz: 53d583c0dc699961263edfc90e1acbe5888edc5e5fd45e0eb1c233a85b3311c5
4
+ data.tar.gz: f1b314fe81a07341b3ed732b84bdb0d149ff08e2578f6114032589293d465d13
5
5
  SHA512:
6
- metadata.gz: e951b30fe33df1be2888a6b952c8c20045b3a4960f56ae9cc915f8aa11f45d218025e2f9600330495e3c1995bcf0842d5fa098fe68be73b187a7a52b4f36dba6
7
- data.tar.gz: b1b2b1a6c490da1e1ee40f9e681c22d3434c7840bc1f899b503095289b830b3a4487c2ea9cb743b7756ab63828552ddba8cc14857d98cfe4a4328953606d9612
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
 
@@ -10,7 +10,7 @@ module NSOne
10
10
  # @return [NSOne::Response]
11
11
  #
12
12
  def account()
13
- perform_request(HTTP_GET, "/v1/account/settings")
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, "/v1/account/usagewarnings")
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
@@ -10,7 +10,7 @@ module NSOne
10
10
  # @return [NSOne::Response]
11
11
  #
12
12
  def jobs()
13
- perform_request(HTTP_GET, "/v1/monitoring/jobs")
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, "/v1/monitoring/jobs/#{job_id}")
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
@@ -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, "/v1/zones/#{zone}/#{domain}/#{type}")
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, "/v1/zones/#{zone}/#{domain}/#{type}", params)
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, "/v1/zones/#{zone}/#{domain}/#{type}", params)
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, "/v1/zones/#{zone}/#{domain}/#{type}")
131
+ perform_request(HTTP_DELETE, "/zones/#{zone}/#{domain}/#{type}")
133
132
  end
134
133
 
135
134
  end
@@ -10,9 +10,10 @@ module NSOne
10
10
  # @return [NSOne::Response]
11
11
  #
12
12
  def qps()
13
- perform_request(HTTP_GET, "/v1/stats/qps")
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, "/v1/stats/qps/#{zone}")
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, "/v1/stats/qps/#{zone}/#{domain}/#{type}")
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, "/v1/stats/usage", params)
69
+ perform_request(HTTP_GET, "/stats/usage", params)
67
70
  end
68
71
 
72
+
69
73
  #
70
- # Returns statistics and graphs on `NSOne Network` level (Managed/Dedicated)
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 network_usage(params = {})
89
- perform_request(HTTP_GET, "/v1/stats/network/usage", params)
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 total usage (Queries) during `:period` per region/Geo-Location. At the moment NSOne API return the following areas:
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 region_usage(params = {})
113
- perform_request(HTTP_GET, "/v1/stats/region/usage", params)
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 for a given zone over a given period
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 zone_usage(zone, params = {})
137
- raise NSOne::MissingParameter, "zone cannot be blank" if blank?(zone)
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 statistics and graphs for a given record over a given period
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 record_usage(zone, domain, type, params = {})
165
- raise NSOne::MissingParameter, "zone cannot be blank" if blank?(zone)
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
@@ -10,7 +10,7 @@ module NSOne
10
10
  # @return [NSOne::Response]
11
11
  #
12
12
  def zones
13
- perform_request(HTTP_GET, "/v1/zones")
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, "/v1/zones/#{zone}")
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, "/v1/zones/#{zone}", params)
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, "/v1/zones/#{zone}", params)
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, "/v1/zones/#{zone}")
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, "/v1/search", params)
89
+ perform_request(HTTP_GET, "/search", params)
90
90
  end
91
91
 
92
92
  end
data/lib/nsone/api.rb CHANGED
@@ -15,7 +15,9 @@ module NSOne
15
15
  NSOne::API::Records,
16
16
  NSOne::API::Account,
17
17
  NSOne::API::Stats,
18
- NSOne::API::Jobs
18
+ NSOne::API::Jobs,
19
+ NSOne::API::Feeds,
20
+ NSOne::API::Networks
19
21
  end
20
22
 
21
23
  end
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
- @transport ||= NSOne::Transport::NetHttp.new(@base_url, @api_key)
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
@@ -1,4 +1,5 @@
1
1
  module NSOne
2
2
  class Error < StandardError; end
3
3
  class MissingParameter < Error; end
4
+ class UnexpectedResponse < Error; end
4
5
  end
@@ -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
- def initialize(base_url, api_key)
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
@@ -4,5 +4,6 @@ module NSOne
4
4
  module Transport
5
5
  class Error < StandardError; end
6
6
  class ResponseParseError < Error; end
7
+ class RateLimitExceeded < Error; end
7
8
  end
8
9
  end
data/lib/nsone/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module NSOne
2
- VERSION = "0.3.4"
2
+ VERSION = "0.4.1"
3
3
  end
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.3.4
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-06 00:00:00.000000000 Z
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