extreme_feedback_device 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b6efa7bb15b030098c73513727368b1be45ea08e
4
- data.tar.gz: 04a0431f7cc1185b188712688eedab8ab710d897
3
+ metadata.gz: 80db1f631ae4f5e555af406b09130f673d4f4d2a
4
+ data.tar.gz: feb4c282add2d0f135db005ce84d6dc8e30b1ce9
5
5
  SHA512:
6
- metadata.gz: 2aefa8fc64a7540464aa7cae4f70a2064e4f70f42a2dc542c502a61753331082ccbbd77080e8bacba901228e8872f3ea83a6c2a8dae1e124f4b6f132755f9e67
7
- data.tar.gz: 3bd5f4a75eeaa7031868246660aa789f5f6b1c543b95ce9c16d2002a51e6638459c66d17436d72cbe008de525399a9505502ab31036a35afabc59ca039a62d95
6
+ metadata.gz: 7ae51e82232615fa2ac7b1bb356e51c8422354b09dd5d0a103e7a8087f2f43e121686d914269c47a9e26632477e0195e37ed64fc595d9b917fb36ec086fe651d
7
+ data.tar.gz: de8cc17ee0e5475168fdfb81b4e2385d491d9d6d624a939aaa53117a83c3671d9157beb5e08d2400992cf2133c0678db856cf337aa3e0da7dbcd10912450f749
data/.travis.yml ADDED
@@ -0,0 +1,7 @@
1
+ language: ruby
2
+ rvm:
3
+ - 1.9.2
4
+ - 1.9.3
5
+ - 2.0.0
6
+ - 2.1.0
7
+ - jruby-19mode
data/Gemfile CHANGED
@@ -1,6 +1,4 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
- ruby '2.0.0'
4
-
5
3
  # Specify your gem's dependencies in extreme_feedback_device.gemspec
6
- gemspec
4
+ gemspec
data/README.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # ExtremeFeedbackDevice
2
2
 
3
+ [![Gem Version](https://badge.fury.io/rb/extreme_feedback_device.png)](http://badge.fury.io/rb/extreme_feedback_device)
4
+ [![Dependency Status](https://gemnasium.com/taktsoft/extreme_feedback_device.png)](https://gemnasium.com/taktsoft/extreme_feedback_device)
5
+ [![Build Status](https://travis-ci.org/taktsoft/extreme_feedback_device.png)](https://travis-ci.org/taktsoft/extreme_feedback_device)
6
+
3
7
  TODO: Write a gem description
4
8
 
5
9
  Fetches Jobs from a Jenkins CI via the REST JSON API and sets LEDs of an Extreme Feedback Device to the status of the corresponding Job.
@@ -13,23 +13,9 @@ module ExtremeFeedbackDevice
13
13
  URI(full_url)
14
14
  end
15
15
 
16
- def get_json
17
- request = ::Net::HTTP::Get.new(full_uri)
18
- request.basic_auth(user, token)
19
-
20
- response = ::Net::HTTP.start(full_uri.hostname, full_uri.port) do |http|
21
- http.request(request)
22
- end
23
-
24
- if response.is_a?(::Net::HTTPSuccess)
25
- response.body
26
- else
27
- nil
28
- end
29
- end
30
-
31
16
  def jobs
32
- jobs_from_json(get_json)
17
+ json = get_json
18
+ jobs_from_json(json) if json.is_a?(String)
33
19
  end
34
20
 
35
21
  private
@@ -43,5 +29,25 @@ module ExtremeFeedbackDevice
43
29
 
44
30
  json_objects["jobs"].map { |json_object| ExtremeFeedbackDevice::Job.from_json_object(json_object) }
45
31
  end
32
+
33
+ def get_json
34
+ request = ::Net::HTTP::Get.new(full_uri)
35
+ request.basic_auth(user, token)
36
+
37
+ response = nil
38
+ begin
39
+ response = ::Net::HTTP.start(full_uri.hostname, full_uri.port) do |http|
40
+ http.request(request)
41
+ end
42
+ rescue SocketError => e
43
+ response = e
44
+ end
45
+
46
+ if response.is_a?(::Net::HTTPSuccess)
47
+ return response.body
48
+ else
49
+ return nil
50
+ end
51
+ end
46
52
  end
47
53
  end
@@ -1,3 +1,3 @@
1
1
  module ExtremeFeedbackDevice
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
@@ -65,6 +65,16 @@ module ExtremeFeedbackDevice
65
65
  def infinite_loop
66
66
  settings['infinite_loop'] ||= {}
67
67
  interval = settings.infinite_loop['sleep'] || 30
68
+
69
+ %w(INT TERM).each do |signal|
70
+ trap(signal) do
71
+ puts "\r\nReceived SIGINT - turning off all LEDs and exit ..."
72
+ pi.leds_black!
73
+ pi.leds_black! # ... just to be safe
74
+ exit(0)
75
+ end
76
+ end
77
+
68
78
  while true
69
79
  run
70
80
  sleep(interval)
@@ -47,6 +47,13 @@ describe ExtremeFeedbackDevice::Jenkins do
47
47
  end
48
48
 
49
49
  context ".jobs" do
50
+ context "without mocked JSON" do
51
+ it "returns nil if host isn't available" do
52
+ subject.base_url = "http://this-host-isnt-available/"
53
+ subject.jobs.should be_nil
54
+ end
55
+ end
56
+
50
57
  context "with mocked JSON" do
51
58
  let(:response) { '''{"jobs":[
52
59
  {"name":"Project X - Master","color":"blue","healthReport":[{"score":80}]},
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: extreme_feedback_device
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael Nowak
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-08-14 00:00:00.000000000 Z
11
+ date: 2014-01-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: color
@@ -179,6 +179,7 @@ files:
179
179
  - .rspec
180
180
  - .ruby-gemset
181
181
  - .ruby-version
182
+ - .travis.yml
182
183
  - Gemfile
183
184
  - Guardfile
184
185
  - LICENSE.txt
@@ -223,7 +224,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
223
224
  version: '0'
224
225
  requirements: []
225
226
  rubyforge_project:
226
- rubygems_version: 2.0.3
227
+ rubygems_version: 2.0.14
227
228
  signing_key:
228
229
  specification_version: 4
229
230
  summary: Fetches Jobs from a Jenkins CI via the REST JSON API and sets LEDs of an