fanart_api 0.0.2 → 0.1.2
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.
- checksums.yaml +4 -4
- data/.travis.yml +3 -1
- data/README.md +8 -16
- data/fanart_api.gemspec +1 -3
- data/lib/fanart_api.rb +0 -1
- data/lib/fanart_api/base.rb +24 -28
- data/lib/fanart_api/client.rb +4 -4
- data/lib/fanart_api/movie.rb +23 -5
- data/lib/fanart_api/music.rb +46 -6
- data/lib/fanart_api/tv.rb +22 -4
- data/lib/fanart_api/version.rb +1 -1
- data/spec/fixtures/artist.json +39 -0
- data/spec/fixtures/find_movies.json +32 -0
- data/spec/fixtures/find_series.json +36 -0
- data/spec/functionals/movie_spec.rb +47 -0
- data/spec/functionals/music_spec.rb +81 -0
- data/spec/functionals/tv_spec.rb +47 -0
- data/spec/spec_helper.rb +0 -17
- metadata +18 -51
- data/lib/fanart_api/configuration.rb +0 -7
- data/lib/generators/fanart_api/install_generator.rb +0 -12
- data/lib/generators/templates/fanart_api.rb +0 -3
- data/spec/fanart_api/base_spec.rb +0 -74
- data/spec/fanart_api/client_spec.rb +0 -23
- data/spec/fanart_api/movie_spec.rb +0 -35
- data/spec/fanart_api/music_spec.rb +0 -63
- data/spec/fanart_api/tv_spec.rb +0 -35
- data/spec/integration_spec_helper.rb +0 -3
- data/spec/integrations/support/fanart_api.rb.example +0 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ef2dba3cffc94ef7e4bed3436ff6e42f9c6bb728
|
4
|
+
data.tar.gz: 85b7c8f1c8ca861add36acc61353dd06a68aa5cd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: aec65185a5098923afa1aaf38571c337981ac23be9a5e44bff8310ecd4f0f47dc6df1b783f834a9748634a07ecbfb26b93af45e8b389e7dbda5b75893fa41b11
|
7
|
+
data.tar.gz: f223699e44968598e86ae6010a53cf8e8844405fb9dbddb91ecf315bbcdf91eef362d960383fd583deb30be2fcd92e5098dd6d1a7a997502ffde835e1c8ec205
|
data/.travis.yml
CHANGED
data/README.md
CHANGED
@@ -16,14 +16,6 @@ You can add it to your Gemfile with:
|
|
16
16
|
gem 'fanart_api'
|
17
17
|
```
|
18
18
|
|
19
|
-
Run the bundle command to install it.
|
20
|
-
|
21
|
-
```console
|
22
|
-
rails generate fanart_api:install
|
23
|
-
```
|
24
|
-
|
25
|
-
The generator will install an initializer where you must past your api_key.
|
26
|
-
|
27
19
|
## How to use
|
28
20
|
|
29
21
|
There is one entry point, in initialize you can past hash with api_key value, or leave empty:
|
@@ -37,24 +29,24 @@ client = FanartApi::Client.new(api_key: 'API_KEY')
|
|
37
29
|
Movie API
|
38
30
|
|
39
31
|
```ruby
|
40
|
-
client.movie.find(id, type
|
41
|
-
client.movie.update(timestamp)
|
32
|
+
client.movie.find(id: id, type: 'all', sort: '1', limit: '2')
|
33
|
+
client.movie.update(timestamp: 1...)
|
42
34
|
```
|
43
35
|
|
44
36
|
Music API
|
45
37
|
|
46
38
|
```ruby
|
47
|
-
client.music.artist(id, type
|
48
|
-
client.music.album(id, type
|
49
|
-
client.music.label(id, type
|
50
|
-
client.music.update(timestamp)
|
39
|
+
client.music.artist(id: id, type: 'all', sort: '1', limit: '2')
|
40
|
+
client.music.album(id: id, type: 'all', sort: '1', limit: '2')
|
41
|
+
client.music.label(id: id, type: 'all', sort: '1', limit: '2')
|
42
|
+
client.music.update(timestamp: 1...)
|
51
43
|
```
|
52
44
|
|
53
45
|
Tv API
|
54
46
|
|
55
47
|
```ruby
|
56
|
-
client.tv.find(id, type
|
57
|
-
client.tv.update(timestamp)
|
48
|
+
client.tv.find(id: id, type: 'all', sort: '1', limit: '2')
|
49
|
+
client.tv.update(timestamp: 1...)
|
58
50
|
```
|
59
51
|
|
60
52
|
## Contributing
|
data/fanart_api.gemspec
CHANGED
@@ -18,9 +18,7 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
19
|
spec.require_paths = ['lib']
|
20
20
|
|
21
|
-
spec.add_runtime_dependency '
|
22
|
-
spec.add_runtime_dependency 'httparty', '>= 0.12.0'
|
23
|
-
spec.add_runtime_dependency 'uri_template', '~> 0.6.0'
|
21
|
+
spec.add_runtime_dependency 'service_api', '~> 0.0.4'
|
24
22
|
|
25
23
|
spec.add_development_dependency 'bundler', '~> 1.3'
|
26
24
|
spec.add_development_dependency 'rake'
|
data/lib/fanart_api.rb
CHANGED
data/lib/fanart_api/base.rb
CHANGED
@@ -1,47 +1,43 @@
|
|
1
|
-
require '
|
2
|
-
require 'uri_template'
|
1
|
+
require 'service_api'
|
3
2
|
|
4
3
|
class FanartApi::Base
|
5
|
-
include
|
6
|
-
base_uri 'http://api.fanart.tv/webservice//'
|
4
|
+
include ServiceApi::BaseFaraday
|
7
5
|
|
8
|
-
def
|
9
|
-
@client
|
10
|
-
@params = {}
|
6
|
+
def api_key_options
|
7
|
+
{ api_key: @client.options[:api_key] }
|
11
8
|
end
|
12
9
|
|
13
|
-
def
|
14
|
-
|
15
|
-
|
16
|
-
self
|
10
|
+
def path_with_params(path, options)
|
11
|
+
path(path).params(api_key_options.merge(options))
|
17
12
|
end
|
18
13
|
|
19
|
-
def
|
20
|
-
|
21
|
-
|
22
|
-
self
|
14
|
+
def find_path
|
15
|
+
':kind/:api_key/:id/json/:type/:sort/:limit'
|
23
16
|
end
|
24
17
|
|
25
|
-
def
|
26
|
-
|
18
|
+
def update_path
|
19
|
+
':kind/:api_key/:timestamp'
|
27
20
|
end
|
28
21
|
|
29
|
-
def
|
30
|
-
|
22
|
+
def default_options
|
23
|
+
{
|
24
|
+
type: 'all',
|
25
|
+
sort: 1,
|
26
|
+
limit: 2
|
27
|
+
}
|
31
28
|
end
|
32
29
|
|
33
|
-
|
34
|
-
uri = prepare_uri
|
35
|
-
@params.reject!{ |param| restful_param_keys(uri).include?(param.to_s) }
|
30
|
+
private
|
36
31
|
|
37
|
-
|
32
|
+
def uri_kind
|
33
|
+
:colon
|
38
34
|
end
|
39
35
|
|
40
|
-
def
|
41
|
-
|
36
|
+
def base_url
|
37
|
+
'http://api.fanart.tv/webservice/'
|
42
38
|
end
|
43
39
|
|
44
|
-
def shared_uri
|
45
|
-
|
46
|
-
end
|
40
|
+
# def shared_uri
|
41
|
+
# '{api_key}/{id}/json/{type}/{sort}/{limit}'
|
42
|
+
# end
|
47
43
|
end
|
data/lib/fanart_api/client.rb
CHANGED
@@ -1,10 +1,10 @@
|
|
1
|
-
require 'httparty'
|
2
|
-
|
3
1
|
class FanartApi::Client
|
4
|
-
attr_reader :
|
2
|
+
attr_reader :options
|
5
3
|
|
6
4
|
def initialize(options = {})
|
7
|
-
@
|
5
|
+
@options = options
|
6
|
+
|
7
|
+
@options[:adapter] ||= :net_http
|
8
8
|
end
|
9
9
|
|
10
10
|
def movie
|
data/lib/fanart_api/movie.rb
CHANGED
@@ -1,10 +1,28 @@
|
|
1
1
|
# documentation: http://fanart.tv/api-docs/movie-api
|
2
2
|
class FanartApi::Movie < FanartApi::Base
|
3
|
-
def find(
|
4
|
-
|
3
|
+
def find(options = {})
|
4
|
+
find_path_with_params(options).get
|
5
5
|
end
|
6
6
|
|
7
|
-
def
|
8
|
-
|
7
|
+
def find_url(options = {})
|
8
|
+
find_path_with_params(options).url
|
9
9
|
end
|
10
|
-
|
10
|
+
|
11
|
+
def update(options = {})
|
12
|
+
update_path_with_params(options).get
|
13
|
+
end
|
14
|
+
|
15
|
+
def update_url(options = {})
|
16
|
+
update_path_with_params(options).url
|
17
|
+
end
|
18
|
+
|
19
|
+
private
|
20
|
+
|
21
|
+
def find_path_with_params(options)
|
22
|
+
path_with_params(find_path, default_options.merge(options.merge(kind: :movie)))
|
23
|
+
end
|
24
|
+
|
25
|
+
def update_path_with_params(options)
|
26
|
+
path_with_params(update_path, default_options.merge(options.merge(kind: :newmovies)))
|
27
|
+
end
|
28
|
+
end
|
data/lib/fanart_api/music.rb
CHANGED
@@ -1,12 +1,52 @@
|
|
1
1
|
# documentation: http://fanart.tv/api-docs/music-api
|
2
2
|
class FanartApi::Music < FanartApi::Base
|
3
|
-
|
4
|
-
|
5
|
-
get("#{method_name}/#{shared_uri}").params(id: id, type: type, sort: sort, limit: limit).response
|
6
|
-
end
|
3
|
+
def artist(options = {})
|
4
|
+
artist_path_with_params(options).get
|
7
5
|
end
|
8
6
|
|
9
|
-
def
|
10
|
-
|
7
|
+
def artist_url(options = {})
|
8
|
+
artist_path_with_params(options).url
|
9
|
+
end
|
10
|
+
|
11
|
+
def album(options = {})
|
12
|
+
album_path_with_params(options).get
|
13
|
+
end
|
14
|
+
|
15
|
+
def album_url(options = {})
|
16
|
+
album_path_with_params(options).url
|
17
|
+
end
|
18
|
+
|
19
|
+
def label(options = {})
|
20
|
+
label_path_with_params(options).get
|
21
|
+
end
|
22
|
+
|
23
|
+
def label_url(options = {})
|
24
|
+
label_path_with_params(options).url
|
25
|
+
end
|
26
|
+
|
27
|
+
def update(options = {})
|
28
|
+
update_path_with_params(options).get
|
29
|
+
end
|
30
|
+
|
31
|
+
def update_url(options = {})
|
32
|
+
update_path_with_params(options).url
|
33
|
+
end
|
34
|
+
|
35
|
+
private
|
36
|
+
|
37
|
+
def artist_path_with_params(options)
|
38
|
+
path_with_params(find_path, default_options.merge(options.merge(kind: :artist)))
|
39
|
+
end
|
40
|
+
|
41
|
+
def album_path_with_params(options)
|
42
|
+
path_with_params(find_path, default_options.merge(options.merge(kind: :album)))
|
43
|
+
end
|
44
|
+
|
45
|
+
def label_path_with_params(options)
|
46
|
+
path_with_params(find_path, default_options.merge(options.merge(kind: :label)))
|
47
|
+
end
|
48
|
+
|
49
|
+
def update_path_with_params(options)
|
50
|
+
path_with_params(update_path, default_options.merge(options.merge(kind: :newmusic)))
|
11
51
|
end
|
12
52
|
end
|
data/lib/fanart_api/tv.rb
CHANGED
@@ -1,10 +1,28 @@
|
|
1
1
|
# documentation: http://fanart.tv/api-docs/tv-api
|
2
2
|
class FanartApi::Tv < FanartApi::Base
|
3
|
-
def find(
|
4
|
-
|
3
|
+
def find(options = {})
|
4
|
+
find_path_with_params(options).get
|
5
5
|
end
|
6
6
|
|
7
|
-
def
|
8
|
-
|
7
|
+
def find_url(options = {})
|
8
|
+
find_path_with_params(options).url
|
9
|
+
end
|
10
|
+
|
11
|
+
def update(options = {})
|
12
|
+
update_path_with_params(options).get
|
13
|
+
end
|
14
|
+
|
15
|
+
def update_url(options = {})
|
16
|
+
update_path_with_params(options).url
|
17
|
+
end
|
18
|
+
|
19
|
+
private
|
20
|
+
|
21
|
+
def find_path_with_params(options)
|
22
|
+
path_with_params(find_path, default_options.merge(options.merge(kind: :series)))
|
23
|
+
end
|
24
|
+
|
25
|
+
def update_path_with_params(options)
|
26
|
+
path_with_params(update_path, default_options.merge(options.merge(kind: :newtv)))
|
9
27
|
end
|
10
28
|
end
|
data/lib/fanart_api/version.rb
CHANGED
@@ -0,0 +1,39 @@
|
|
1
|
+
{
|
2
|
+
"Evanescence": {
|
3
|
+
"mbid_id": "f4a31f0a-51dd-4fa7-986d-3095c40c5ed9",
|
4
|
+
"artistbackground": [
|
5
|
+
{
|
6
|
+
"id": "9",
|
7
|
+
"url": "http://fanart.tv/fanart/music/f4a31f0a-51dd-4fa7-986d-3095c40c5ed9/artistbackground/9/evanescence-4dc719c5cc68f.jpg",
|
8
|
+
"likes": "1"
|
9
|
+
}
|
10
|
+
],
|
11
|
+
"musiclogo": [
|
12
|
+
{
|
13
|
+
"id": "5239",
|
14
|
+
"url": "http://fanart.tv/fanart/music/f4a31f0a-51dd-4fa7-986d-3095c40c5ed9/musiclogo/5239/evanescence-4df6263dee3c6.png",
|
15
|
+
"likes": "1"
|
16
|
+
}
|
17
|
+
],
|
18
|
+
"albums": {
|
19
|
+
"2187d248-1a3b-35d0-a4ec-bead586ff547": {
|
20
|
+
"albumcover": [
|
21
|
+
{
|
22
|
+
"id": "43",
|
23
|
+
"url": "http://fanart.tv/fanart/music/f4a31f0a-51dd-4fa7-986d-3095c40c5ed9/albumcover/43/fallen-4dc8683fa58fe.jpg",
|
24
|
+
"likes": "0"
|
25
|
+
}
|
26
|
+
],
|
27
|
+
"cdart": [
|
28
|
+
{
|
29
|
+
"id": "17739",
|
30
|
+
"url": "http://fanart.tv/fanart/music/f4a31f0a-51dd-4fa7-986d-3095c40c5ed9/cdart/17739/fallen-4f133f8a16d25.png",
|
31
|
+
"likes": "0",
|
32
|
+
"disc": "1",
|
33
|
+
"size": "1000"
|
34
|
+
}
|
35
|
+
]
|
36
|
+
}
|
37
|
+
}
|
38
|
+
}
|
39
|
+
}
|
@@ -0,0 +1,32 @@
|
|
1
|
+
{
|
2
|
+
"The Lord of the Rings: The Fellowship of the Ring": {
|
3
|
+
"tmdb_id": "120",
|
4
|
+
"imdb_id": "tt0120737",
|
5
|
+
"moviedisc": [
|
6
|
+
{
|
7
|
+
"id": "101",
|
8
|
+
"url": "http://fanart.tv/fanart/movies/120/moviedisc/101/the-lord-of-the-rings-the-fellowship-of-the-ring-4eea008189187.png",
|
9
|
+
"lang": "en",
|
10
|
+
"likes": "0",
|
11
|
+
"disc": "1",
|
12
|
+
"disc_type": "bluray"
|
13
|
+
},
|
14
|
+
{
|
15
|
+
"id": "102",
|
16
|
+
"url": "http://fanart.tv/fanart/movies/120/moviedisc/102/the-lord-of-the-rings-the-fellowship-of-the-ring-4eea017193bf6.png",
|
17
|
+
"lang": "en",
|
18
|
+
"likes": "0",
|
19
|
+
"disc": "2",
|
20
|
+
"disc_type": "bluray"
|
21
|
+
}
|
22
|
+
],
|
23
|
+
"movielogo": [
|
24
|
+
{
|
25
|
+
"id": "222",
|
26
|
+
"url": "http://fanart.tv/fanart/movies/120/movielogo/222/the-lord-of-the-rings-the-fellowship-of-the-ring-4ef23158be031.png",
|
27
|
+
"lang": "en",
|
28
|
+
"likes": "0"
|
29
|
+
}
|
30
|
+
]
|
31
|
+
}
|
32
|
+
}
|
@@ -0,0 +1,36 @@
|
|
1
|
+
{
|
2
|
+
"series":"Bones",
|
3
|
+
"clearlogos":[
|
4
|
+
{
|
5
|
+
"id":"13571",
|
6
|
+
"url":"http:\/\/fanart.tv\/tv\/75682\/clearlogo\/bones-4e764b27c454d.png",
|
7
|
+
"lang":"ar",
|
8
|
+
"likes":"0"
|
9
|
+
}
|
10
|
+
],
|
11
|
+
"cleararts":[
|
12
|
+
{
|
13
|
+
"id":"11780",
|
14
|
+
"url":"http:\/\/fanart.tv\/tv\/75682\/clearart\/bones-4df372a733e83.png",
|
15
|
+
"lang":"en",
|
16
|
+
"likes":"0"
|
17
|
+
}
|
18
|
+
],
|
19
|
+
"tvthumbs":[
|
20
|
+
{
|
21
|
+
"id":"4321",
|
22
|
+
"url":"http:\/\/fanart.tv\/tv\/75682\/tvthumb\/B_75682.jpg",
|
23
|
+
"lang":"en",
|
24
|
+
"likes":"0"
|
25
|
+
}
|
26
|
+
],
|
27
|
+
"seasonthumbs":[
|
28
|
+
{
|
29
|
+
"id":"4308",
|
30
|
+
"url":"http:\/\/fanart.tv\/tv\/75682\/seasonthumb\/Bones (7).jpg",
|
31
|
+
"lang":"en",
|
32
|
+
"likes":"0",
|
33
|
+
"season":"3"
|
34
|
+
}
|
35
|
+
]
|
36
|
+
}
|
@@ -0,0 +1,47 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe FanartApi::Movie do
|
4
|
+
let(:client) { FanartApi::Client.new(api_key: '123456789', adapter: :test, adapter_options: faraday_stubs) }
|
5
|
+
let(:model) { client.movie }
|
6
|
+
|
7
|
+
let(:movies_data) { File.read('spec/fixtures/find_movies.json') }
|
8
|
+
|
9
|
+
let(:faraday_stubs) do
|
10
|
+
Faraday::Adapter::Test::Stubs.new do |stub|
|
11
|
+
stub.get('/webservice/movie/123456789/1234/json/all/1/2') { [200, { content_type: 'json' }, movies_data] }
|
12
|
+
stub.get('/webservice/newmovies/123456789/123') { [200, { content_type: 'json' }, {}] }
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
describe '.find' do
|
17
|
+
it 'should return Faraday::Response class' do
|
18
|
+
model.find(id: 1234, type: 'all', sort: '1', limit: 2).class.should == Faraday::Response
|
19
|
+
end
|
20
|
+
|
21
|
+
it 'should return Hash class for body reponse' do
|
22
|
+
model.find(id: 1234, type: 'all', sort: '1', limit: 2).body == Hash
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
describe '.find_url' do
|
27
|
+
it 'should return correct url' do
|
28
|
+
model.find_url(id: 1234, type: 'all', sort: '1', limit: 2).should == 'http://api.fanart.tv/webservice/movie/123456789/1234/json/all/1/2'
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
describe '.update' do
|
33
|
+
it 'should return Faraday::Response class' do
|
34
|
+
model.update(timestamp: 123).class.should == Faraday::Response
|
35
|
+
end
|
36
|
+
|
37
|
+
it 'should return Hash class for body reponse' do
|
38
|
+
model.update(timestamp: 123).body == Hash
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
describe '.update_url' do
|
43
|
+
it 'should return correct url' do
|
44
|
+
model.update_url(timestamp: 123).should == 'http://api.fanart.tv/webservice/newmovies/123456789/123'
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,81 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe FanartApi::Music do
|
4
|
+
let(:client) { FanartApi::Client.new(api_key: '123456789', adapter: :test, adapter_options: faraday_stubs) }
|
5
|
+
let(:model) { client.music }
|
6
|
+
|
7
|
+
let(:music_data) { File.read('spec/fixtures/artist.json') }
|
8
|
+
|
9
|
+
let(:faraday_stubs) do
|
10
|
+
Faraday::Adapter::Test::Stubs.new do |stub|
|
11
|
+
stub.get('/webservice/artist/123456789/1234/json/all/1/2') { [200, { content_type: 'json' }, music_data] }
|
12
|
+
stub.get('/webservice/album/123456789/1234/json/all/1/2') { [200, { content_type: 'json' }, music_data] }
|
13
|
+
stub.get('/webservice/label/123456789/1234/json/all/1/2') { [200, { content_type: 'json' }, music_data] }
|
14
|
+
stub.get('/webservice/newmusic/123456789/123') { [200, { content_type: 'json' }, {}] }
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
describe '.artist' do
|
19
|
+
it 'should return Faraday::Response class' do
|
20
|
+
model.artist(id: 1234, type: 'all', sort: '1', limit: 2).class.should == Faraday::Response
|
21
|
+
end
|
22
|
+
|
23
|
+
it 'should return Hash class for body reponse' do
|
24
|
+
model.artist(id: 1234, type: 'all', sort: '1', limit: 2).body == Hash
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
describe '.artist_url' do
|
29
|
+
it 'should return correct url' do
|
30
|
+
model.artist_url(id: 1234, type: 'all', sort: '1', limit: 2).should == 'http://api.fanart.tv/webservice/artist/123456789/1234/json/all/1/2'
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
describe '.album' do
|
35
|
+
it 'should return Faraday::Response class' do
|
36
|
+
model.album(id: 1234, type: 'all', sort: '1', limit: 2).class.should == Faraday::Response
|
37
|
+
end
|
38
|
+
|
39
|
+
it 'should return Hash class for body reponse' do
|
40
|
+
model.album(id: 1234, type: 'all', sort: '1', limit: 2).body == Hash
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
describe '.album_url' do
|
45
|
+
it 'should return correct url' do
|
46
|
+
model.album_url(id: 1234, type: 'all', sort: '1', limit: 2).should == 'http://api.fanart.tv/webservice/album/123456789/1234/json/all/1/2'
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
describe '.label' do
|
51
|
+
it 'should return Faraday::Response class' do
|
52
|
+
model.label(id: 1234, type: 'all', sort: '1', limit: 2).class.should == Faraday::Response
|
53
|
+
end
|
54
|
+
|
55
|
+
it 'should return Hash class for body reponse' do
|
56
|
+
model.label(id: 1234, type: 'all', sort: '1', limit: 2).body == Hash
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
describe '.label_url' do
|
61
|
+
it 'should return correct url' do
|
62
|
+
model.label_url(id: 1234, type: 'all', sort: '1', limit: 2).should == 'http://api.fanart.tv/webservice/label/123456789/1234/json/all/1/2'
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
describe '.update' do
|
67
|
+
it 'should return Faraday::Response class' do
|
68
|
+
model.update(timestamp: 123).class.should == Faraday::Response
|
69
|
+
end
|
70
|
+
|
71
|
+
it 'should return Hash class for body reponse' do
|
72
|
+
model.update(timestamp: 123).body == Hash
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
describe '.update_url' do
|
77
|
+
it 'should return correct url' do
|
78
|
+
model.update_url(timestamp: 123).should == 'http://api.fanart.tv/webservice/newmusic/123456789/123'
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe FanartApi::Tv do
|
4
|
+
let(:client) { FanartApi::Client.new(api_key: '123456789', adapter: :test, adapter_options: faraday_stubs) }
|
5
|
+
let(:model) { client.tv }
|
6
|
+
|
7
|
+
let(:tv_data) { File.read('spec/fixtures/find_series.json') }
|
8
|
+
|
9
|
+
let(:faraday_stubs) do
|
10
|
+
Faraday::Adapter::Test::Stubs.new do |stub|
|
11
|
+
stub.get('/webservice/series/123456789/1234/json/all/1/2') { [200, { content_type: 'json' }, tv_data] }
|
12
|
+
stub.get('/webservice/newtv/123456789/123') { [200, { content_type: 'json' }, {}] }
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
describe '.find' do
|
17
|
+
it 'should return Faraday::Response class' do
|
18
|
+
model.find(id: 1234, type: 'all', sort: '1', limit: 2).class.should == Faraday::Response
|
19
|
+
end
|
20
|
+
|
21
|
+
it 'should return Hash class for body reponse' do
|
22
|
+
model.find(id: 1234, type: 'all', sort: '1', limit: 2).body == Hash
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
describe '.find_url' do
|
27
|
+
it 'should return correct url' do
|
28
|
+
model.find_url(id: 1234, type: 'all', sort: '1', limit: 2).should == 'http://api.fanart.tv/webservice/series/123456789/1234/json/all/1/2'
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
describe '.update' do
|
33
|
+
it 'should return Faraday::Response class' do
|
34
|
+
model.update(timestamp: 123).class.should == Faraday::Response
|
35
|
+
end
|
36
|
+
|
37
|
+
it 'should return Hash class for body reponse' do
|
38
|
+
model.update(timestamp: 123).body == Hash
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
describe '.update_url' do
|
43
|
+
it 'should return correct url' do
|
44
|
+
model.update_url(timestamp: 123).should == 'http://api.fanart.tv/webservice/newtv/123456789/123'
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
data/spec/spec_helper.rb
CHANGED
@@ -5,22 +5,5 @@ Coveralls.wear!
|
|
5
5
|
|
6
6
|
require 'fanart_api'
|
7
7
|
|
8
|
-
FanartApi::Configuration.configure do |config|
|
9
|
-
config.api_key = ''
|
10
|
-
end
|
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
|
-
|
25
8
|
RSpec.configure do |config|
|
26
9
|
end
|
metadata
CHANGED
@@ -1,57 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fanart_api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.1.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:
|
11
|
+
date: 2014-06-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - '>='
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: 0.1.4
|
20
|
-
type: :runtime
|
21
|
-
prerelease: false
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
23
|
-
requirements:
|
24
|
-
- - '>='
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
version: 0.1.4
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: httparty
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - '>='
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: 0.12.0
|
34
|
-
type: :runtime
|
35
|
-
prerelease: false
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
37
|
-
requirements:
|
38
|
-
- - '>='
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
version: 0.12.0
|
41
|
-
- !ruby/object:Gem::Dependency
|
42
|
-
name: uri_template
|
14
|
+
name: service_api
|
43
15
|
requirement: !ruby/object:Gem::Requirement
|
44
16
|
requirements:
|
45
17
|
- - ~>
|
46
18
|
- !ruby/object:Gem::Version
|
47
|
-
version: 0.
|
19
|
+
version: 0.0.4
|
48
20
|
type: :runtime
|
49
21
|
prerelease: false
|
50
22
|
version_requirements: !ruby/object:Gem::Requirement
|
51
23
|
requirements:
|
52
24
|
- - ~>
|
53
25
|
- !ruby/object:Gem::Version
|
54
|
-
version: 0.
|
26
|
+
version: 0.0.4
|
55
27
|
- !ruby/object:Gem::Dependency
|
56
28
|
name: bundler
|
57
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -125,22 +97,18 @@ files:
|
|
125
97
|
- lib/fanart_api.rb
|
126
98
|
- lib/fanart_api/base.rb
|
127
99
|
- lib/fanart_api/client.rb
|
128
|
-
- lib/fanart_api/configuration.rb
|
129
100
|
- lib/fanart_api/movie.rb
|
130
101
|
- lib/fanart_api/music.rb
|
131
102
|
- lib/fanart_api/tv.rb
|
132
103
|
- lib/fanart_api/version.rb
|
133
|
-
-
|
134
|
-
-
|
135
|
-
- spec/
|
136
|
-
- spec/
|
137
|
-
- spec/
|
138
|
-
- spec/
|
139
|
-
- spec/fanart_api/tv_spec.rb
|
140
|
-
- spec/integration_spec_helper.rb
|
104
|
+
- spec/fixtures/artist.json
|
105
|
+
- spec/fixtures/find_movies.json
|
106
|
+
- spec/fixtures/find_series.json
|
107
|
+
- spec/functionals/movie_spec.rb
|
108
|
+
- spec/functionals/music_spec.rb
|
109
|
+
- spec/functionals/tv_spec.rb
|
141
110
|
- spec/integrations/movie_spec.rb
|
142
111
|
- spec/integrations/music_spec.rb
|
143
|
-
- spec/integrations/support/fanart_api.rb.example
|
144
112
|
- spec/integrations/tv_spec.rb
|
145
113
|
- spec/spec_helper.rb
|
146
114
|
homepage: http://github.com/wafcio/fanart_api
|
@@ -163,19 +131,18 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
163
131
|
version: '0'
|
164
132
|
requirements: []
|
165
133
|
rubyforge_project:
|
166
|
-
rubygems_version: 2.0.
|
134
|
+
rubygems_version: 2.0.3
|
167
135
|
signing_key:
|
168
136
|
specification_version: 4
|
169
137
|
summary: Ruby client for fanart.tv API
|
170
138
|
test_files:
|
171
|
-
- spec/
|
172
|
-
- spec/
|
173
|
-
- spec/
|
174
|
-
- spec/
|
175
|
-
- spec/
|
176
|
-
- spec/
|
139
|
+
- spec/fixtures/artist.json
|
140
|
+
- spec/fixtures/find_movies.json
|
141
|
+
- spec/fixtures/find_series.json
|
142
|
+
- spec/functionals/movie_spec.rb
|
143
|
+
- spec/functionals/music_spec.rb
|
144
|
+
- spec/functionals/tv_spec.rb
|
177
145
|
- spec/integrations/movie_spec.rb
|
178
146
|
- spec/integrations/music_spec.rb
|
179
|
-
- spec/integrations/support/fanart_api.rb.example
|
180
147
|
- spec/integrations/tv_spec.rb
|
181
148
|
- spec/spec_helper.rb
|
@@ -1,12 +0,0 @@
|
|
1
|
-
module FanartApi
|
2
|
-
module Generators
|
3
|
-
class InstallGenerator < Rails::Generators::Base
|
4
|
-
source_root File.expand_path('../../templates', __FILE__)
|
5
|
-
|
6
|
-
desc 'Creates a FanartApi::Configuration initializer and copy locale files to your application.'
|
7
|
-
def copy_initializer
|
8
|
-
template 'fanart_api.rb', 'config/initializers/fanart_api.rb'
|
9
|
-
end
|
10
|
-
end
|
11
|
-
end
|
12
|
-
end
|
@@ -1,74 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
class ExampleClass < FanartApi::Base
|
4
|
-
end
|
5
|
-
|
6
|
-
describe FanartApi::Base do
|
7
|
-
let(:klass) { ExampleClass }
|
8
|
-
let(:model) { klass.new(FanartApi::Client.new) }
|
9
|
-
|
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"
|
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)
|
64
|
-
|
65
|
-
model.restful_param_keys(uri_template.expand).sort.should == ['api_key', 'id'].sort
|
66
|
-
end
|
67
|
-
end
|
68
|
-
|
69
|
-
describe '.shared_uri' do
|
70
|
-
it 'should return correct string' do
|
71
|
-
model.shared_uri.should == '{api_key}/{id}/json/{type}/{sort}/{limit}'
|
72
|
-
end
|
73
|
-
end
|
74
|
-
end
|
@@ -1,23 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe FanartApi::Client do
|
4
|
-
let(:model) { FanartApi::Client.new }
|
5
|
-
|
6
|
-
describe '.movie' do
|
7
|
-
it 'should return movie class' do
|
8
|
-
model.movie.class.should == FanartApi::Movie
|
9
|
-
end
|
10
|
-
end
|
11
|
-
|
12
|
-
describe '.music' do
|
13
|
-
it 'should return music class' do
|
14
|
-
model.music.class.should == FanartApi::Music
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
describe '.tv' do
|
19
|
-
it 'should return tv class' do
|
20
|
-
model.tv.class.should == FanartApi::Tv
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
@@ -1,35 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe FanartApi::Movie do
|
4
|
-
let(:klass) { FanartApi::Movie }
|
5
|
-
let(:model) { klass.new(FanartApi::Client.new) }
|
6
|
-
let(:mock_model) { SampleModel.new }
|
7
|
-
|
8
|
-
describe '.find' do
|
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
|
-
|
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')
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
describe '.update' do
|
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)
|
31
|
-
|
32
|
-
model.update(1234)
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|
@@ -1,63 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe FanartApi::Music do
|
4
|
-
let(:klass) { FanartApi::Music }
|
5
|
-
let(:model) { klass.new(FanartApi::Client.new) }
|
6
|
-
let(:mock_model) { SampleModel.new }
|
7
|
-
|
8
|
-
describe '.artist' do
|
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
|
-
|
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')
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
describe '.album' do
|
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)
|
25
|
-
|
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')
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
describe '.label' do
|
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)
|
39
|
-
|
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')
|
47
|
-
end
|
48
|
-
end
|
49
|
-
|
50
|
-
describe '.update' do
|
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)
|
59
|
-
|
60
|
-
model.update(1234)
|
61
|
-
end
|
62
|
-
end
|
63
|
-
end
|
data/spec/fanart_api/tv_spec.rb
DELETED
@@ -1,35 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe FanartApi::Tv do
|
4
|
-
let(:klass) { FanartApi::Tv }
|
5
|
-
let(:model) { klass.new(FanartApi::Client.new) }
|
6
|
-
let(:mock_model) { SampleModel.new }
|
7
|
-
|
8
|
-
describe '.find' do
|
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
|
-
|
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')
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
describe '.update' do
|
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)
|
31
|
-
|
32
|
-
model.update(1234)
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|