nestling 0.1.0 → 0.1.1
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/.travis.yml +7 -0
- data/lib/nestling/client.rb +4 -4
- data/lib/nestling/collection.rb +3 -1
- data/lib/nestling/version.rb +1 -1
- data/lib/nestling.rb +1 -1
- data/nestling.gemspec +3 -1
- data/test/helper.rb +3 -3
- data/test/test_client.rb +5 -5
- data/test/test_collection.rb +7 -0
- metadata +30 -7
data/.travis.yml
ADDED
data/lib/nestling/client.rb
CHANGED
@@ -6,10 +6,10 @@ module Nestling
|
|
6
6
|
USER_AGENT = "Nestling/#{Version::STRING}"
|
7
7
|
DEFAULT_PARAMS = { :format => 'json' }
|
8
8
|
|
9
|
-
def initialize(api_key =
|
9
|
+
def initialize(api_key = nil)
|
10
10
|
@http = Net::HTTP.new(HOST)
|
11
|
-
@api_key = api_key
|
12
|
-
@default_params = { :api_key => api_key }.merge!(DEFAULT_PARAMS)
|
11
|
+
@api_key = api_key || Nestling.api_key
|
12
|
+
@default_params = { :api_key => @api_key }.merge!(DEFAULT_PARAMS)
|
13
13
|
end
|
14
14
|
|
15
15
|
def artist(id)
|
@@ -35,7 +35,7 @@ module Nestling
|
|
35
35
|
def get(meth, params = {})
|
36
36
|
path = "/api/v4/#{meth}?" << convert_params(params)
|
37
37
|
response, data = @http.get(path, {'User-Agent' => USER_AGENT})
|
38
|
-
hash =
|
38
|
+
hash = MultiJson.decode(data)
|
39
39
|
|
40
40
|
if (code = hash["response"]["status"]["code"].to_i) != 0
|
41
41
|
raise ERRNO[code], hash["response"]["status"]["message"]
|
data/lib/nestling/collection.rb
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
module Nestling
|
2
2
|
class Collection < Array
|
3
|
-
|
3
|
+
attr_reader :results, :start, :session_id, :type
|
4
|
+
|
5
|
+
alias :total :results
|
4
6
|
|
5
7
|
def initialize(options = {}, *args)
|
6
8
|
options = Nestling::Hash.new(options).symbolize_keys!
|
data/lib/nestling/version.rb
CHANGED
data/lib/nestling.rb
CHANGED
data/nestling.gemspec
CHANGED
@@ -17,7 +17,9 @@ Gem::Specification.new do |s|
|
|
17
17
|
s.executables = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }
|
18
18
|
s.require_paths = ["lib"]
|
19
19
|
|
20
|
-
s.add_dependency "
|
20
|
+
s.add_dependency "multi_json", "~> 1.0.3"
|
21
|
+
s.add_development_dependency "rake", "~> 0.9"
|
22
|
+
s.add_development_dependency "minitest", "~> 2.6.0"
|
21
23
|
s.add_development_dependency "mocha", "~> 0.9.12"
|
22
24
|
end
|
23
25
|
|
data/test/helper.rb
CHANGED
@@ -8,11 +8,11 @@ def stub_http_get(ret)
|
|
8
8
|
end
|
9
9
|
|
10
10
|
def expect_request(resp, req, opts = nil)
|
11
|
-
resp =
|
11
|
+
resp = MultiJson.decode(resp)
|
12
12
|
if opts
|
13
|
-
Client.any_instance.expects(:get).with(req, opts).returns(resp)
|
13
|
+
Nestling::Client.any_instance.expects(:get).with(req, opts).returns(resp)
|
14
14
|
else
|
15
|
-
Client.any_instance.expects(:get).with(req, anything).returns(resp)
|
15
|
+
Nestling::Client.any_instance.expects(:get).with(req, anything).returns(resp)
|
16
16
|
end
|
17
17
|
end
|
18
18
|
|
data/test/test_client.rb
CHANGED
@@ -22,13 +22,13 @@ class TestClient < MiniTest::Unit::TestCase
|
|
22
22
|
def test_default_api_key
|
23
23
|
Nestling.api_key = nil # sanity
|
24
24
|
Nestling.api_key = 'bar'
|
25
|
-
assert_equal Client.new.api_key
|
25
|
+
assert_equal 'bar', Client.new.api_key
|
26
26
|
end
|
27
27
|
|
28
28
|
def test_default_api_key_through_namespace_module
|
29
29
|
Nestling.api_key = nil # sanity
|
30
30
|
Nestling.api_key = 'baz'
|
31
|
-
assert_equal Nestling.new.api_key
|
31
|
+
assert_equal 'baz', Nestling.new.api_key
|
32
32
|
end
|
33
33
|
|
34
34
|
def test_artist_returns_artist_object
|
@@ -68,12 +68,12 @@ class TestClient < MiniTest::Unit::TestCase
|
|
68
68
|
}
|
69
69
|
EOS
|
70
70
|
stub_http_get response
|
71
|
-
assert_equal
|
71
|
+
assert_equal MultiJson.decode(response), Client.new('foo').get('bar')
|
72
72
|
end
|
73
73
|
|
74
74
|
def test_sends_user_agent
|
75
|
-
Net::HTTP.any_instance.expects(:get)
|
76
|
-
.with(anything, { 'User-Agent' => Client::USER_AGENT} )
|
75
|
+
Net::HTTP.any_instance.expects(:get) \
|
76
|
+
.with(anything, { 'User-Agent' => Client::USER_AGENT} ) \
|
77
77
|
.returns([{}, <<-EOS
|
78
78
|
{
|
79
79
|
"response": {
|
data/test/test_collection.rb
CHANGED
@@ -45,6 +45,13 @@ class TestErrors < MiniTest::Unit::TestCase
|
|
45
45
|
assert_equal 23, Collection.new(@sym_options_with_total).results
|
46
46
|
end
|
47
47
|
|
48
|
+
def test_collection_has_total_accessor_for_results
|
49
|
+
assert_equal 10, Collection.new(@str_options).total
|
50
|
+
assert_equal 10, Collection.new(@sym_options).total
|
51
|
+
assert_equal 23, Collection.new(@str_options_with_total).total
|
52
|
+
assert_equal 23, Collection.new(@sym_options_with_total).total
|
53
|
+
end
|
54
|
+
|
48
55
|
def test_collection_assigns_start
|
49
56
|
assert_equal 2, Collection.new(@str_options).start
|
50
57
|
assert_equal 2, Collection.new(@sym_options).start
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nestling
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -12,19 +12,41 @@ cert_chain: []
|
|
12
12
|
date: 2011-09-23 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
|
-
name:
|
16
|
-
requirement: &
|
15
|
+
name: multi_json
|
16
|
+
requirement: &70331940832920 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
20
20
|
- !ruby/object:Gem::Version
|
21
|
-
version: 1.
|
21
|
+
version: 1.0.3
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70331940832920
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: rake
|
27
|
+
requirement: &70331940832240 !ruby/object:Gem::Requirement
|
28
|
+
none: false
|
29
|
+
requirements:
|
30
|
+
- - ~>
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '0.9'
|
33
|
+
type: :development
|
34
|
+
prerelease: false
|
35
|
+
version_requirements: *70331940832240
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: minitest
|
38
|
+
requirement: &70331940831560 !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
40
|
+
requirements:
|
41
|
+
- - ~>
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: 2.6.0
|
44
|
+
type: :development
|
45
|
+
prerelease: false
|
46
|
+
version_requirements: *70331940831560
|
25
47
|
- !ruby/object:Gem::Dependency
|
26
48
|
name: mocha
|
27
|
-
requirement: &
|
49
|
+
requirement: &70331940830800 !ruby/object:Gem::Requirement
|
28
50
|
none: false
|
29
51
|
requirements:
|
30
52
|
- - ~>
|
@@ -32,7 +54,7 @@ dependencies:
|
|
32
54
|
version: 0.9.12
|
33
55
|
type: :development
|
34
56
|
prerelease: false
|
35
|
-
version_requirements: *
|
57
|
+
version_requirements: *70331940830800
|
36
58
|
description: Ruby wrapper for the EchoNest API
|
37
59
|
email:
|
38
60
|
- tob@tobiassvensson.co.uk
|
@@ -41,6 +63,7 @@ extensions: []
|
|
41
63
|
extra_rdoc_files: []
|
42
64
|
files:
|
43
65
|
- .gitignore
|
66
|
+
- .travis.yml
|
44
67
|
- Gemfile
|
45
68
|
- LICENSE
|
46
69
|
- README.md
|