hypem 0.1.2 → 0.1.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.
- data/README.md +1 -1
- data/lib/hypem/blog.rb +5 -2
- data/lib/hypem/playlist.rb +20 -13
- data/lib/hypem/version.rb +1 -1
- data/spec/blog_spec.rb +7 -1
- data/spec/playlist_spec.rb +27 -16
- metadata +15 -15
data/README.md
CHANGED
|
@@ -51,7 +51,7 @@ This is an unoffical Ruby gem for the **Hype Machine** read-only API. It support
|
|
|
51
51
|
</tbody>
|
|
52
52
|
</table>
|
|
53
53
|
|
|
54
|
-
Each playlist has a `tracks` attribute containing an array of `Hypem::Tracks`'s. Pagination is supported with the `.next_page` and `.prev_page` methods.
|
|
54
|
+
Each playlist has a `tracks` attribute containing an array of `Hypem::Tracks`'s. Pagination is supported with the `.next_page` and `.prev_page`, `page(num)` methods.
|
|
55
55
|
|
|
56
56
|
******
|
|
57
57
|
|
data/lib/hypem/blog.rb
CHANGED
|
@@ -13,8 +13,11 @@ module Hypem
|
|
|
13
13
|
end
|
|
14
14
|
|
|
15
15
|
def get_info
|
|
16
|
-
|
|
17
|
-
|
|
16
|
+
unless @has_info
|
|
17
|
+
response = Request.new("/api/get_site_info?siteid=#{@id}").get.response.body
|
|
18
|
+
update_from_response(response)
|
|
19
|
+
@has_info = true
|
|
20
|
+
end
|
|
18
21
|
return self
|
|
19
22
|
end
|
|
20
23
|
|
data/lib/hypem/playlist.rb
CHANGED
|
@@ -5,7 +5,8 @@ module Hypem
|
|
|
5
5
|
attr_accessor :path, :tracks
|
|
6
6
|
attr_reader :extended
|
|
7
7
|
|
|
8
|
-
def initialize(type,arg,page=
|
|
8
|
+
def initialize(type,arg,page=nil)
|
|
9
|
+
page = 1 if page.nil?
|
|
9
10
|
@type = type
|
|
10
11
|
@arg = arg
|
|
11
12
|
@page = page
|
|
@@ -29,6 +30,10 @@ module Hypem
|
|
|
29
30
|
Playlist.new(@type,@arg,@page-1).get
|
|
30
31
|
end
|
|
31
32
|
|
|
33
|
+
def page(num)
|
|
34
|
+
Playlist.new(@type,@arg,num).get
|
|
35
|
+
end
|
|
36
|
+
|
|
32
37
|
def self.create_url(tracks)
|
|
33
38
|
raise ArgumentError if (!tracks.is_a? Array) || (!tracks.first.is_a? Hypem::Track)
|
|
34
39
|
track_params = tracks.map(&:id).join(',')
|
|
@@ -36,33 +41,35 @@ module Hypem
|
|
|
36
41
|
return Hypem::ROOT_PATH + playlist.path
|
|
37
42
|
end
|
|
38
43
|
|
|
39
|
-
def self.latest
|
|
40
|
-
Playlist.new(:time,:today).get
|
|
44
|
+
def self.latest(page=nil)
|
|
45
|
+
Playlist.new(:time,:today,page).get
|
|
41
46
|
end
|
|
42
47
|
|
|
43
|
-
def self.popular(arg=POPULAR_ARGS.first)
|
|
48
|
+
def self.popular(arg=POPULAR_ARGS.first,page=nil)
|
|
44
49
|
arg = arg.to_sym if arg.is_a? String
|
|
45
50
|
raise ArgumentError unless POPULAR_ARGS.include?(arg)
|
|
46
|
-
Playlist.new(:popular,arg).get
|
|
51
|
+
Playlist.new(:popular,arg,page).get
|
|
47
52
|
end
|
|
48
53
|
|
|
49
|
-
def self.friends_history(user)
|
|
50
|
-
Playlist.new(:people_history,user).get
|
|
54
|
+
def self.friends_history(user,page=nil)
|
|
55
|
+
Playlist.new(:people_history,user,page).get
|
|
51
56
|
end
|
|
52
57
|
|
|
53
|
-
def self.friends_favorites(user)
|
|
54
|
-
Playlist.new(:people,user).get
|
|
58
|
+
def self.friends_favorites(user,page=nil)
|
|
59
|
+
Playlist.new(:people,user,page).get
|
|
55
60
|
end
|
|
56
61
|
|
|
57
|
-
def self.tags(
|
|
58
|
-
|
|
59
|
-
Playlist.new(:tags,
|
|
62
|
+
def self.tags(list,page)
|
|
63
|
+
list = list.join(',') if list.is_a? Array
|
|
64
|
+
Playlist.new(:tags,list,page)
|
|
60
65
|
end
|
|
61
66
|
|
|
62
67
|
|
|
63
68
|
# meta method definitions for generic playlists
|
|
64
69
|
GENERIC_METHODS.each do |method|
|
|
65
|
-
define_singleton_method(method)
|
|
70
|
+
define_singleton_method(method) do |arg,page=nil|
|
|
71
|
+
Playlist.new(method,arg,page).get
|
|
72
|
+
end
|
|
66
73
|
end
|
|
67
74
|
|
|
68
75
|
end
|
data/lib/hypem/version.rb
CHANGED
data/spec/blog_spec.rb
CHANGED
|
@@ -18,7 +18,7 @@ describe Hypem::Blog do
|
|
|
18
18
|
Hypem::Blog.new('4632').id.should === 4632
|
|
19
19
|
end
|
|
20
20
|
|
|
21
|
-
describe "
|
|
21
|
+
describe "#get_info" do
|
|
22
22
|
subject do
|
|
23
23
|
VCR.use_cassette('blog') {blog.get_info}
|
|
24
24
|
end
|
|
@@ -32,6 +32,12 @@ describe Hypem::Blog do
|
|
|
32
32
|
specify {subject.last_posted.should be_a Time}
|
|
33
33
|
specify {subject.followers.should == 1345}
|
|
34
34
|
|
|
35
|
+
it "caches its response" do
|
|
36
|
+
subject
|
|
37
|
+
Hypem::Request.should_not_receive :new
|
|
38
|
+
VCR.use_cassette('blog') { blog.get_info }
|
|
39
|
+
end
|
|
40
|
+
|
|
35
41
|
end
|
|
36
42
|
end
|
|
37
43
|
|
data/spec/playlist_spec.rb
CHANGED
|
@@ -96,33 +96,33 @@ describe Hypem::Playlist do
|
|
|
96
96
|
|
|
97
97
|
describe ".blog" do
|
|
98
98
|
it "calls new with type blog" do
|
|
99
|
-
Hypem::Playlist.should_receive(:new).with(:blog,1)
|
|
100
|
-
Hypem::Playlist.blog(1)
|
|
99
|
+
Hypem::Playlist.should_receive(:new).with(:blog,1,5)
|
|
100
|
+
Hypem::Playlist.blog(1,5)
|
|
101
101
|
end
|
|
102
102
|
end
|
|
103
103
|
|
|
104
104
|
describe ".tags" do
|
|
105
105
|
it "creates a tag playlist from a string" do
|
|
106
|
-
Hypem::Playlist.should_receive(:new).with(:tags,'tag1,tag2')
|
|
107
|
-
Hypem::Playlist.tags('tag1,tag2')
|
|
106
|
+
Hypem::Playlist.should_receive(:new).with(:tags,'tag1,tag2',5)
|
|
107
|
+
Hypem::Playlist.tags('tag1,tag2',5)
|
|
108
108
|
end
|
|
109
109
|
it "creates a tag playlist from an array of strings" do
|
|
110
|
-
Hypem::Playlist.should_receive(:new).with(:tags,'tag1,tag2')
|
|
111
|
-
Hypem::Playlist.tags(['tag1','tag2'])
|
|
110
|
+
Hypem::Playlist.should_receive(:new).with(:tags,'tag1,tag2',5)
|
|
111
|
+
Hypem::Playlist.tags(['tag1','tag2'],5)
|
|
112
112
|
end
|
|
113
113
|
end
|
|
114
114
|
|
|
115
115
|
describe ".search" do
|
|
116
116
|
it "calls new with type search" do
|
|
117
|
-
Hypem::Playlist.should_receive(:new).with(:search,'query')
|
|
118
|
-
Hypem::Playlist.search('query')
|
|
117
|
+
Hypem::Playlist.should_receive(:new).with(:search,'query',5)
|
|
118
|
+
Hypem::Playlist.search('query',5)
|
|
119
119
|
end
|
|
120
120
|
end
|
|
121
121
|
|
|
122
122
|
describe ".artist" do
|
|
123
123
|
it "calls new with type artist" do
|
|
124
|
-
Hypem::Playlist.should_receive(:new).with(:artist,'name')
|
|
125
|
-
Hypem::Playlist.artist('name')
|
|
124
|
+
Hypem::Playlist.should_receive(:new).with(:artist,'name',5)
|
|
125
|
+
Hypem::Playlist.artist('name',5)
|
|
126
126
|
end
|
|
127
127
|
end
|
|
128
128
|
end
|
|
@@ -133,14 +133,25 @@ describe Hypem::Playlist do
|
|
|
133
133
|
Hypem::Playlist.stub_chain(:new,:get)
|
|
134
134
|
end
|
|
135
135
|
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
136
|
+
describe "#next_page" do
|
|
137
|
+
it "gets next page" do
|
|
138
|
+
Hypem::Playlist.should_receive(:new).with(anything,anything,2)
|
|
139
|
+
playlist.next_page
|
|
140
|
+
end
|
|
139
141
|
end
|
|
140
142
|
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
143
|
+
describe "#prev_page" do
|
|
144
|
+
it "gets previous page" do
|
|
145
|
+
Hypem::Playlist.should_receive(:new).with(anything,anything,0)
|
|
146
|
+
playlist.prev_page
|
|
147
|
+
end
|
|
148
|
+
end
|
|
149
|
+
|
|
150
|
+
describe "#page" do
|
|
151
|
+
it "gets any page number" do
|
|
152
|
+
Hypem::Playlist.should_receive(:new).with(anything,anything,5)
|
|
153
|
+
playlist.page(5)
|
|
154
|
+
end
|
|
144
155
|
end
|
|
145
156
|
|
|
146
157
|
end
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: hypem
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.1.
|
|
4
|
+
version: 0.1.3
|
|
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: 2012-05-
|
|
12
|
+
date: 2012-05-18 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: rspec
|
|
16
|
-
requirement: &
|
|
16
|
+
requirement: &70219620218660 !ruby/object:Gem::Requirement
|
|
17
17
|
none: false
|
|
18
18
|
requirements:
|
|
19
19
|
- - ~>
|
|
@@ -21,10 +21,10 @@ dependencies:
|
|
|
21
21
|
version: '2.6'
|
|
22
22
|
type: :development
|
|
23
23
|
prerelease: false
|
|
24
|
-
version_requirements: *
|
|
24
|
+
version_requirements: *70219620218660
|
|
25
25
|
- !ruby/object:Gem::Dependency
|
|
26
26
|
name: vcr
|
|
27
|
-
requirement: &
|
|
27
|
+
requirement: &70219620218200 !ruby/object:Gem::Requirement
|
|
28
28
|
none: false
|
|
29
29
|
requirements:
|
|
30
30
|
- - ~>
|
|
@@ -32,10 +32,10 @@ dependencies:
|
|
|
32
32
|
version: '2.0'
|
|
33
33
|
type: :development
|
|
34
34
|
prerelease: false
|
|
35
|
-
version_requirements: *
|
|
35
|
+
version_requirements: *70219620218200
|
|
36
36
|
- !ruby/object:Gem::Dependency
|
|
37
37
|
name: rake
|
|
38
|
-
requirement: &
|
|
38
|
+
requirement: &70219620217820 !ruby/object:Gem::Requirement
|
|
39
39
|
none: false
|
|
40
40
|
requirements:
|
|
41
41
|
- - ! '>='
|
|
@@ -43,10 +43,10 @@ dependencies:
|
|
|
43
43
|
version: '0'
|
|
44
44
|
type: :development
|
|
45
45
|
prerelease: false
|
|
46
|
-
version_requirements: *
|
|
46
|
+
version_requirements: *70219620217820
|
|
47
47
|
- !ruby/object:Gem::Dependency
|
|
48
48
|
name: faraday
|
|
49
|
-
requirement: &
|
|
49
|
+
requirement: &70219620217280 !ruby/object:Gem::Requirement
|
|
50
50
|
none: false
|
|
51
51
|
requirements:
|
|
52
52
|
- - ~>
|
|
@@ -54,10 +54,10 @@ dependencies:
|
|
|
54
54
|
version: '0.7'
|
|
55
55
|
type: :runtime
|
|
56
56
|
prerelease: false
|
|
57
|
-
version_requirements: *
|
|
57
|
+
version_requirements: *70219620217280
|
|
58
58
|
- !ruby/object:Gem::Dependency
|
|
59
59
|
name: multi_json
|
|
60
|
-
requirement: &
|
|
60
|
+
requirement: &70219620216780 !ruby/object:Gem::Requirement
|
|
61
61
|
none: false
|
|
62
62
|
requirements:
|
|
63
63
|
- - ~>
|
|
@@ -65,10 +65,10 @@ dependencies:
|
|
|
65
65
|
version: '1.1'
|
|
66
66
|
type: :runtime
|
|
67
67
|
prerelease: false
|
|
68
|
-
version_requirements: *
|
|
68
|
+
version_requirements: *70219620216780
|
|
69
69
|
- !ruby/object:Gem::Dependency
|
|
70
70
|
name: hashie
|
|
71
|
-
requirement: &
|
|
71
|
+
requirement: &70219620216320 !ruby/object:Gem::Requirement
|
|
72
72
|
none: false
|
|
73
73
|
requirements:
|
|
74
74
|
- - ~>
|
|
@@ -76,7 +76,7 @@ dependencies:
|
|
|
76
76
|
version: '1.2'
|
|
77
77
|
type: :runtime
|
|
78
78
|
prerelease: false
|
|
79
|
-
version_requirements: *
|
|
79
|
+
version_requirements: *70219620216320
|
|
80
80
|
description:
|
|
81
81
|
email:
|
|
82
82
|
- jackcanderson@gmail.com
|
|
@@ -140,7 +140,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
140
140
|
version: '0'
|
|
141
141
|
segments:
|
|
142
142
|
- 0
|
|
143
|
-
hash:
|
|
143
|
+
hash: -553475673543070860
|
|
144
144
|
requirements: []
|
|
145
145
|
rubyforge_project: hypem
|
|
146
146
|
rubygems_version: 1.8.10
|