kanye 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,38 @@
1
+ require 'spec_helper'
2
+
3
+ describe Track do
4
+ before do
5
+ @track = Track.new(:id => 'id', :key => 'key', :artist => 'Alan Braxe', :title => 'Rubicon', :cookie => 'cookie')
6
+ end
7
+
8
+ describe "url" do
9
+ it "should contain contain :id and :key" do
10
+ @track.url.should == "http://hypem.com/serve/play/id/key.mp3"
11
+ end
12
+ end
13
+
14
+ describe "to_s" do
15
+ it "should display the key, artist, and title" do
16
+ @track.to_s.should == "(key, Rubicon, Alan Braxe)"
17
+ end
18
+ end
19
+
20
+ describe "download!" do
21
+ before do
22
+ HTTParty.stub!(:get)
23
+ File.stub!(:open)
24
+ Mp3Info.stub!(:open)
25
+ end
26
+
27
+ it "should request mp3 from hypem with cookie" do
28
+ HTTParty.should_receive(:get).with(@track.url, {:headers => {"cookie" => @track.cookie}})
29
+ @track.download!
30
+ end
31
+
32
+ # This spec could use some love
33
+ it "should set ID3 tags" do
34
+ @track.should_receive(:set_id3_tags!)
35
+ @track.download!
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,52 @@
1
+ require 'spec_helper'
2
+
3
+ describe Kanye do
4
+ describe '#parse_response' do
5
+ let(:html) { File.open('spec/data/sample.html', 'r').read }
6
+
7
+ before do
8
+ resp = mock(:response,
9
+ :parsed_response => html,
10
+ :headers => {'set-cookie' => 'yesplease'})
11
+
12
+ HTTParty.stub!(:get).and_return(resp)
13
+ end
14
+
15
+ let(:kanye) { Kanye.new('test') }
16
+
17
+ describe 'format strings' do
18
+ results = [
19
+ ["Rusko","Jahova","ta42","9ecc8d868239653e7c99a6891a878e01","yesplease"],
20
+ ["Rusko","Everyday","19n3n","c63b38f6714b7273a2c3f28c3e86ea54","yesplease"],
21
+ ["Washed Out feat. Caroline Polachek","You and I","12xxd","c9d3b9a12d0979becf154821c191b151","yesplease"],
22
+ ["Le Castle Vania","DJ Falcon + Thomas Bangalter Together (Le Castle Vania + Computer Club's Summer Bootleg Mix)","1av33","87c503dcc8bc46761a56b7bedfbb1697","yesplease"],
23
+ ["Earl Da Grey","Kick It","1ar7m","dfd3c3f06d2fc5b5a4e0bf22f91982bc","yesplease"],
24
+ ["Earl Da Grey","Heavenly Motion","1ar7k","0b9ccedbaacdb63c4c7d7344a149cde8","yesplease"],
25
+ ["Earl Da Grey","Millionaire Radio","1ar7g","8607e44740e600769d4e3fa2e8ded210","yesplease"],
26
+ ["Earl Da Grey","Taboo","1ar7h","734faa71e9072f3e7fa6ead9909e93cf","yesplease"],
27
+ ["James Varnish","Compare (Lifelike Remix)","1armr","a4fe6cc8ce6b210def2191cc9b705ed3","yesplease"],
28
+ ["Jamaica","I Think I Like U 2 (Breakbot Remix)","1161m","baf3e68ccf6ae0ccc7be7f0ef1554969","yesplease"],
29
+ ["Radiohead","Supercollider","1aqn0","db5724fa6e4c78dcfa49abed5320142a","yesplease"],
30
+ ["Dillon Francis","Beautician","1ag12","d6e55add48919d72c08bb11fc81d998d","yesplease"],
31
+ ["The Human League","Never Let Me Go (Aeroplane Remix Edit)","19men","d53d93bd145589d4a9bd649cdd8179da","yesplease"],
32
+ ["His Majesty Andre","Clubs","1as5w","bb17f53d899643c92020f7f1797b36a5","yesplease"],
33
+ ["Cassian","Getting High (Original Mix)","1as5v","2182d0f18240433b372d8febd08b8dd3","yesplease"],
34
+ ["Les Rythmes Digitales","About Funk","1as5z","3b8198e97bda14db73254b6febbdf42d","yesplease"],
35
+ ["BeatauCue","Behold","1873c","1113b0b95c8ea988661b8bbbf5260d45","yesplease"],
36
+ ["Toddla T","Take It Back (Dillon Francis Remix)","1ancc","ef8efa46115c08cef60b7241c7d82c7c","yesplease"],
37
+ ["Danger Granger","Daniel is a Wild Cat (Porter Robinson vs Bat For Lashes)","1asad","65257400b1a1266adb3173f029bbb1a8","yesplease"],
38
+ ["DEFEP","Rolling it Right (Afrojack vs Adele)","1asae","63cbcb3a740e1ad0cb7163b23e33a9d6","yesplease"]
39
+ ]
40
+ results.each_with_index do |track, index|
41
+ describe "track No. #{index+1}" do
42
+ subject { kanye.tracks[index] }
43
+ its(:artist) { should == results[index][0] }
44
+ its(:title) { should == results[index][1] }
45
+ its(:id) { should == results[index][2] }
46
+ its(:key) { should == results[index][3] }
47
+ its(:cookie) { should == "yesplease" }
48
+ end
49
+ end
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,22 @@
1
+ require 'rubygems'
2
+ require 'bundler'
3
+ begin
4
+ Bundler.setup(:default, :development)
5
+ rescue Bundler::BundlerError => e
6
+ $stderr.puts e.message
7
+ $stderr.puts "Run `bundle install` to install missing gems"
8
+ exit e.status_code
9
+ end
10
+
11
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
12
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
13
+ require 'rspec'
14
+ require 'kanye'
15
+
16
+ # Requires supporting files with custom matchers and macros, etc,
17
+ # in ./support/ and its subdirectories.
18
+ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
19
+
20
+ RSpec.configure do |config|
21
+
22
+ end
metadata ADDED
@@ -0,0 +1,276 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: kanye
3
+ version: !ruby/object:Gem::Version
4
+ hash: 27
5
+ prerelease:
6
+ segments:
7
+ - 0
8
+ - 1
9
+ - 0
10
+ version: 0.1.0
11
+ platform: ruby
12
+ authors:
13
+ - Sam Vincent
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2011-05-24 00:00:00 -07:00
19
+ default_executable: kanye
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
22
+ name: httparty
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ hash: 11
30
+ segments:
31
+ - 0
32
+ - 7
33
+ - 4
34
+ version: 0.7.4
35
+ type: :runtime
36
+ version_requirements: *id001
37
+ - !ruby/object:Gem::Dependency
38
+ name: sqlite3
39
+ prerelease: false
40
+ requirement: &id002 !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ">="
44
+ - !ruby/object:Gem::Version
45
+ hash: 3
46
+ segments:
47
+ - 0
48
+ version: "0"
49
+ type: :runtime
50
+ version_requirements: *id002
51
+ - !ruby/object:Gem::Dependency
52
+ name: character-encodings
53
+ prerelease: false
54
+ requirement: &id003 !ruby/object:Gem::Requirement
55
+ none: false
56
+ requirements:
57
+ - - ">="
58
+ - !ruby/object:Gem::Version
59
+ hash: 3
60
+ segments:
61
+ - 0
62
+ version: "0"
63
+ type: :runtime
64
+ version_requirements: *id003
65
+ - !ruby/object:Gem::Dependency
66
+ name: nokogiri
67
+ prerelease: false
68
+ requirement: &id004 !ruby/object:Gem::Requirement
69
+ none: false
70
+ requirements:
71
+ - - ">="
72
+ - !ruby/object:Gem::Version
73
+ hash: 3
74
+ segments:
75
+ - 0
76
+ version: "0"
77
+ type: :runtime
78
+ version_requirements: *id004
79
+ - !ruby/object:Gem::Dependency
80
+ name: ruby-mp3info
81
+ prerelease: false
82
+ requirement: &id005 !ruby/object:Gem::Requirement
83
+ none: false
84
+ requirements:
85
+ - - ">="
86
+ - !ruby/object:Gem::Version
87
+ hash: 3
88
+ segments:
89
+ - 0
90
+ version: "0"
91
+ type: :runtime
92
+ version_requirements: *id005
93
+ - !ruby/object:Gem::Dependency
94
+ name: rspec
95
+ prerelease: false
96
+ requirement: &id006 !ruby/object:Gem::Requirement
97
+ none: false
98
+ requirements:
99
+ - - ">="
100
+ - !ruby/object:Gem::Version
101
+ hash: 7
102
+ segments:
103
+ - 2
104
+ version: "2"
105
+ type: :development
106
+ version_requirements: *id006
107
+ - !ruby/object:Gem::Dependency
108
+ name: bundler
109
+ prerelease: false
110
+ requirement: &id007 !ruby/object:Gem::Requirement
111
+ none: false
112
+ requirements:
113
+ - - ~>
114
+ - !ruby/object:Gem::Version
115
+ hash: 23
116
+ segments:
117
+ - 1
118
+ - 0
119
+ - 0
120
+ version: 1.0.0
121
+ type: :development
122
+ version_requirements: *id007
123
+ - !ruby/object:Gem::Dependency
124
+ name: jeweler
125
+ prerelease: false
126
+ requirement: &id008 !ruby/object:Gem::Requirement
127
+ none: false
128
+ requirements:
129
+ - - ~>
130
+ - !ruby/object:Gem::Version
131
+ hash: 7
132
+ segments:
133
+ - 1
134
+ - 5
135
+ - 2
136
+ version: 1.5.2
137
+ type: :development
138
+ version_requirements: *id008
139
+ - !ruby/object:Gem::Dependency
140
+ name: httparty
141
+ prerelease: false
142
+ requirement: &id009 !ruby/object:Gem::Requirement
143
+ none: false
144
+ requirements:
145
+ - - ">="
146
+ - !ruby/object:Gem::Version
147
+ hash: 11
148
+ segments:
149
+ - 0
150
+ - 7
151
+ - 4
152
+ version: 0.7.4
153
+ type: :runtime
154
+ version_requirements: *id009
155
+ - !ruby/object:Gem::Dependency
156
+ name: sqlite3
157
+ prerelease: false
158
+ requirement: &id010 !ruby/object:Gem::Requirement
159
+ none: false
160
+ requirements:
161
+ - - ">="
162
+ - !ruby/object:Gem::Version
163
+ hash: 3
164
+ segments:
165
+ - 0
166
+ version: "0"
167
+ type: :runtime
168
+ version_requirements: *id010
169
+ - !ruby/object:Gem::Dependency
170
+ name: character-encodings
171
+ prerelease: false
172
+ requirement: &id011 !ruby/object:Gem::Requirement
173
+ none: false
174
+ requirements:
175
+ - - ">="
176
+ - !ruby/object:Gem::Version
177
+ hash: 3
178
+ segments:
179
+ - 0
180
+ version: "0"
181
+ type: :runtime
182
+ version_requirements: *id011
183
+ - !ruby/object:Gem::Dependency
184
+ name: nokogiri
185
+ prerelease: false
186
+ requirement: &id012 !ruby/object:Gem::Requirement
187
+ none: false
188
+ requirements:
189
+ - - ">"
190
+ - !ruby/object:Gem::Version
191
+ hash: 7
192
+ segments:
193
+ - 1
194
+ - 4
195
+ - 0
196
+ version: 1.4.0
197
+ type: :runtime
198
+ version_requirements: *id012
199
+ - !ruby/object:Gem::Dependency
200
+ name: ruby-mp3info
201
+ prerelease: false
202
+ requirement: &id013 !ruby/object:Gem::Requirement
203
+ none: false
204
+ requirements:
205
+ - - ">"
206
+ - !ruby/object:Gem::Version
207
+ hash: 7
208
+ segments:
209
+ - 0
210
+ - 6
211
+ - 0
212
+ version: 0.6.0
213
+ type: :runtime
214
+ version_requirements: *id013
215
+ description: Ruby HypeM utility
216
+ email: sam.vincent@mac.com
217
+ executables:
218
+ - kanye
219
+ extensions: []
220
+
221
+ extra_rdoc_files:
222
+ - LICENSE.txt
223
+ - README.rdoc
224
+ files:
225
+ - .document
226
+ - Gemfile
227
+ - LICENSE.txt
228
+ - README.rdoc
229
+ - Rakefile
230
+ - VERSION
231
+ - bin/kanye
232
+ - lib/kanye.rb
233
+ - lib/kanye/history.rb
234
+ - lib/kanye/track.rb
235
+ - spec/data/sample.html
236
+ - spec/kanye/track_spec.rb
237
+ - spec/kanye_spec.rb
238
+ - spec/spec_helper.rb
239
+ has_rdoc: true
240
+ homepage: http://github.com/samvincent/kanye
241
+ licenses:
242
+ - MIT
243
+ post_install_message:
244
+ rdoc_options: []
245
+
246
+ require_paths:
247
+ - lib
248
+ required_ruby_version: !ruby/object:Gem::Requirement
249
+ none: false
250
+ requirements:
251
+ - - ">="
252
+ - !ruby/object:Gem::Version
253
+ hash: 3
254
+ segments:
255
+ - 0
256
+ version: "0"
257
+ required_rubygems_version: !ruby/object:Gem::Requirement
258
+ none: false
259
+ requirements:
260
+ - - ">="
261
+ - !ruby/object:Gem::Version
262
+ hash: 3
263
+ segments:
264
+ - 0
265
+ version: "0"
266
+ requirements: []
267
+
268
+ rubyforge_project:
269
+ rubygems_version: 1.6.2
270
+ signing_key:
271
+ specification_version: 3
272
+ summary: Ruby HypeM utility
273
+ test_files:
274
+ - spec/kanye/track_spec.rb
275
+ - spec/kanye_spec.rb
276
+ - spec/spec_helper.rb