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 +4 -4
- data/bin/telemetryd +3 -0
- data/lib/telemetry/api.rb +50 -28
- data/lib/telemetry/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f909b582e2a38ba2ff587a7086f2da0f591f06c1
|
4
|
+
data.tar.gz: e0580f90598446e0382b48f59a1d3918cc878e49
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c6cc0c9d27fce5739e05d584682c8c6d484780a0b178d16901a91bfe47221de2e46d866a967b95526626c6fec5fc5d7a706f258aa0db7527b88f4920cb722b7c
|
7
|
+
data.tar.gz: 156f530fb37ed5fabc4790e6a23b775c840340508079b4ab9ff09fc2e2d63a8805dd82c7c3e696b2dffb2eb0b0534741667295072ef6bfdbc33b002792abbd61
|
data/bin/telemetryd
CHANGED
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
|
-
|
209
|
-
|
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
|
-
|
215
|
-
|
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
|
-
|
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 = "
|
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 = "
|
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 = "
|
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 = "
|
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 = "
|
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 = "
|
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 = "
|
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 = "
|
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 = "
|
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 = "
|
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 = "
|
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 = "
|
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
|
data/lib/telemetry/version.rb
CHANGED
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.
|
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-
|
11
|
+
date: 2014-05-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: oj
|