extreme_feedback_device 0.0.2 → 0.0.3
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/.travis.yml +7 -0
- data/Gemfile +1 -3
- data/README.md +4 -0
- data/lib/extreme_feedback_device/jenkins.rb +22 -16
- data/lib/extreme_feedback_device/version.rb +1 -1
- data/lib/extreme_feedback_device.rb +10 -0
- data/spec/lib/extreme_feedback_device/jenkins_spec.rb +7 -0
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 80db1f631ae4f5e555af406b09130f673d4f4d2a
|
4
|
+
data.tar.gz: feb4c282add2d0f135db005ce84d6dc8e30b1ce9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7ae51e82232615fa2ac7b1bb356e51c8422354b09dd5d0a103e7a8087f2f43e121686d914269c47a9e26632477e0195e37ed64fc595d9b917fb36ec086fe651d
|
7
|
+
data.tar.gz: de8cc17ee0e5475168fdfb81b4e2385d491d9d6d624a939aaa53117a83c3671d9157beb5e08d2400992cf2133c0678db856cf337aa3e0da7dbcd10912450f749
|
data/.travis.yml
ADDED
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -1,5 +1,9 @@
|
|
1
1
|
# ExtremeFeedbackDevice
|
2
2
|
|
3
|
+
[](http://badge.fury.io/rb/extreme_feedback_device)
|
4
|
+
[](https://gemnasium.com/taktsoft/extreme_feedback_device)
|
5
|
+
[](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
|
-
|
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
|
@@ -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.
|
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:
|
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.
|
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
|