shoutbox-client 0.0.11 → 0.0.12
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/shoutbox/configuration.rb +12 -7
- data/lib/shoutbox/shout.rb +5 -3
- data/lib/shoutbox_client.rb +4 -4
- data/spec/shoutbox_client_spec.rb +19 -7
- metadata +5 -30
@@ -1,6 +1,6 @@
|
|
1
1
|
module Shoutbox
|
2
2
|
class Configuration
|
3
|
-
attr_accessor :host, :port
|
3
|
+
attr_accessor :host, :port, :proxy_host, :proxy_port, :default_group
|
4
4
|
|
5
5
|
def initialize
|
6
6
|
config_file_exists? ? read_config_file : default_config
|
@@ -22,15 +22,20 @@ module Shoutbox
|
|
22
22
|
end
|
23
23
|
|
24
24
|
def default_config
|
25
|
-
@host
|
26
|
-
@port
|
25
|
+
@host = 'localhost'
|
26
|
+
@port = 3000
|
27
|
+
@default_group = 'default group'
|
28
|
+
@proxy_host = nil
|
29
|
+
@proxy_port = nil
|
27
30
|
end
|
28
31
|
|
29
32
|
def read_config_file
|
30
|
-
config_data
|
31
|
-
@host
|
32
|
-
@port
|
33
|
+
config_data = YAML::load_file(config_file)
|
34
|
+
@host = config_data["host"]
|
35
|
+
@port = config_data["port"]
|
36
|
+
@default_group = config_data["default_group"] || 'default group'
|
37
|
+
@proxy_host = config_data["proxy_host"]
|
38
|
+
@proxy_port = config_data["proxy_port"]
|
33
39
|
end
|
34
|
-
|
35
40
|
end
|
36
41
|
end
|
data/lib/shoutbox/shout.rb
CHANGED
@@ -22,9 +22,11 @@ a message.
|
|
22
22
|
|
23
23
|
shout allows the folling options:
|
24
24
|
EOS
|
25
|
-
opt :host,
|
26
|
-
opt :port,
|
27
|
-
opt :
|
25
|
+
opt :host, "The hostname of the Shoutbox", :type => String
|
26
|
+
opt :port, "The port of the Shoutbox", :type => Integer
|
27
|
+
opt :proxy_host, "The proxy host to use", :type => String
|
28
|
+
opt :proxy_port, "The proxy port to use", :type => Integer
|
29
|
+
opt :group, "The group to use", :type => String, :default => "Shoutbox Default Group"
|
28
30
|
end
|
29
31
|
|
30
32
|
@conf[:status] = ARGV.shift
|
data/lib/shoutbox_client.rb
CHANGED
@@ -24,10 +24,10 @@ class ShoutboxClient
|
|
24
24
|
end
|
25
25
|
|
26
26
|
def self.update_status( options )
|
27
|
-
response = Net::HTTP.start(configuration.host, configuration.port) do |http|
|
27
|
+
response = Net::HTTP.Proxy(configuration.proxy_host, configuration.proxy_port).start(configuration.host, configuration.port) do |http|
|
28
28
|
req = Net::HTTP::Put.new( request_url(options) )
|
29
29
|
default_headers(req)
|
30
|
-
body_data = { :statusId => options[:statusId], :group => (options[:group] ||
|
30
|
+
body_data = { :statusId => options[:statusId], :group => (options[:group] || configuration.default_group), :status => options[:status].to_s }
|
31
31
|
body_data[:message] = options[:message] if options[:status].to_s == 'red' or (options[:status].to_s == 'yellow' and options[:message])
|
32
32
|
raise ArgumentError if (options[:status] == :red) and body_data[:message].to_s.empty?
|
33
33
|
req.body = body_data.to_json
|
@@ -37,9 +37,9 @@ class ShoutboxClient
|
|
37
37
|
end
|
38
38
|
|
39
39
|
def self.delete_status( options )
|
40
|
-
response = Net::HTTP.start(configuration.host, configuration.port) do |http|
|
40
|
+
response = Net::HTTP.Proxy(configuration.proxy_host, configuration.proxy_port).start(configuration.host, configuration.port) do |http|
|
41
41
|
req = Net::HTTP::Delete.new( request_url(options) )
|
42
|
-
req.body = { :statusId => options[:statusId], :group => (options[:group] ||
|
42
|
+
req.body = { :statusId => options[:statusId], :group => (options[:group] || configuration.default_group) }.to_json
|
43
43
|
default_headers(req)
|
44
44
|
http.request(req)
|
45
45
|
end
|
@@ -12,11 +12,23 @@ describe "ShoutboxClient" do
|
|
12
12
|
|
13
13
|
it 'should use the values of the config file' do
|
14
14
|
tempfile = Tempfile.new( '.shoutbox' )
|
15
|
-
tempfile << { "host" => "example.com", "port" => 89 }.to_yaml
|
15
|
+
tempfile << { "host" => "example.com", "port" => 89, "proxy_host" => "prx", "proxy_port" => 8080 }.to_yaml
|
16
16
|
tempfile.close
|
17
17
|
ShoutboxClient.configuration.config_file = tempfile.path
|
18
18
|
ShoutboxClient.configuration.host.should == 'example.com'
|
19
19
|
ShoutboxClient.configuration.port.should == 89
|
20
|
+
ShoutboxClient.configuration.proxy_host.should == "prx"
|
21
|
+
ShoutboxClient.configuration.proxy_port.should == 8080
|
22
|
+
ShoutboxClient.configuration.default_group.should == 'default group'
|
23
|
+
ShoutboxClient.configuration.config_file = nil
|
24
|
+
end
|
25
|
+
|
26
|
+
it 'should use the configured default group' do
|
27
|
+
tempfile = Tempfile.new( '.shoutbox' )
|
28
|
+
tempfile << { "host" => "example.com", "port" => 89, "proxy_host" => "prx", "proxy_port" => 8080, "default_group" => "some group" }.to_yaml
|
29
|
+
tempfile.close
|
30
|
+
ShoutboxClient.configuration.config_file = tempfile.path
|
31
|
+
ShoutboxClient.configuration.default_group.should == 'some group'
|
20
32
|
ShoutboxClient.configuration.config_file = nil
|
21
33
|
end
|
22
34
|
end
|
@@ -33,7 +45,7 @@ describe "ShoutboxClient" do
|
|
33
45
|
|
34
46
|
it 'should create use group default if no group given' do
|
35
47
|
stub_request(:put, "http://localhost:3000/status").
|
36
|
-
with(:body => "{\"statusId\":\"test_status\",\"group\":\"default\",\"status\":\"green\"}",
|
48
|
+
with(:body => "{\"statusId\":\"test_status\",\"group\":\"default group\",\"status\":\"green\"}",
|
37
49
|
:headers => {'Accept'=>'application/json', 'User-Agent'=>'Ruby shoutbox-client'}).
|
38
50
|
to_return(:status => 200, :body => "OK", :headers => {})
|
39
51
|
|
@@ -42,7 +54,7 @@ describe "ShoutboxClient" do
|
|
42
54
|
|
43
55
|
it 'should not include a message when status is yellow and no message given' do
|
44
56
|
stub_request(:put, "http://localhost:3000/status").
|
45
|
-
with(:body => "{\"statusId\":\"test_status\",\"group\":\"default\",\"status\":\"yellow\"}",
|
57
|
+
with(:body => "{\"statusId\":\"test_status\",\"group\":\"default group\",\"status\":\"yellow\"}",
|
46
58
|
:headers => {'Accept'=>'application/json', 'User-Agent'=>'Ruby shoutbox-client'}).
|
47
59
|
to_return(:status => 200, :body => "OK", :headers => {})
|
48
60
|
|
@@ -51,7 +63,7 @@ describe "ShoutboxClient" do
|
|
51
63
|
|
52
64
|
it 'should include a message when status is yellow and message is given' do
|
53
65
|
stub_request(:put, "http://localhost:3000/status").
|
54
|
-
with(:body => "{\"statusId\":\"test_status\",\"group\":\"default\",\"status\":\"yellow\",\"message\":\"This is what you should do now..\"}",
|
66
|
+
with(:body => "{\"statusId\":\"test_status\",\"group\":\"default group\",\"status\":\"yellow\",\"message\":\"This is what you should do now..\"}",
|
55
67
|
:headers => {'Accept'=>'application/json', 'User-Agent'=>'Ruby shoutbox-client'}).
|
56
68
|
to_return(:status => 200, :body => "OK", :headers => {})
|
57
69
|
|
@@ -60,7 +72,7 @@ describe "ShoutboxClient" do
|
|
60
72
|
|
61
73
|
it 'should include a message when status is red' do
|
62
74
|
stub_request(:put, "http://localhost:3000/status").
|
63
|
-
with(:body => "{\"statusId\":\"test_status\",\"group\":\"default\",\"status\":\"red\",\"message\":\"This is what you should do now..\"}",
|
75
|
+
with(:body => "{\"statusId\":\"test_status\",\"group\":\"default group\",\"status\":\"red\",\"message\":\"This is what you should do now..\"}",
|
64
76
|
:headers => {'Accept'=>'application/json', 'User-Agent'=>'Ruby shoutbox-client'}).
|
65
77
|
to_return(:status => 200, :body => "OK", :headers => {})
|
66
78
|
|
@@ -69,7 +81,7 @@ describe "ShoutboxClient" do
|
|
69
81
|
|
70
82
|
it 'should not include a message when status is green' do
|
71
83
|
stub_request(:put, "http://localhost:3000/status").
|
72
|
-
with(:body => "{\"statusId\":\"test_status\",\"group\":\"default\",\"status\":\"green\"}",
|
84
|
+
with(:body => "{\"statusId\":\"test_status\",\"group\":\"default group\",\"status\":\"green\"}",
|
73
85
|
:headers => {'Accept'=>'application/json', 'User-Agent'=>'Ruby shoutbox-client'}).
|
74
86
|
to_return(:status => 200, :body => "OK", :headers => {})
|
75
87
|
|
@@ -84,7 +96,7 @@ describe "ShoutboxClient" do
|
|
84
96
|
|
85
97
|
it 'should delete a status' do
|
86
98
|
stub_request(:delete, "http://localhost:3000/status").
|
87
|
-
with(:body => "{\"statusId\":\"test_status\",\"group\":\"default\"}",
|
99
|
+
with(:body => "{\"statusId\":\"test_status\",\"group\":\"default group\"}",
|
88
100
|
:headers => {'Accept'=>'application/json', 'User-Agent'=>'Ruby shoutbox-client'}).
|
89
101
|
to_return(:status => 200, :body => "OK", :headers => {})
|
90
102
|
|
metadata
CHANGED
@@ -1,12 +1,8 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: shoutbox-client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
prerelease:
|
5
|
-
|
6
|
-
- 0
|
7
|
-
- 0
|
8
|
-
- 11
|
9
|
-
version: 0.0.11
|
4
|
+
prerelease:
|
5
|
+
version: 0.0.12
|
10
6
|
platform: ruby
|
11
7
|
authors:
|
12
8
|
- Benjamin Krause
|
@@ -14,7 +10,7 @@ autorequire: shoutbox_client
|
|
14
10
|
bindir: bin
|
15
11
|
cert_chain: []
|
16
12
|
|
17
|
-
date: 2011-
|
13
|
+
date: 2011-03-10 00:00:00 +01:00
|
18
14
|
default_executable: shout
|
19
15
|
dependencies:
|
20
16
|
- !ruby/object:Gem::Dependency
|
@@ -24,9 +20,6 @@ dependencies:
|
|
24
20
|
requirements:
|
25
21
|
- - ~>
|
26
22
|
- !ruby/object:Gem::Version
|
27
|
-
segments:
|
28
|
-
- 1
|
29
|
-
- 16
|
30
23
|
version: "1.16"
|
31
24
|
type: :runtime
|
32
25
|
prerelease: false
|
@@ -38,9 +31,6 @@ dependencies:
|
|
38
31
|
requirements:
|
39
32
|
- - ~>
|
40
33
|
- !ruby/object:Gem::Version
|
41
|
-
segments:
|
42
|
-
- 2
|
43
|
-
- 3
|
44
34
|
version: "2.3"
|
45
35
|
type: :development
|
46
36
|
prerelease: false
|
@@ -52,9 +42,6 @@ dependencies:
|
|
52
42
|
requirements:
|
53
43
|
- - ~>
|
54
44
|
- !ruby/object:Gem::Version
|
55
|
-
segments:
|
56
|
-
- 1
|
57
|
-
- 0
|
58
45
|
version: "1.0"
|
59
46
|
type: :development
|
60
47
|
prerelease: false
|
@@ -66,9 +53,6 @@ dependencies:
|
|
66
53
|
requirements:
|
67
54
|
- - ~>
|
68
55
|
- !ruby/object:Gem::Version
|
69
|
-
segments:
|
70
|
-
- 1
|
71
|
-
- 6
|
72
56
|
version: "1.6"
|
73
57
|
type: :development
|
74
58
|
prerelease: false
|
@@ -80,9 +64,6 @@ dependencies:
|
|
80
64
|
requirements:
|
81
65
|
- - ~>
|
82
66
|
- !ruby/object:Gem::Version
|
83
|
-
segments:
|
84
|
-
- 1
|
85
|
-
- 5
|
86
67
|
version: "1.5"
|
87
68
|
type: :development
|
88
69
|
prerelease: false
|
@@ -94,10 +75,6 @@ dependencies:
|
|
94
75
|
requirements:
|
95
76
|
- - ~>
|
96
77
|
- !ruby/object:Gem::Version
|
97
|
-
segments:
|
98
|
-
- 1
|
99
|
-
- 4
|
100
|
-
- 0
|
101
78
|
version: 1.4.0
|
102
79
|
type: :runtime
|
103
80
|
prerelease: false
|
@@ -134,7 +111,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
134
111
|
requirements:
|
135
112
|
- - ">="
|
136
113
|
- !ruby/object:Gem::Version
|
137
|
-
hash:
|
114
|
+
hash: 591505643333229033
|
138
115
|
segments:
|
139
116
|
- 0
|
140
117
|
version: "0"
|
@@ -143,13 +120,11 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
143
120
|
requirements:
|
144
121
|
- - ">="
|
145
122
|
- !ruby/object:Gem::Version
|
146
|
-
segments:
|
147
|
-
- 0
|
148
123
|
version: "0"
|
149
124
|
requirements: []
|
150
125
|
|
151
126
|
rubyforge_project:
|
152
|
-
rubygems_version: 1.
|
127
|
+
rubygems_version: 1.5.0
|
153
128
|
signing_key:
|
154
129
|
specification_version: 3
|
155
130
|
summary: ruby client to publish shoutbox status updates
|