robut-rdio 0.1.0 → 0.1.2
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG.md +29 -0
- data/Gemfile +16 -7
- data/Gemfile.lock +44 -13
- data/Guardfile +10 -0
- data/README.md +124 -19
- data/VERSION +1 -1
- data/lib/robut-rdio.rb +191 -34
- data/lib/server/public/css/rdio.css +16 -0
- data/lib/server/public/images/buffering.png +0 -0
- data/lib/server/public/images/circle-east.png +0 -0
- data/lib/server/public/images/circle-pause.png +0 -0
- data/lib/server/public/images/circle-play.png +0 -0
- data/lib/server/public/images/circle-stop.png +0 -0
- data/lib/server/public/images/disconnected.png +0 -0
- data/lib/server/public/index.html +16 -6
- data/lib/server/public/js/rdio.js +300 -170
- data/lib/server/server.rb +35 -0
- data/plugin-tester.rb +1 -1
- data/robut-rdio.gemspec +34 -16
- data/spec/integration/robut-rdio_spec.rb +119 -0
- data/spec/robut-rdio_spec.rb +219 -76
- data/spec/server_spec.rb +28 -0
- data/spec/spec_helper.rb +1 -0
- data/spec/support/shared_examples.rb +47 -0
- metadata +73 -31
- data/README.rdoc +0 -19
data/spec/server_spec.rb
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
|
2
|
+
|
3
|
+
describe Robut::Plugin::Rdio::Server do
|
4
|
+
include Rack::Test::Methods
|
5
|
+
|
6
|
+
def app
|
7
|
+
@app ||= Robut::Plugin::Rdio::Server
|
8
|
+
end
|
9
|
+
|
10
|
+
it 'should render a web player' do
|
11
|
+
get '/'
|
12
|
+
last_response.should be_ok
|
13
|
+
last_response.body.should include '<div id="apiswf"></div>'
|
14
|
+
end
|
15
|
+
|
16
|
+
it 'should be able to tell HipChat what song is playing' do
|
17
|
+
Robut::Plugin::Rdio::Server.state_callback = lambda{ |message| @message = message }
|
18
|
+
get '/now_playing/The%20National%20-%20Bloodbuzz%20Ohio'
|
19
|
+
last_response.should be_ok
|
20
|
+
@message.should == 'is now playing: The National - Bloodbuzz Ohio'
|
21
|
+
end
|
22
|
+
|
23
|
+
it 'should degrade gracefully if a reply_callback has not been defined' do
|
24
|
+
Robut::Plugin::Rdio::Server.reply_callback = nil
|
25
|
+
get '/now_playing/Foo'
|
26
|
+
last_response.should be_ok
|
27
|
+
end
|
28
|
+
end
|
data/spec/spec_helper.rb
CHANGED
@@ -2,6 +2,7 @@ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
|
2
2
|
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
3
3
|
require 'rspec'
|
4
4
|
require 'robut-rdio'
|
5
|
+
require 'rack/test'
|
5
6
|
|
6
7
|
# Requires supporting files with custom matchers and macros, etc,
|
7
8
|
# in ./support/ and its subdirectories.
|
@@ -0,0 +1,47 @@
|
|
1
|
+
#
|
2
|
+
# A routing method has valid/invalid input. This shared example is used by
|
3
|
+
# all of ther routing methods.
|
4
|
+
#
|
5
|
+
shared_examples "a routing method" do
|
6
|
+
|
7
|
+
context "when given valid requests" do
|
8
|
+
|
9
|
+
it "should return a truthy value" do
|
10
|
+
routing_method = example.metadata[:method]
|
11
|
+
|
12
|
+
valid_requests.each do |request|
|
13
|
+
subject.send(routing_method,request).should be_true, "expected the Request '#{request}' (#{request.class}) to be valid"
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
17
|
+
|
18
|
+
end
|
19
|
+
|
20
|
+
context "when given invalid requests" do
|
21
|
+
|
22
|
+
it "should return a falsy value" do
|
23
|
+
routing_method = example.metadata[:method]
|
24
|
+
|
25
|
+
invalid_requests.each do |request|
|
26
|
+
subject.send(routing_method,request).should be_false, "expected the Request '#{request}' (#{request.class}) to be invalid"
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
30
|
+
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
34
|
+
|
35
|
+
|
36
|
+
shared_examples "a successfully routed action" do |parameters|
|
37
|
+
|
38
|
+
it "should route the request to the correct action with the correct parameters" do
|
39
|
+
|
40
|
+
# TODO I have forgotten how to set up an expectation without replacing the original method result
|
41
|
+
# subject.should_receive(parameters[:route]).once
|
42
|
+
subject.should_receive(parameters[:action]).with(*parameters[:parameters]).and_return(parameters[:returning])
|
43
|
+
subject.handle(time,sender,message)
|
44
|
+
|
45
|
+
end
|
46
|
+
|
47
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: robut-rdio
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2011-
|
12
|
+
date: 2011-12-08 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: robut
|
16
|
-
requirement: &
|
16
|
+
requirement: &70166568367240 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,32 +21,54 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70166568367240
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: rdio
|
27
|
+
requirement: &70166568366700 !ruby/object:Gem::Requirement
|
28
|
+
none: false
|
29
|
+
requirements:
|
30
|
+
- - =
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: 0.0.91
|
33
|
+
type: :runtime
|
34
|
+
prerelease: false
|
35
|
+
version_requirements: *70166568366700
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: sinatra
|
38
|
+
requirement: &70166568366180 !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
40
|
+
requirements:
|
41
|
+
- - ! '>='
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: '0'
|
44
|
+
type: :runtime
|
45
|
+
prerelease: false
|
46
|
+
version_requirements: *70166568366180
|
25
47
|
- !ruby/object:Gem::Dependency
|
26
48
|
name: thin
|
27
|
-
requirement: &
|
49
|
+
requirement: &70166568365700 !ruby/object:Gem::Requirement
|
28
50
|
none: false
|
29
51
|
requirements:
|
30
52
|
- - ! '>='
|
31
53
|
- !ruby/object:Gem::Version
|
32
54
|
version: '0'
|
33
|
-
type: :
|
55
|
+
type: :runtime
|
34
56
|
prerelease: false
|
35
|
-
version_requirements: *
|
57
|
+
version_requirements: *70166568365700
|
36
58
|
- !ruby/object:Gem::Dependency
|
37
59
|
name: rspec
|
38
|
-
requirement: &
|
60
|
+
requirement: &70166568365200 !ruby/object:Gem::Requirement
|
39
61
|
none: false
|
40
62
|
requirements:
|
41
|
-
- -
|
63
|
+
- - ! '>='
|
42
64
|
- !ruby/object:Gem::Version
|
43
|
-
version:
|
65
|
+
version: '0'
|
44
66
|
type: :development
|
45
67
|
prerelease: false
|
46
|
-
version_requirements: *
|
68
|
+
version_requirements: *70166568365200
|
47
69
|
- !ruby/object:Gem::Dependency
|
48
70
|
name: bundler
|
49
|
-
requirement: &
|
71
|
+
requirement: &70166568364680 !ruby/object:Gem::Requirement
|
50
72
|
none: false
|
51
73
|
requirements:
|
52
74
|
- - ~>
|
@@ -54,10 +76,10 @@ dependencies:
|
|
54
76
|
version: 1.0.0
|
55
77
|
type: :development
|
56
78
|
prerelease: false
|
57
|
-
version_requirements: *
|
79
|
+
version_requirements: *70166568364680
|
58
80
|
- !ruby/object:Gem::Dependency
|
59
81
|
name: jeweler
|
60
|
-
requirement: &
|
82
|
+
requirement: &70166568364200 !ruby/object:Gem::Requirement
|
61
83
|
none: false
|
62
84
|
requirements:
|
63
85
|
- - ~>
|
@@ -65,10 +87,10 @@ dependencies:
|
|
65
87
|
version: 1.6.4
|
66
88
|
type: :development
|
67
89
|
prerelease: false
|
68
|
-
version_requirements: *
|
90
|
+
version_requirements: *70166568364200
|
69
91
|
- !ruby/object:Gem::Dependency
|
70
92
|
name: rcov
|
71
|
-
requirement: &
|
93
|
+
requirement: &70166568363720 !ruby/object:Gem::Requirement
|
72
94
|
none: false
|
73
95
|
requirements:
|
74
96
|
- - ! '>='
|
@@ -76,21 +98,21 @@ dependencies:
|
|
76
98
|
version: '0'
|
77
99
|
type: :development
|
78
100
|
prerelease: false
|
79
|
-
version_requirements: *
|
101
|
+
version_requirements: *70166568363720
|
80
102
|
- !ruby/object:Gem::Dependency
|
81
|
-
name:
|
82
|
-
requirement: &
|
103
|
+
name: highline
|
104
|
+
requirement: &70166568363220 !ruby/object:Gem::Requirement
|
83
105
|
none: false
|
84
106
|
requirements:
|
85
|
-
- -
|
107
|
+
- - ! '>='
|
86
108
|
- !ruby/object:Gem::Version
|
87
|
-
version: 0
|
109
|
+
version: '0'
|
88
110
|
type: :development
|
89
111
|
prerelease: false
|
90
|
-
version_requirements: *
|
112
|
+
version_requirements: *70166568363220
|
91
113
|
- !ruby/object:Gem::Dependency
|
92
|
-
name:
|
93
|
-
requirement: &
|
114
|
+
name: guard
|
115
|
+
requirement: &70166568362700 !ruby/object:Gem::Requirement
|
94
116
|
none: false
|
95
117
|
requirements:
|
96
118
|
- - ! '>='
|
@@ -98,10 +120,21 @@ dependencies:
|
|
98
120
|
version: '0'
|
99
121
|
type: :development
|
100
122
|
prerelease: false
|
101
|
-
version_requirements: *
|
123
|
+
version_requirements: *70166568362700
|
102
124
|
- !ruby/object:Gem::Dependency
|
103
|
-
name:
|
104
|
-
requirement: &
|
125
|
+
name: guard-rspec
|
126
|
+
requirement: &70166568362160 !ruby/object:Gem::Requirement
|
127
|
+
none: false
|
128
|
+
requirements:
|
129
|
+
- - ! '>='
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0'
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: *70166568362160
|
135
|
+
- !ruby/object:Gem::Dependency
|
136
|
+
name: ruby-debug19
|
137
|
+
requirement: &70166568331120 !ruby/object:Gem::Requirement
|
105
138
|
none: false
|
106
139
|
requirements:
|
107
140
|
- - ! '>='
|
@@ -109,7 +142,7 @@ dependencies:
|
|
109
142
|
version: '0'
|
110
143
|
type: :development
|
111
144
|
prerelease: false
|
112
|
-
version_requirements: *
|
145
|
+
version_requirements: *70166568331120
|
113
146
|
description: ''
|
114
147
|
email: ampearson@gmail.com
|
115
148
|
executables: []
|
@@ -117,16 +150,16 @@ extensions: []
|
|
117
150
|
extra_rdoc_files:
|
118
151
|
- LICENSE.txt
|
119
152
|
- README.md
|
120
|
-
- README.rdoc
|
121
153
|
files:
|
122
154
|
- .document
|
123
155
|
- .rspec
|
124
156
|
- .rvmrc
|
157
|
+
- CHANGELOG.md
|
125
158
|
- Gemfile
|
126
159
|
- Gemfile.lock
|
160
|
+
- Guardfile
|
127
161
|
- LICENSE.txt
|
128
162
|
- README.md
|
129
|
-
- README.rdoc
|
130
163
|
- Rakefile
|
131
164
|
- VERSION
|
132
165
|
- lib/robut-rdio.rb
|
@@ -134,6 +167,12 @@ files:
|
|
134
167
|
- lib/server/public/css/style.css
|
135
168
|
- lib/server/public/css/style_after.css
|
136
169
|
- lib/server/public/images/background.png
|
170
|
+
- lib/server/public/images/buffering.png
|
171
|
+
- lib/server/public/images/circle-east.png
|
172
|
+
- lib/server/public/images/circle-pause.png
|
173
|
+
- lib/server/public/images/circle-play.png
|
174
|
+
- lib/server/public/images/circle-stop.png
|
175
|
+
- lib/server/public/images/disconnected.png
|
137
176
|
- lib/server/public/images/no-album.png
|
138
177
|
- lib/server/public/index.html
|
139
178
|
- lib/server/public/js/libs/dd_belatedpng.js
|
@@ -145,8 +184,11 @@ files:
|
|
145
184
|
- lib/tasks/shell.rake
|
146
185
|
- plugin-tester.rb
|
147
186
|
- robut-rdio.gemspec
|
187
|
+
- spec/integration/robut-rdio_spec.rb
|
148
188
|
- spec/robut-rdio_spec.rb
|
189
|
+
- spec/server_spec.rb
|
149
190
|
- spec/spec_helper.rb
|
191
|
+
- spec/support/shared_examples.rb
|
150
192
|
homepage: http://github.com/radamant/robut-rdio
|
151
193
|
licenses:
|
152
194
|
- MIT
|
@@ -162,7 +204,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
162
204
|
version: '0'
|
163
205
|
segments:
|
164
206
|
- 0
|
165
|
-
hash:
|
207
|
+
hash: -2125228418615372686
|
166
208
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
167
209
|
none: false
|
168
210
|
requirements:
|
data/README.rdoc
DELETED
@@ -1,19 +0,0 @@
|
|
1
|
-
= robut-rdio
|
2
|
-
|
3
|
-
Description goes here.
|
4
|
-
|
5
|
-
== Contributing to robut-rdio
|
6
|
-
|
7
|
-
* Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet
|
8
|
-
* Check out the issue tracker to make sure someone already hasn't requested it and/or contributed it
|
9
|
-
* Fork the project
|
10
|
-
* Start a feature/bugfix branch
|
11
|
-
* Commit and push until you are happy with your contribution
|
12
|
-
* Make sure to add tests for it. This is important so I don't break it in a future version unintentionally.
|
13
|
-
* Please try not to mess with the Rakefile, version, or history. If you want to have your own version, or is otherwise necessary, that is fine, but please isolate to its own commit so I can cherry-pick around it.
|
14
|
-
|
15
|
-
== Copyright
|
16
|
-
|
17
|
-
Copyright (c) 2011 Adam Pearson. See LICENSE.txt for
|
18
|
-
further details.
|
19
|
-
|