itunes_api 0.3.1 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3ade50c409cdf0919ad1b4377fc7a962e7f190fa
4
- data.tar.gz: '011542190e9a595871c45698957e2246338a34ba'
3
+ metadata.gz: e9c62e5baa4d01dbfeb1e0b56e8676cd46239498
4
+ data.tar.gz: a6c357e85297545feb54cfbb6cc2147fd1b166eb
5
5
  SHA512:
6
- metadata.gz: 8172f7254df1f1ba51f78af992d3cb3e5b3ccbe6df5ca411dbc4f35eaa2dcaa047f045b9067cb12c4d92bf49071dd41d1cbb7f01f8ec6f448097b748654d3bc1
7
- data.tar.gz: 19ae0271c627eed19c32d4d99d369e1572a306c488ba9d5b3341b9f4fd5e3e436cb8c5d645fba316c9be96643cdb1da0b6926d0caa145df1d080d5df46f8e55a
6
+ metadata.gz: 1c7f150941a05bd2f64c6f75993d1892e8add4f903dcea363173271055b6e6011d337b33437a1c2b8828a168f8dc584ca29584cd09e079f35e4b31109ada11c2
7
+ data.tar.gz: 6c279bf3e2f3c57a01fea4390c61dc6f6b32c122d121cfe797a146e3bf6bff790e6eb5c37d43677006f897a1825731f28213c67f7ca22952201e720dea5d5736
data/README.md CHANGED
@@ -32,7 +32,12 @@ To return all the AMG ids associated with a search term.
32
32
  ItunesApi.artist_ids('Pink Floyd')
33
33
  ```
34
34
 
35
- To return structured information abut artists and albums associated with a search term.
35
+ To return a specific artist with albums, based on the AMG id.
36
+ ```ruby
37
+ ItunesApi.artist_lookup(12345)
38
+ ```
39
+
40
+ To get all artists returning from a search term, and their albums.
36
41
  ```ruby
37
42
  ItunesApi.artist_search('Pink Floyd')
38
43
  ```
data/itunes_api.gemspec CHANGED
@@ -37,4 +37,6 @@ Gem::Specification.new do |spec|
37
37
  spec.add_development_dependency 'rake'
38
38
  spec.add_development_dependency 'rspec'
39
39
  spec.add_development_dependency 'rubocop'
40
+ spec.add_development_dependency 'vcr'
41
+ spec.add_development_dependency 'webmock'
40
42
  end
@@ -2,17 +2,29 @@ module ItunesApi
2
2
  module Music
3
3
  # Wrapper for album results.
4
4
  class Album
5
- attr_reader :name, :artwork, :released
6
-
7
5
  def initialize(data)
8
- @name = data['collectionName']
9
- @artwork = data['artworkUrl100']
10
- @released = Date.parse(data['releaseDate'])
6
+ @data = data
11
7
  end
12
8
 
13
9
  def self.build(albums_data)
14
10
  albums_data.map { |data| new(data) }
15
11
  end
12
+
13
+ def artwork
14
+ @artwork ||= data['artworkUrl100']
15
+ end
16
+
17
+ def name
18
+ @name ||= data['collectionName']
19
+ end
20
+
21
+ def released
22
+ @released ||= Date.parse(data['releaseDate'])
23
+ end
24
+
25
+ private
26
+
27
+ attr_reader :data
16
28
  end
17
29
  end
18
30
  end
@@ -2,13 +2,25 @@ module ItunesApi
2
2
  module Music
3
3
  # Artist or Band from the Apple catalog
4
4
  class Artist
5
- attr_reader :name, :artist_id, :albums
6
-
7
5
  def initialize(data)
8
- @name = data['artistName']
9
- @artist_id = data['amgArtistId']
10
- @albums = Album.build(data[:albums])
6
+ @data = data
7
+ end
8
+
9
+ def albums
10
+ @albums ||= Album.build(data[:albums])
11
+ end
12
+
13
+ def artist_id
14
+ @artist_id ||= data['amgArtistId']
11
15
  end
16
+
17
+ def name
18
+ @name ||= data['artistName']
19
+ end
20
+
21
+ private
22
+
23
+ attr_reader :data
12
24
  end
13
25
  end
14
26
  end
@@ -0,0 +1,28 @@
1
+ module ItunesApi
2
+ module Music
3
+ # Artist or Band resulting from a specific lookup
4
+ class ArtistLookup
5
+ def initialize(artist_id)
6
+ @artist_id = artist_id
7
+ end
8
+
9
+ def self.artist(artist_id)
10
+ new(artist_id).artist
11
+ end
12
+
13
+ def artist
14
+ @artist ||= build_artist(artist_id)
15
+ end
16
+
17
+ private
18
+
19
+ attr_reader :artist_id
20
+
21
+ def build_artist(id)
22
+ Artist.new(
23
+ Requests::Lookup.artist_with_albums(id)
24
+ )
25
+ end
26
+ end
27
+ end
28
+ end
@@ -16,8 +16,10 @@ module ItunesApi
16
16
 
17
17
  private
18
18
 
19
+ attr_reader :name
20
+
19
21
  def artist_ids
20
- @search ||= ItunesApi.artist_ids(@name)
22
+ @search ||= ItunesApi.artist_ids(name)
21
23
  end
22
24
 
23
25
  def build_artist(id)
@@ -37,13 +37,9 @@ module ItunesApi
37
37
  end
38
38
 
39
39
  def artist_data
40
- symbolize_keys(
41
- unwrapped(
42
- results.find do |wrappers|
43
- wrappers['wrapperType'] == 'artist'
44
- end
45
- )
46
- )
40
+ results.find do |wrappers|
41
+ wrappers['wrapperType'] == 'artist'
42
+ end
47
43
  end
48
44
 
49
45
  def query_values
@@ -1,3 +1,3 @@
1
1
  module ItunesApi
2
- VERSION = '0.3.1'.freeze
2
+ VERSION = '0.4.0'.freeze
3
3
  end
data/lib/itunes_api.rb CHANGED
@@ -3,6 +3,7 @@ require 'itunes_api/requests/lookup'
3
3
  require 'itunes_api/requests/search'
4
4
  require 'itunes_api/music/album'
5
5
  require 'itunes_api/music/artist'
6
+ require 'itunes_api/music/artist_lookup'
6
7
  require 'itunes_api/music/artist_search'
7
8
 
8
9
  # Interface to the Itunes Api
@@ -15,6 +16,10 @@ module ItunesApi
15
16
  Requests::Search.artist_ids(name)
16
17
  end
17
18
 
19
+ def self.artist_lookup(artist_id)
20
+ Music::ArtistLookup.artist(artist_id)
21
+ end
22
+
18
23
  def self.artist_search(name)
19
24
  Music::ArtistSearch.artists(name)
20
25
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: itunes_api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mario D’Arco
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-05-18 00:00:00.000000000 Z
11
+ date: 2017-05-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: addressable
@@ -80,6 +80,34 @@ dependencies:
80
80
  - - ">="
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: vcr
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: webmock
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
83
111
  description: An interface to the iTunes Api
84
112
  email:
85
113
  - mariodarco78@icloud.com
@@ -100,6 +128,7 @@ files:
100
128
  - lib/itunes_api.rb
101
129
  - lib/itunes_api/music/album.rb
102
130
  - lib/itunes_api/music/artist.rb
131
+ - lib/itunes_api/music/artist_lookup.rb
103
132
  - lib/itunes_api/music/artist_search.rb
104
133
  - lib/itunes_api/requests/base.rb
105
134
  - lib/itunes_api/requests/lookup.rb