bandcamp_api 0.1.0 → 0.2.0
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 +4 -3
- data/lib/bandcamp/album.rb +6 -1
- data/lib/bandcamp/band.rb +7 -1
- data/lib/bandcamp/track.rb +8 -3
- data/lib/bandcamp/version.rb +1 -1
- data/spec/album_spec.rb +7 -0
- data/spec/band_spec.rb +6 -0
- data/spec/spec_helper.rb +2 -0
- data/spec/support/be_json.rb +24 -0
- data/spec/track_spec.rb +8 -0
- metadata +4 -2
data/README.md
CHANGED
@@ -62,11 +62,12 @@ ape_to_angel = Bandcamp.get.album 2909726980
|
|
62
62
|
=> #<Bandcamp::Album:0x00000001e20c60>
|
63
63
|
```
|
64
64
|
|
65
|
+
Bands, Albums and Tracks all have a #to_json method that does what you would
|
66
|
+
expect a to_json method to do.
|
67
|
+
|
65
68
|
## TODO list
|
66
69
|
|
67
|
-
*
|
68
|
-
they are from and what band did them. Same sort of thing for the other
|
69
|
-
objects.
|
70
|
+
* A nice interface for requesting discographies.
|
70
71
|
* Rails 3 integration so you can use these ojects with partials and form_for.
|
71
72
|
* Duck typing helpers along the lines of [ActiveSupport's
|
72
73
|
#acts_like?](http://apidock.com/rails/Object/acts_like%3F)
|
data/lib/bandcamp/album.rb
CHANGED
@@ -9,7 +9,8 @@ module Bandcamp
|
|
9
9
|
include Associated
|
10
10
|
|
11
11
|
def initialize album_hash
|
12
|
-
|
12
|
+
@album_hash = album_hash
|
13
|
+
to_methods @album_hash
|
13
14
|
if instance_variable_defined? "@tracks"
|
14
15
|
@tracks = @tracks.map{|track| Track.new(track)}
|
15
16
|
end
|
@@ -19,5 +20,9 @@ module Bandcamp
|
|
19
20
|
retrieve_associated :band
|
20
21
|
end
|
21
22
|
|
23
|
+
def to_json
|
24
|
+
MultiJson.encode @album_hash
|
25
|
+
end
|
26
|
+
|
22
27
|
end
|
23
28
|
end
|
data/lib/bandcamp/band.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
require 'multi_json'
|
1
2
|
require 'bandcamp/methodical'
|
2
3
|
|
3
4
|
module Bandcamp
|
@@ -5,7 +6,12 @@ module Bandcamp
|
|
5
6
|
include Methodical
|
6
7
|
|
7
8
|
def initialize attrs_hash
|
8
|
-
|
9
|
+
@attrs_hash = attrs_hash
|
10
|
+
to_methods @attrs_hash
|
11
|
+
end
|
12
|
+
|
13
|
+
def to_json
|
14
|
+
MultiJson.encode @attrs_hash
|
9
15
|
end
|
10
16
|
|
11
17
|
end
|
data/lib/bandcamp/track.rb
CHANGED
@@ -6,11 +6,12 @@ require 'bandcamp/associated'
|
|
6
6
|
module Bandcamp
|
7
7
|
class Track
|
8
8
|
|
9
|
-
include
|
10
|
-
include
|
9
|
+
include Methodical
|
10
|
+
include Associated
|
11
11
|
|
12
12
|
def initialize attrs
|
13
|
-
|
13
|
+
@attrs_hash = attrs
|
14
|
+
to_methods @attrs_hash
|
14
15
|
end
|
15
16
|
|
16
17
|
def paid?
|
@@ -29,5 +30,9 @@ module Bandcamp
|
|
29
30
|
retrieve_associated :album
|
30
31
|
end
|
31
32
|
|
33
|
+
def to_json
|
34
|
+
MultiJson.encode @attrs_hash
|
35
|
+
end
|
36
|
+
|
32
37
|
end
|
33
38
|
end
|
data/lib/bandcamp/version.rb
CHANGED
data/spec/album_spec.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
require 'support/be_json'
|
1
2
|
require 'multi_json'
|
2
3
|
require 'bandcamp/band'
|
3
4
|
require 'bandcamp/album'
|
@@ -40,5 +41,11 @@ module Bandcamp
|
|
40
41
|
end
|
41
42
|
end
|
42
43
|
|
44
|
+
describe "#to_json" do
|
45
|
+
it "returns json" do
|
46
|
+
expect(album.to_json).to be_json
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
43
50
|
end
|
44
51
|
end
|
data/spec/band_spec.rb
CHANGED
data/spec/spec_helper.rb
CHANGED
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'json'
|
2
|
+
|
3
|
+
RSpec::Matchers.define :be_json do |expected|
|
4
|
+
match do |actual|
|
5
|
+
begin
|
6
|
+
JSON.parse actual
|
7
|
+
true
|
8
|
+
rescue JSON::ParserError
|
9
|
+
false
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
failure_message_for_should do |actual|
|
14
|
+
"expected that #{actual} would be JSON"
|
15
|
+
end
|
16
|
+
|
17
|
+
failure_message_for_should_not do |actual|
|
18
|
+
"expected that #{actual} would not be JSON"
|
19
|
+
end
|
20
|
+
|
21
|
+
description do
|
22
|
+
"be JSON"
|
23
|
+
end
|
24
|
+
end
|
data/spec/track_spec.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'spec_helper'
|
2
|
+
require 'support/be_json'
|
2
3
|
require 'bandcamp/track'
|
3
4
|
require 'multi_json'
|
4
5
|
|
@@ -55,6 +56,13 @@ module Bandcamp
|
|
55
56
|
expect(track.album).to be_an Album
|
56
57
|
end
|
57
58
|
end
|
59
|
+
|
60
|
+
describe "#to_json" do
|
61
|
+
it "returns json" do
|
62
|
+
expect(track.to_json).to be_json
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
58
66
|
end
|
59
67
|
|
60
68
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bandcamp_api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-03-05 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rspec
|
@@ -88,6 +88,7 @@ files:
|
|
88
88
|
- spec/methodic_spec.rb
|
89
89
|
- spec/request_spec.rb
|
90
90
|
- spec/spec_helper.rb
|
91
|
+
- spec/support/be_json.rb
|
91
92
|
- spec/track_spec.rb
|
92
93
|
homepage:
|
93
94
|
licenses: []
|
@@ -135,4 +136,5 @@ test_files:
|
|
135
136
|
- spec/methodic_spec.rb
|
136
137
|
- spec/request_spec.rb
|
137
138
|
- spec/spec_helper.rb
|
139
|
+
- spec/support/be_json.rb
|
138
140
|
- spec/track_spec.rb
|