fanart_api 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +2 -1
- data/fanart_api.gemspec +1 -0
- data/lib/fanart_api/base.rb +33 -4
- data/lib/fanart_api/client.rb +2 -2
- data/lib/fanart_api/movie.rb +2 -2
- data/lib/fanart_api/music.rb +2 -2
- data/lib/fanart_api/tv.rb +2 -2
- data/lib/fanart_api/version.rb +1 -1
- data/spec/fanart_api/base_spec.rb +55 -8
- data/spec/fanart_api/movie_spec.rb +18 -7
- data/spec/fanart_api/music_spec.rb +36 -15
- data/spec/fanart_api/tv_spec.rb +18 -7
- data/spec/spec_helper.rb +13 -0
- metadata +16 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fb1a89e7dd959723e7d8858d0c62adbb23adbd8a
|
4
|
+
data.tar.gz: c1024c52abcacb924cdcae44aefe3b45596f34d7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3bee85b645cf8cba13c2d1e63af1c9ef8e35ac358efdeb9619ef78071cfffdd7d253a0b6357afe8761c378add72b686493d9e5ed4096d4ab3d43ab3904d190f8
|
7
|
+
data.tar.gz: ba3e2106f429644761c2f7567b27dc4a649281d8a23df2a1802a361e6af0a6d9c8615152e7cf9cc9d26eb80e4c716888440c009ebe5f92c5edc542bc362788e1
|
data/README.md
CHANGED
@@ -2,6 +2,7 @@
|
|
2
2
|
[![Dependency Status](https://gemnasium.com/wafcio/fanart_api.png)](https://gemnasium.com/wafcio/fanart_api)
|
3
3
|
[![Code Climate](https://codeclimate.com/github/wafcio/fanart_api.png)](https://codeclimate.com/github/wafcio/fanart_api)
|
4
4
|
[![Coverage Status](https://coveralls.io/repos/wafcio/fanart_api/badge.png)](https://coveralls.io/r/wafcio/fanart_api)
|
5
|
+
[![Gem Version](https://badge.fury.io/rb/fanart_api.png)](http://badge.fury.io/rb/fanart_api)
|
5
6
|
|
6
7
|
# FanartApi
|
7
8
|
|
@@ -28,7 +29,7 @@ The generator will install an initializer where you must past your api_key.
|
|
28
29
|
There is one entry point, in initialize you can past hash with api_key value, or leave empty:
|
29
30
|
|
30
31
|
```ruby
|
31
|
-
client = FanartApi::Client.new('API_KEY')
|
32
|
+
client = FanartApi::Client.new(api_key: 'API_KEY')
|
32
33
|
```
|
33
34
|
|
34
35
|
## Usage
|
data/fanart_api.gemspec
CHANGED
@@ -20,6 +20,7 @@ Gem::Specification.new do |spec|
|
|
20
20
|
|
21
21
|
spec.add_runtime_dependency 'confiture', '>= 0.1.4'
|
22
22
|
spec.add_runtime_dependency 'httparty', '>= 0.12.0'
|
23
|
+
spec.add_runtime_dependency 'uri_template', '~> 0.6.0'
|
23
24
|
|
24
25
|
spec.add_development_dependency 'bundler', '~> 1.3'
|
25
26
|
spec.add_development_dependency 'rake'
|
data/lib/fanart_api/base.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'httparty'
|
2
|
+
require 'uri_template'
|
2
3
|
|
3
4
|
class FanartApi::Base
|
4
5
|
include HTTParty
|
@@ -6,13 +7,41 @@ class FanartApi::Base
|
|
6
7
|
|
7
8
|
def initialize(client)
|
8
9
|
@client = client
|
10
|
+
@params = {}
|
9
11
|
end
|
10
12
|
|
11
|
-
def
|
12
|
-
@
|
13
|
+
def get(uri)
|
14
|
+
@uri_template = URITemplate.new(uri)
|
15
|
+
|
16
|
+
self
|
17
|
+
end
|
18
|
+
|
19
|
+
def params(options)
|
20
|
+
@params = options
|
21
|
+
|
22
|
+
self
|
23
|
+
end
|
24
|
+
|
25
|
+
def response
|
26
|
+
@uri_template ? self.class.get(uri, body: @options) : nil
|
27
|
+
end
|
28
|
+
|
29
|
+
def prepare_uri
|
30
|
+
@uri_template ? @uri_template.expand(@params.merge(api_key: @client.api_key)) : nil
|
31
|
+
end
|
32
|
+
|
33
|
+
def uri
|
34
|
+
uri = prepare_uri
|
35
|
+
@params.reject!{ |param| restful_param_keys(uri).include?(param.to_s) }
|
36
|
+
|
37
|
+
uri
|
38
|
+
end
|
39
|
+
|
40
|
+
def restful_param_keys(uri_expanded)
|
41
|
+
@uri_template.extract(uri_expanded).keys
|
13
42
|
end
|
14
43
|
|
15
|
-
def shared_uri
|
16
|
-
|
44
|
+
def shared_uri
|
45
|
+
'{api_key}/{id}/json/{type}/{sort}/{limit}'
|
17
46
|
end
|
18
47
|
end
|
data/lib/fanart_api/client.rb
CHANGED
@@ -3,8 +3,8 @@ require 'httparty'
|
|
3
3
|
class FanartApi::Client
|
4
4
|
attr_reader :api_key
|
5
5
|
|
6
|
-
def initialize(
|
7
|
-
@api_key = api_key ? api_key : FanartApi::Configuration.api_key
|
6
|
+
def initialize(options = {})
|
7
|
+
@api_key = options[:api_key] ? options[:api_key] : FanartApi::Configuration.api_key
|
8
8
|
end
|
9
9
|
|
10
10
|
def movie
|
data/lib/fanart_api/movie.rb
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
# documentation: http://fanart.tv/api-docs/movie-api
|
2
2
|
class FanartApi::Movie < FanartApi::Base
|
3
3
|
def find(id, type = 'all', sort = '1', limit = '2')
|
4
|
-
|
4
|
+
get("movies/#{shared_uri}").params(id: id, type: type, sort: sort, limit: limit).response
|
5
5
|
end
|
6
6
|
|
7
7
|
def update(timestamp = (Time.now - 172800).to_i)
|
8
|
-
|
8
|
+
get('newmovies/{api_key}/{timestamp}').params(timestamp: timestamp).response
|
9
9
|
end
|
10
10
|
end
|
data/lib/fanart_api/music.rb
CHANGED
@@ -2,11 +2,11 @@
|
|
2
2
|
class FanartApi::Music < FanartApi::Base
|
3
3
|
[:artist, :album, :label].each do |method_name|
|
4
4
|
define_method(method_name) do |id, type = 'all', sort = '1', limit = '2'|
|
5
|
-
|
5
|
+
get("#{method_name}/#{shared_uri}").params(id: id, type: type, sort: sort, limit: limit).response
|
6
6
|
end
|
7
7
|
end
|
8
8
|
|
9
9
|
def update(timestamp = (Time.now - 172800).to_i)
|
10
|
-
|
10
|
+
get('newmusic/{api_key}/{timestamp}').params(timestamp: timestamp).response
|
11
11
|
end
|
12
12
|
end
|
data/lib/fanart_api/tv.rb
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
# documentation: http://fanart.tv/api-docs/tv-api
|
2
2
|
class FanartApi::Tv < FanartApi::Base
|
3
3
|
def find(id, type = 'all', sort = '1', limit = '2')
|
4
|
-
|
4
|
+
get("series/#{shared_uri}").params(id: id, type: type, sort: sort, limit: limit).response
|
5
5
|
end
|
6
6
|
|
7
7
|
def update(timestamp = (Time.now - 172800).to_i)
|
8
|
-
|
8
|
+
get('newtv/{api_key}/{timestamp}').params(timestamp: timestamp).response
|
9
9
|
end
|
10
10
|
end
|
data/lib/fanart_api/version.rb
CHANGED
@@ -7,21 +7,68 @@ describe FanartApi::Base do
|
|
7
7
|
let(:klass) { ExampleClass }
|
8
8
|
let(:model) { klass.new(FanartApi::Client.new) }
|
9
9
|
|
10
|
-
describe '.
|
11
|
-
it 'should
|
12
|
-
model.
|
10
|
+
describe '.get' do
|
11
|
+
it 'should set @uri_template' do
|
12
|
+
model.get('http://example.com')
|
13
|
+
|
14
|
+
model.instance_variable_get('@uri_template').class.should == URITemplate::RFC6570
|
15
|
+
end
|
16
|
+
|
17
|
+
it 'should return self' do
|
18
|
+
model.get('http://example.com').should == model
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
describe '.params' do
|
23
|
+
it 'should set @params' do
|
24
|
+
model.params(sample: 'test')
|
25
|
+
|
26
|
+
model.instance_variable_get('@params').should == { sample: 'test' }
|
27
|
+
end
|
28
|
+
|
29
|
+
it 'should return self' do
|
30
|
+
model.params(sample: 'test').should == model
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
describe '.response' do
|
35
|
+
it 'should call get klass method' do
|
36
|
+
model.instance_variable_set('@uri_template', URITemplate.new('{api_key}/series/{id}'))
|
37
|
+
klass.should_receive(:get)
|
38
|
+
|
39
|
+
model.response
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
describe '.prepare_uri' do
|
44
|
+
it 'should receive correct uri string' do
|
45
|
+
model.instance_variable_set('@uri_template', URITemplate.new('{api_key}/series/{id}'))
|
46
|
+
|
47
|
+
model.prepare_uri.should == "#{FanartApi::Configuration.api_key}/series/"
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
describe '.uri' do
|
52
|
+
it 'should receive correct uri string' do
|
53
|
+
model.instance_variable_set('@uri_template', URITemplate.new('{api_key}/series/{id}'))
|
54
|
+
model.instance_variable_set('@params', id: '1234')
|
55
|
+
|
56
|
+
model.uri.should == "#{FanartApi::Configuration.api_key}/series/1234"
|
13
57
|
end
|
58
|
+
end
|
59
|
+
|
60
|
+
describe '.restful_param_keys' do
|
61
|
+
it 'should receive correct uri string' do
|
62
|
+
uri_template = URITemplate.new('{api_key}/series/{id}')
|
63
|
+
model.instance_variable_set('@uri_template', uri_template)
|
14
64
|
|
15
|
-
|
16
|
-
klass.new(FanartApi::Client.new('API_KEY')).api_key.should == 'API_KEY'
|
65
|
+
model.restful_param_keys(uri_template.expand).sort.should == ['api_key', 'id'].sort
|
17
66
|
end
|
18
67
|
end
|
19
68
|
|
20
69
|
describe '.shared_uri' do
|
21
70
|
it 'should return correct string' do
|
22
|
-
model.
|
23
|
-
|
24
|
-
model.shared_uri('ID', 'TYPE', 'SORT', 'LIMIT').should == "/API_KEY/ID/json/TYPE/SORT/LIMIT"
|
71
|
+
model.shared_uri.should == '{api_key}/{id}/json/{type}/{sort}/{limit}'
|
25
72
|
end
|
26
73
|
end
|
27
74
|
end
|
@@ -3,20 +3,31 @@ require 'spec_helper'
|
|
3
3
|
describe FanartApi::Movie do
|
4
4
|
let(:klass) { FanartApi::Movie }
|
5
5
|
let(:model) { klass.new(FanartApi::Client.new) }
|
6
|
+
let(:mock_model) { SampleModel.new }
|
6
7
|
|
7
8
|
describe '.find' do
|
8
|
-
it 'should call get with specific
|
9
|
-
model.
|
10
|
-
klass.should_receive(:get).with('movie/API_KEY/1234/json/all/1/2')
|
9
|
+
it 'should call get with specific params' do
|
10
|
+
model.should_receive(:get).with('movies/{api_key}/{id}/json/{type}/{sort}/{limit}').and_return(mock_model)
|
11
11
|
|
12
|
-
model.find(1234)
|
12
|
+
model.find('1234')
|
13
|
+
end
|
14
|
+
|
15
|
+
it 'should call params with specific params' do
|
16
|
+
model.should_receive(:params).with(id: '1234', type: 'all', sort: '1', limit: '2').and_return(mock_model)
|
17
|
+
|
18
|
+
model.find('1234')
|
13
19
|
end
|
14
20
|
end
|
15
21
|
|
16
22
|
describe '.update' do
|
17
|
-
it 'should call get with specific
|
18
|
-
model.
|
19
|
-
|
23
|
+
it 'should call get with specific params' do
|
24
|
+
model.should_receive(:get).with('newmovies/{api_key}/{timestamp}').and_return(mock_model)
|
25
|
+
|
26
|
+
model.update(1234)
|
27
|
+
end
|
28
|
+
|
29
|
+
it 'should call params with specific params' do
|
30
|
+
model.should_receive(:params).with(timestamp: 1234).and_return(mock_model)
|
20
31
|
|
21
32
|
model.update(1234)
|
22
33
|
end
|
@@ -3,38 +3,59 @@ require 'spec_helper'
|
|
3
3
|
describe FanartApi::Music do
|
4
4
|
let(:klass) { FanartApi::Music }
|
5
5
|
let(:model) { klass.new(FanartApi::Client.new) }
|
6
|
+
let(:mock_model) { SampleModel.new }
|
6
7
|
|
7
8
|
describe '.artist' do
|
8
|
-
it 'should call get with specific
|
9
|
-
model.
|
10
|
-
klass.should_receive(:get).with('artist/API_KEY/1234/json/all/1/2')
|
9
|
+
it 'should call get with specific params' do
|
10
|
+
model.should_receive(:get).with('artist/{api_key}/{id}/json/{type}/{sort}/{limit}').and_return(mock_model)
|
11
11
|
|
12
|
-
model.artist(1234)
|
12
|
+
model.artist('1234')
|
13
|
+
end
|
14
|
+
|
15
|
+
it 'should call params with specific params' do
|
16
|
+
model.should_receive(:params).with(id: '1234', type: 'all', sort: '1', limit: '2').and_return(mock_model)
|
17
|
+
|
18
|
+
model.artist('1234')
|
13
19
|
end
|
14
20
|
end
|
15
21
|
|
16
22
|
describe '.album' do
|
17
|
-
it 'should call get with specific
|
18
|
-
model.
|
19
|
-
klass.should_receive(:get).with('album/API_KEY/1234/json/all/1/2')
|
23
|
+
it 'should call get with specific params' do
|
24
|
+
model.should_receive(:get).with('album/{api_key}/{id}/json/{type}/{sort}/{limit}').and_return(mock_model)
|
20
25
|
|
21
|
-
model.album(1234)
|
26
|
+
model.album('1234')
|
27
|
+
end
|
28
|
+
|
29
|
+
it 'should call params with specific params' do
|
30
|
+
model.should_receive(:params).with(id: '1234', type: 'all', sort: '1', limit: '2').and_return(mock_model)
|
31
|
+
|
32
|
+
model.album('1234')
|
22
33
|
end
|
23
34
|
end
|
24
35
|
|
25
36
|
describe '.label' do
|
26
|
-
it 'should call get with specific
|
27
|
-
model.
|
28
|
-
klass.should_receive(:get).with('label/API_KEY/1234/json/all/1/2')
|
37
|
+
it 'should call get with specific params' do
|
38
|
+
model.should_receive(:get).with('label/{api_key}/{id}/json/{type}/{sort}/{limit}').and_return(mock_model)
|
29
39
|
|
30
|
-
model.label(1234)
|
40
|
+
model.label('1234')
|
41
|
+
end
|
42
|
+
|
43
|
+
it 'should call params with specific params' do
|
44
|
+
model.should_receive(:params).with(id: '1234', type: 'all', sort: '1', limit: '2').and_return(mock_model)
|
45
|
+
|
46
|
+
model.label('1234')
|
31
47
|
end
|
32
48
|
end
|
33
49
|
|
34
50
|
describe '.update' do
|
35
|
-
it 'should call get with specific
|
36
|
-
model.
|
37
|
-
|
51
|
+
it 'should call get with specific params' do
|
52
|
+
model.should_receive(:get).with('newmusic/{api_key}/{timestamp}').and_return(mock_model)
|
53
|
+
|
54
|
+
model.update(1234)
|
55
|
+
end
|
56
|
+
|
57
|
+
it 'should call params with specific params' do
|
58
|
+
model.should_receive(:params).with(timestamp: 1234).and_return(mock_model)
|
38
59
|
|
39
60
|
model.update(1234)
|
40
61
|
end
|
data/spec/fanart_api/tv_spec.rb
CHANGED
@@ -3,20 +3,31 @@ require 'spec_helper'
|
|
3
3
|
describe FanartApi::Tv do
|
4
4
|
let(:klass) { FanartApi::Tv }
|
5
5
|
let(:model) { klass.new(FanartApi::Client.new) }
|
6
|
+
let(:mock_model) { SampleModel.new }
|
6
7
|
|
7
8
|
describe '.find' do
|
8
|
-
it 'should call get with specific
|
9
|
-
model.
|
10
|
-
klass.should_receive(:get).with('series/API_KEY/1234/json/all/1/2')
|
9
|
+
it 'should call get with specific params' do
|
10
|
+
model.should_receive(:get).with('series/{api_key}/{id}/json/{type}/{sort}/{limit}').and_return(mock_model)
|
11
11
|
|
12
|
-
model.find(1234)
|
12
|
+
model.find('1234')
|
13
|
+
end
|
14
|
+
|
15
|
+
it 'should call params with specific params' do
|
16
|
+
model.should_receive(:params).with(id: '1234', type: 'all', sort: '1', limit: '2').and_return(mock_model)
|
17
|
+
|
18
|
+
model.find('1234')
|
13
19
|
end
|
14
20
|
end
|
15
21
|
|
16
22
|
describe '.update' do
|
17
|
-
it 'should call get with specific
|
18
|
-
model.
|
19
|
-
|
23
|
+
it 'should call get with specific params' do
|
24
|
+
model.should_receive(:get).with('newtv/{api_key}/{timestamp}').and_return(mock_model)
|
25
|
+
|
26
|
+
model.update(1234)
|
27
|
+
end
|
28
|
+
|
29
|
+
it 'should call params with specific params' do
|
30
|
+
model.should_receive(:params).with(timestamp: 1234).and_return(mock_model)
|
20
31
|
|
21
32
|
model.update(1234)
|
22
33
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -9,5 +9,18 @@ FanartApi::Configuration.configure do |config|
|
|
9
9
|
config.api_key = ''
|
10
10
|
end
|
11
11
|
|
12
|
+
class SampleModel
|
13
|
+
def get(uri)
|
14
|
+
self
|
15
|
+
end
|
16
|
+
|
17
|
+
def params(options = {})
|
18
|
+
self
|
19
|
+
end
|
20
|
+
|
21
|
+
def response
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
12
25
|
RSpec.configure do |config|
|
13
26
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fanart_api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Krzysztof Wawer
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-12-
|
11
|
+
date: 2013-12-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: confiture
|
@@ -38,6 +38,20 @@ dependencies:
|
|
38
38
|
- - '>='
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: 0.12.0
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: uri_template
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ~>
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 0.6.0
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ~>
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 0.6.0
|
41
55
|
- !ruby/object:Gem::Dependency
|
42
56
|
name: bundler
|
43
57
|
requirement: !ruby/object:Gem::Requirement
|