telemetry 1.3.9 → 1.4.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f66a46f50d1cfd3fe40472b34a51c803c33fa5a7
4
- data.tar.gz: 496ba49e4aeb15dc53f23eadaf14454813a84444
3
+ metadata.gz: f909b582e2a38ba2ff587a7086f2da0f591f06c1
4
+ data.tar.gz: e0580f90598446e0382b48f59a1d3918cc878e49
5
5
  SHA512:
6
- metadata.gz: c95aef29ac5f645fd291fa3d3fa0714542f1a0e0150ab12c5875039b1730b628494e7de10ea144f6da2b2eebc9cbbb07b0eae8cf2d1de1dbfd9e2356820df419
7
- data.tar.gz: 68ae3c692334fac0bbb1116dbcd1264ffd34cda09bee656dd8afedc2cd96ef343b881f97a38e380c9811d2b97cd51d277735c5b99e13ad1abfc6d25949f293f9
6
+ metadata.gz: c6cc0c9d27fce5739e05d584682c8c6d484780a0b178d16901a91bfe47221de2e46d866a967b95526626c6fec5fc5d7a706f258aa0db7527b88f4920cb722b7c
7
+ data.tar.gz: 156f530fb37ed5fabc4790e6a23b775c840340508079b4ab9ff09fc2e2d63a8805dd82c7c3e696b2dffb2eb0b0534741667295072ef6bfdbc33b002792abbd61
data/bin/telemetryd CHANGED
@@ -18,6 +18,9 @@ runner.with_options do |opts|
18
18
  opts.on("-o", "--once", "Run once") do |o|
19
19
  options[:once] = o
20
20
  end
21
+ opts.on("-b", "--debug", "Debug") do |o|
22
+ Telemetry::logger.level = Logger::DEBUG
23
+ end
21
24
  end
22
25
 
23
26
  runner.execute do |opts|
data/lib/telemetry/api.rb CHANGED
@@ -21,7 +21,7 @@ module Telemetry
21
21
  if ENV["RACK_ENV"] == 'development'
22
22
  @api_host = "https://api.telemetryapp.com"
23
23
  elsif ENV["RACK_ENV"] == 'test'
24
- @api_host = "https://api.telemetryapp.com"
24
+ @api_host = "https://qa-api.telemetryapp.com"
25
25
  elsif ENV["RACK_ENV"] == 'qa'
26
26
  @api_host = "https://qa-api.telemetryapp.com"
27
27
  else
@@ -168,6 +168,8 @@ module Telemetry
168
168
  def self.send(method, endpoint, data = nil)
169
169
 
170
170
  http = Net::HTTP::Persistent.new 'telemetry_api'
171
+ http.idle_timeout = 15
172
+ http.max_requests = 100
171
173
  uri = URI("#{Telemetry.api_host}#{endpoint}")
172
174
 
173
175
  Telemetry::logger.debug "REQ #{uri} - #{MultiJson.dump(data)}"
@@ -202,89 +204,107 @@ module Telemetry
202
204
  code = response.code
203
205
 
204
206
  Telemetry::logger.debug "RESP (#{((Time.now-start_time)*1000).to_i}ms): #{response.code}:#{response.body}"
207
+ result = Telemetry::Api.parse_response(response)
205
208
 
206
209
  case response.code
207
210
  when "200"
208
- rj = MultiJson.load(response.body)
209
- Telemetry::logger.info "Updated: #{rj['updated'].join(', ')}" if rj.is_a?(Hash) && rj['updated'] && rj['updated'].is_a?(Array) && rj['updated'].count > 0
210
- Telemetry::logger.info "Skipped: #{rj['skipped'].join(', ')}" if rj.is_a?(Hash) && rj['skipped'] && rj['skipped'].is_a?(Array) && rj['skipped'].count > 0
211
- Telemetry::logger.info "Errors: #{rj['errors'].join(', ')}" if rj.is_a?(Hash) && rj['errors'] && rj['errors'].is_a?(Array) && rj['errors'].count > 0
212
- return rj
211
+ Telemetry::logger.debug "200 OK"
212
+ return result
213
213
  when "201"
214
- rj = MultiJson.load(response.body)
215
- Telemetry::logger.info "Updated: #{rj['updated'].join(', ')}" if rj.is_a?(Hash) && rj['updated'] && rj['updated'].is_a?(Array) && rj['updated'].count > 0
216
- Telemetry::logger.info "Skipped: #{rj['skipped'].join(', ')}" if rj.is_a?(Hash) && rj['skipped'] && rj['skipped'].is_a?(Array) && rj['skipped'].count > 0
217
- Telemetry::logger.info "Errors: #{rj['errors'].join(', ')}" if rj.is_a?(Hash) && rj['errors'] && rj['errors'].is_a?(Array) && rj['errors'].count > 0
218
- return rj
214
+ Telemetry::logger.debug "201 OK"
215
+ return result
219
216
  when "204"
217
+ Telemetry::logger.debug "204 OK"
220
218
  return "No Body"
221
219
  when "400"
222
- json = MultiJson.load(response.body)
223
- error = "#{Time.now} (HTTP 400) #{json['errors'].join(',') if json && json['errors']}"
224
- Telemetry::logger.debug response.body
220
+ error = "HTTP 400: Request error"
225
221
  Telemetry::logger.error error
226
222
  raise Telemetry::FormatError, error
227
223
  when "401"
228
224
  if Telemetry.token == nil
229
- error = "#{Time.now} (HTTP 401): Authentication failed, please set Telemetry.token to your API Token. #{method.upcase} #{uri}"
225
+ error = "HTTP 401: Authentication failed, please set Telemetry.token to your API Token. #{method.upcase} #{uri}"
230
226
  Telemetry::logger.error error
231
227
  raise Telemetry::AuthenticationFailed, error
232
228
  else
233
- error = "#{Time.now} (HTTP 401): Authentication failed, please verify your token. #{method.upcase} #{uri}"
229
+ error = "HTTP 401: Authentication failed, please verify your token. #{method.upcase} #{uri}"
234
230
  Telemetry::logger.error error
235
231
  raise Telemetry::AuthenticationFailed, error
236
232
  end
237
233
  when "403"
238
- error = "#{Time.now} (HTTP 403): Authorization failed, please check your account access. #{method.upcase} #{uri}"
234
+ error = "HTTP 403: Authorization failed, please check your account access. #{method.upcase} #{uri}"
239
235
  Telemetry::logger.error error
240
236
  raise Telemetry::AuthorizationError, error
241
237
  when "404"
242
- error = "#{Time.now} (HTTP 404): Requested object not found. #{method.upcase} #{uri}"
238
+ error = "HTTP 404: Requested object not found. #{method.upcase} #{uri}"
243
239
  Telemetry::logger.error error
244
240
  raise Telemetry::FlowNotFound, error
245
241
  when "405"
246
- error = "#{Time.now} (HTTP 405): Method not allowed. #{method.upcase} #{uri}"
242
+ error = "HTTP 405: Method not allowed. #{method.upcase} #{uri}"
247
243
  Telemetry::logger.error error
248
244
  raise Telemetry::MethodNotAllowed, error
249
245
  when "429"
250
- error = "#{Time.now} (HTTP 429): Rate limited. Please reduce your update interval. #{method.upcase} #{uri}"
246
+ error = "HTTP 429: Rate limited. Please reduce your update interval. #{method.upcase} #{uri}"
251
247
  Telemetry::logger.error error
252
248
  raise Telemetry::RateLimited, error
253
249
  when "500"
254
- error = "#{Time.now} (HTTP 500): API server error. #{method.upcase} #{uri}"
250
+ error = "HTTP 500: API server error. #{method.upcase} #{uri}"
255
251
  Telemetry::logger.error error
256
252
  Telemetry::logger.error response.body
257
253
  raise Telemetry::ServerException, error
258
254
  when "502"
259
- error = "#{Time.now} (HTTP 502): API server is down. #{method.upcase} #{uri}"
255
+ error = "HTTP 502: API server is down. #{method.upcase} #{uri}"
260
256
  Telemetry::logger.error error
261
257
  raise Telemetry::Unavailable, error
262
258
  when "503"
263
- error = "#{Time.now} (HTTP 503): API server is down. #{method.upcase} #{uri}"
259
+ error = "HTTP 503: API server is down. #{method.upcase} #{uri}"
264
260
  Telemetry::logger.error error
265
261
  raise Telemetry::Unavailable, error
266
262
  else
267
- error = "#{Time.now} ERROR UNK: #{method.upcase} #{uri} #{response.body}."
263
+ error = "ERROR UNK: #{method.upcase} #{uri} #{response.body}."
268
264
  raise Telemetry::UnknownError, error
269
265
  end
270
266
 
271
267
  rescue Errno::ETIMEDOUT => e
272
- error = "#{Time.now} ERROR #{e}"
268
+ error = "ERROR #{e}"
273
269
  Telemetry::logger.error error
274
270
  raise Telemetry::ConnectionError, error
275
271
 
276
272
  rescue Errno::ECONNREFUSED => e
277
- error = "#{Time.now} ERROR #{e}"
273
+ error = "ERROR #{e}"
278
274
  Telemetry::logger.error error
279
275
  raise Telemetry::ConnectionError, error
280
276
 
281
277
  rescue Exception => e
282
278
  raise e
283
279
 
284
- ensure
285
- http.shutdown
280
+ #ensure
281
+ #http.shutdown
286
282
  end
287
283
  end
284
+
285
+ def self.parse_response(response)
286
+ begin
287
+ resp_hash = MultiJson.load(response.body)
288
+ return nil unless resp_hash && resp_hash.is_a?(Hash)
289
+
290
+ if resp_hash["errors"] && resp_hash["errors"].is_a?(Array) && resp_hash["errors"].count > 0
291
+ Telemetry::logger.error "Errors: #{resp_hash['errors'].join(', ')}"
292
+ end
293
+
294
+ if resp_hash["updated"] && resp_hash["updated"].is_a?(Array) && resp_hash["updated"].count > 0
295
+ Telemetry::logger.debug "Updated: #{resp_hash['updated'].join(', ')}"
296
+ end
297
+
298
+ if resp_hash["skipped"] && resp_hash["skipped"].is_a?(Array) && resp_hash["skipped"].count > 0
299
+ Telemetry::logger.error "Skipped: #{resp_hash['skipped'].join(', ')}"
300
+ end
301
+ return resp_hash
302
+
303
+ rescue Exception => e
304
+ return nil
305
+ end
306
+ end
307
+
288
308
  end
289
309
 
290
310
  class FormatError < Exception
@@ -321,4 +341,6 @@ module Telemetry
321
341
  end
322
342
 
323
343
 
344
+
345
+
324
346
  end
@@ -1,3 +1,3 @@
1
1
  module Telemetry
2
- TELEMETRY_VERSION = "1.3.9"
2
+ TELEMETRY_VERSION = "1.4.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: telemetry
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.9
4
+ version: 1.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - W. Gersham Meharg
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-05-26 00:00:00.000000000 Z
11
+ date: 2014-05-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: oj