telemetry 1.3.9 → 1.4.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|