itunes_api 0.3.1 → 0.4.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.
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