7digital 0.0.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.
Files changed (85) hide show
  1. data/README.rdoc +7 -0
  2. data/lib/peachy_patchy.rb +14 -0
  3. data/lib/sevendigital.rb +53 -0
  4. data/lib/sevendigital/api_operator.rb +31 -0
  5. data/lib/sevendigital/api_operator_cached.rb +23 -0
  6. data/lib/sevendigital/api_request.rb +24 -0
  7. data/lib/sevendigital/client.rb +124 -0
  8. data/lib/sevendigital/default_configuration.yml +2 -0
  9. data/lib/sevendigital/digestion_tract/api_response_digestor.rb +52 -0
  10. data/lib/sevendigital/digestion_tract/artist_digestor.rb +31 -0
  11. data/lib/sevendigital/digestion_tract/chart_item_digestor.rb +27 -0
  12. data/lib/sevendigital/digestion_tract/digestor.rb +66 -0
  13. data/lib/sevendigital/digestion_tract/format_digestor.rb +21 -0
  14. data/lib/sevendigital/digestion_tract/label_digestor.rb +20 -0
  15. data/lib/sevendigital/digestion_tract/pager_digestor.rb +23 -0
  16. data/lib/sevendigital/digestion_tract/price_digestor.rb +25 -0
  17. data/lib/sevendigital/digestion_tract/release_digestor.rb +52 -0
  18. data/lib/sevendigital/digestion_tract/track_digestor.rb +37 -0
  19. data/lib/sevendigital/management/artist_manager.rb +39 -0
  20. data/lib/sevendigital/management/manager.rb +11 -0
  21. data/lib/sevendigital/management/release_manager.rb +51 -0
  22. data/lib/sevendigital/management/track_manager.rb +18 -0
  23. data/lib/sevendigital/model/api_response.rb +13 -0
  24. data/lib/sevendigital/model/artist.rb +37 -0
  25. data/lib/sevendigital/model/chart_item.rb +9 -0
  26. data/lib/sevendigital/model/format.rb +9 -0
  27. data/lib/sevendigital/model/label.rb +9 -0
  28. data/lib/sevendigital/model/price.rb +11 -0
  29. data/lib/sevendigital/model/release.rb +34 -0
  30. data/lib/sevendigital/model/sevendigital_error.rb +3 -0
  31. data/lib/sevendigital/model/sevendigital_object.rb +51 -0
  32. data/lib/sevendigital/model/track.rb +8 -0
  33. data/lib/sevendigital/pager.rb +17 -0
  34. data/lib/sevendigital/proxy_police.rb +24 -0
  35. data/lib/sevendigital/version.rb +3 -0
  36. data/spec/api_operator_cached_spec.rb +47 -0
  37. data/spec/api_operator_spec.rb +108 -0
  38. data/spec/api_request_spec.rb +27 -0
  39. data/spec/client_spec.rb +46 -0
  40. data/spec/data/config/sevendigital.yml +5 -0
  41. data/spec/data/configuration_env_override.yml +5 -0
  42. data/spec/data/configuration_override.yml +1 -0
  43. data/spec/digestion_tract/api_response_digestor_spec.rb +74 -0
  44. data/spec/digestion_tract/artist_digestor_spec.rb +83 -0
  45. data/spec/digestion_tract/chart_digestor_spec.rb +54 -0
  46. data/spec/digestion_tract/format_digestor_spec.rb +40 -0
  47. data/spec/digestion_tract/label_digestor_spec.rb +35 -0
  48. data/spec/digestion_tract/pager_digestor_spec.rb +52 -0
  49. data/spec/digestion_tract/price_digestor_spec.rb +57 -0
  50. data/spec/digestion_tract/release_digestor_spec.rb +102 -0
  51. data/spec/digestion_tract/track_digestor_spec.rb +107 -0
  52. data/spec/management/artist_manager_spec.rb +108 -0
  53. data/spec/management/release_manager_spec.rb +178 -0
  54. data/spec/management/track_manager_spec.rb +52 -0
  55. data/spec/model/api_response_spec.rb +32 -0
  56. data/spec/model/artist_spec.rb +122 -0
  57. data/spec/model/release_spec.rb +111 -0
  58. data/spec/pager_spec.rb +8 -0
  59. data/spec/proxy_police_spec.rb +49 -0
  60. data/spec/spec_helper.rb +48 -0
  61. data/spec/test-xml/methods/artist/byTag/top.xml +51 -0
  62. data/spec/test-xml/methods/artist/details.xml +10 -0
  63. data/spec/test-xml/methods/artist/releases.xml +545 -0
  64. data/spec/test-xml/methods/artist/similar.xml +40 -0
  65. data/spec/test-xml/methods/artist/toptracks.xml +280 -0
  66. data/spec/test-xml/methods/release/bydate.xml +174 -0
  67. data/spec/test-xml/methods/release/bytag/top.xml +151 -0
  68. data/spec/test-xml/methods/release/chart.xml +182 -0
  69. data/spec/test-xml/methods/release/details.xml +49 -0
  70. data/spec/test-xml/methods/release/recommend.xml +90 -0
  71. data/spec/test-xml/methods/release/tracks.xml +29 -0
  72. data/spec/test-xml/methods/track/chart.xml +150 -0
  73. data/spec/test-xml/methods/track/details.xml +31 -0
  74. data/spec/test-xml/objects/artist.xml +7 -0
  75. data/spec/test-xml/objects/artist_chart_item.xml +8 -0
  76. data/spec/test-xml/objects/artist_list.xml +23 -0
  77. data/spec/test-xml/objects/artist_list_empty.xml +5 -0
  78. data/spec/test-xml/objects/price.xml +8 -0
  79. data/spec/test-xml/objects/release.xml +40 -0
  80. data/spec/test-xml/objects/release_chart_item.xml +34 -0
  81. data/spec/test-xml/objects/release_list.xml +19 -0
  82. data/spec/test-xml/objects/release_list_empty.xml +5 -0
  83. data/spec/test-xml/objects/track.xml +34 -0
  84. data/spec/test-xml/objects/track_chart_item.xml +28 -0
  85. metadata +151 -0
@@ -0,0 +1,111 @@
1
+ require "spec"
2
+ require "date"
3
+ require 'sevendigital'
4
+
5
+ describe "Release" do
6
+
7
+ before do
8
+ @client = stub(Sevendigital::Client)
9
+ @release_manager = mock(Sevendigital::ReleaseManager)
10
+ @client.stub!(:release).and_return @release_manager
11
+
12
+ @release = Sevendigital::Release.new(@client)
13
+ @release.id = 1234
14
+ end
15
+
16
+ it "should get its basic details from manager" do
17
+ expected_options = {:page => 2}
18
+ fresh_release = fake_release_with_details
19
+
20
+ @release_manager.should_receive(:get_details) { |release_id, options|
21
+ release_id.should == @release.id
22
+ (options.keys & expected_options.keys).should == expected_options.keys
23
+ fresh_release
24
+ }
25
+ @release.get_details(expected_options)
26
+
27
+ @release.version.should == fresh_release.version
28
+ @release.type.should == fresh_release.type
29
+ @release.artist.should == fresh_release.artist
30
+ @release.image.should == fresh_release.image
31
+ @release.url.should == fresh_release.url
32
+ @release.release_date.should == fresh_release.release_date
33
+ @release.added_date.should == fresh_release.added_date
34
+ @release.barcode.should == fresh_release.barcode
35
+ @release.year.should == fresh_release.year
36
+ @release.explicit_content.should == fresh_release.explicit_content
37
+ @release.formats.should == fresh_release.formats
38
+ @release.label.should == fresh_release.label
39
+ @release.price.should == fresh_release.price
40
+
41
+ end
42
+
43
+ it "get_tracks should get tracks from manager" do
44
+ expected_options = {:page => 2}
45
+
46
+ @release_manager.should_receive(:get_tracks) { |release_id, options|
47
+ release_id.should == @release.id
48
+ (options.keys & expected_options.keys).should == expected_options.keys
49
+ fake_track_list
50
+ }
51
+ @release.get_tracks(expected_options)
52
+
53
+ end
54
+
55
+ it "get_tracks should link all tracks back to release itself" do
56
+
57
+ @release_manager.should_receive(:get_tracks) { |release_id, options|
58
+ release_id.should == @release.id
59
+ fake_track_list
60
+ }
61
+
62
+ tracks = @release.get_tracks()
63
+
64
+ tracks.all?{|track| track.release == @release}.should == true
65
+
66
+ end
67
+
68
+ it "get_recommendations should get recommendations from manager" do
69
+ expected_options = {:page => 2}
70
+
71
+ @release_manager.should_receive(:get_recommendations) { |release_id, options|
72
+ release_id.should == @release.id
73
+ (options.keys & expected_options.keys).should == expected_options.keys
74
+ fake_releases_list
75
+ }
76
+ @release.get_recommendations(expected_options)
77
+
78
+ end
79
+
80
+ def fake_releases_list
81
+ releases = Array.new
82
+ releases << Sevendigital::Release.new(@client)
83
+ releases << Sevendigital::Release.new(@client)
84
+ releases
85
+ end
86
+
87
+ def fake_track_list
88
+ tracks = Array.new
89
+ tracks << Sevendigital::Track.new(@client)
90
+ tracks << Sevendigital::Track.new(@client)
91
+ tracks
92
+ end
93
+
94
+ def fake_release_with_details
95
+ release = Sevendigital::Release.new(@client)
96
+ release.version = "(release version)"
97
+ release.type = :album
98
+ release.artist = Sevendigital::Artist.new(@client)
99
+ release.image = "image"
100
+ release.url = "url"
101
+ release.release_date = DateTime.new(2010, 1, 1)
102
+ release.added_date = DateTime.new(2000, 1, 1)
103
+ release.barcode = "AAA"
104
+ release.year = 1999
105
+ release.explicit_content = true
106
+ release.formats = []
107
+ release.label = Sevendigital::Label.new
108
+ release.price = Sevendigital::Price.new
109
+ release
110
+ end
111
+ end
@@ -0,0 +1,8 @@
1
+ require 'spec'
2
+ require File.join(File.dirname(__FILE__), %w[spec_helper])
3
+
4
+ describe "Pager" do
5
+
6
+ it "should paginate list"
7
+
8
+ end
@@ -0,0 +1,49 @@
1
+ # encoding: UTF-8
2
+ require 'spec'
3
+ require 'date'
4
+ require File.join(File.dirname(__FILE__), %w[spec_helper])
5
+
6
+ describe "Proxy Police" do
7
+
8
+ it "should create a Peachy proxy from xml string with root element with given name" do
9
+
10
+ xml = <<XML
11
+ <rootElement id="123">
12
+ <subElement>expected value</subElement>
13
+ </rootElement>
14
+ XML
15
+
16
+ proxy = Sevendigital::ProxyPolice.create_release_proxy(xml, :root_element)
17
+ proxy.kind_of?(Peachy::Proxy).should == true
18
+ proxy.sub_element.value.should == "expected value"
19
+ end
20
+
21
+ it "should create a Peachy proxy from root of the xml string if no element name given" do
22
+
23
+ xml = <<XML
24
+ <rootElement id="123">
25
+ <subElement>expected value</subElement>
26
+ </rootElement>
27
+ XML
28
+
29
+ proxy = Sevendigital::ProxyPolice.create_release_proxy(xml, nil)
30
+ proxy.kind_of?(Peachy::Proxy).should == true
31
+ proxy.root_element.sub_element.value.should == "expected value"
32
+
33
+ end
34
+
35
+ it "should not create a Peachy proxy from xml string without root element with given name" do
36
+
37
+ xml = <<XML
38
+ <rootElement id="123">
39
+ <subElement>expected value</subElement>
40
+ </rootElement>
41
+ XML
42
+
43
+ proxy = Sevendigital::ProxyPolice.create_release_proxy(xml, :different_element)
44
+ proxy.should == nil
45
+
46
+ end
47
+
48
+
49
+ end
@@ -0,0 +1,48 @@
1
+ $: << 'sevendigital'
2
+ $: << 'spec'
3
+
4
+ require 'spec'
5
+ require File.expand_path(
6
+ File.join(File.dirname(__FILE__), %w[.. lib sevendigital]))
7
+
8
+ Spec::Runner.configure do |config|
9
+ # == Mock Framework
10
+ #
11
+ # RSpec uses it's own mocking framework by default. If you prefer to
12
+ # use mocha, flexmock or RR, uncomment the appropriate line:
13
+ #
14
+ # config.mock_with :mocha
15
+ # config.mock_with :flexmock
16
+ # config.mock_with :rr
17
+ end
18
+
19
+ alias running lambda
20
+
21
+ def load_sample_method_xml(method_name)
22
+ method_name = "test-xml/methods/" + method_name + ".xml"
23
+ IO.read( File.join(File.dirname(__FILE__), method_name.split('/')))
24
+ end
25
+
26
+ def load_sample_object_xml(method_name)
27
+ method_name = "test-xml/objects/" + method_name + ".xml"
28
+ IO.read( File.join(File.dirname(__FILE__), method_name.split('/')))
29
+ end
30
+
31
+ def fake_api_response(method_name)
32
+ Sevendigital::ApiResponseDigestor.new(nil).from_xml(load_sample_method_xml(method_name))
33
+ end
34
+
35
+ def fake_api_error_response(code)
36
+ Sevendigital::ApiResponseDigestor.new(nil).from_xml("<response status=\"error\"><error code=\"#{code}\"></error></response>")
37
+ end
38
+
39
+ def mock_client_digestor(client, digestor_class)
40
+ digestor = mock(Sevendigital.const_get(camelize(digestor_class.to_s)))
41
+ client.stub!(digestor_class).and_return(digestor)
42
+ digestor
43
+ end
44
+
45
+ def camelize(str)
46
+ str.split('_').map {|w| w.capitalize}.join
47
+ end
48
+
@@ -0,0 +1,51 @@
1
+ <?xml version="1.0" encoding="utf-8" ?>
2
+ <response status="ok" version="1.2"
3
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4
+ xsi:noNamespaceSchemaLocation="http://api.7digital.com/1.2/static/7digitalAPI.xsd">
5
+ <taggedResults>
6
+ <page>1</page>
7
+ <pageSize>5</pageSize>
8
+ <totalItems>35</totalItems>
9
+ <type>artist</type>
10
+ <taggedItem>
11
+ <artist id="382">
12
+ <name>Gorillaz</name>
13
+ <sortName>Gorillaz</sortName>
14
+ <url>http://www.7digital.com/artists/gorillaz/?partner=712</url>
15
+ <image>http://cdn.7static.com/static/img/artistimages/00/000/003/0000000382_150.jpg</image>
16
+ </artist>
17
+ </taggedItem>
18
+ <taggedItem>
19
+ <artist id="1244">
20
+ <name>Pearl Jam</name>
21
+ <sortName>Pearl Jam</sortName>
22
+ <url>http://www.7digital.com/artists/pearl-jam/?partner=712</url>
23
+ <image>http://cdn.7static.com/static/img/artistimages/00/000/012/0000001244_150.jpg</image>
24
+ </artist>
25
+ </taggedItem>
26
+ <taggedItem>
27
+ <artist id="8329">
28
+ <name>Oasis</name>
29
+ <sortName>Oasis</sortName>
30
+ <url>http://www.7digital.com/artists/oasis/?partner=712</url>
31
+ <image>http://cdn.7static.com/static/img/artistimages/00/000/083/0000008329_150.jpg</image>
32
+ </artist>
33
+ </taggedItem>
34
+ <taggedItem>
35
+ <artist id="922">
36
+ <name>Kasabian</name>
37
+ <sortName>Kasabian</sortName>
38
+ <url>http://www.7digital.com/artists/kasabian/?partner=712</url>
39
+ <image>http://cdn.7static.com/static/img/artistimages/00/000/009/0000000922_150.jpg</image>
40
+ </artist>
41
+ </taggedItem>
42
+ <taggedItem>
43
+ <artist id="12231">
44
+ <name>The Coral</name>
45
+ <sortName>Coral, The</sortName>
46
+ <url>http://www.7digital.com/artists/the-coral/?partner=712</url>
47
+ <image>http://cdn.7static.com/static/img/artistimages/00/000/122/0000012231_150.jpg</image>
48
+ </artist>
49
+ </taggedItem>
50
+ </taggedResults>
51
+ </response>
@@ -0,0 +1,10 @@
1
+ <response status="ok" version="1.2"
2
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3
+ xsi:noNamespaceSchemaLocation="http://api.7digital.com/1.2/static/7digitalAPI.xsd">
4
+ <artist id="1">
5
+ <name>Keane</name>
6
+ <sortName>Keane</sortName>
7
+ <url>http://www.7digital.com/artists/keane/?partner=712</url>
8
+ <image>http://cdn.7static.com/static/img/artistimages/00/000/000/0000000001_150.jpg</image>
9
+ </artist>
10
+ </response>
@@ -0,0 +1,545 @@
1
+ <response status="ok" version="1.2"
2
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3
+ xsi:noNamespaceSchemaLocation="http://api.7digital.com/1.2/static/7digitalAPI.xsd">
4
+
5
+
6
+ <releases>
7
+
8
+ <page>1</page>
9
+ <pageSize>10</pageSize>
10
+ <totalItems>62</totalItems>
11
+
12
+
13
+ <release id="799025">
14
+
15
+ <title>Night Train</title>
16
+ <version></version>
17
+ <type>Album</type>
18
+ <barcode>00602527392622</barcode>
19
+ <year>2010</year>
20
+ <explicitContent>false</explicitContent>
21
+
22
+ <artist id="1">
23
+ <name>Keane</name>
24
+
25
+ <appearsAs>Keane</appearsAs>
26
+
27
+ <url>http://www.7digital.com/artists/keane/</url>
28
+ </artist>
29
+ <url>http://www.7digital.com/artists/keane/night-train/</url>
30
+ <image>http://cdn.7static.com/static/img/sleeveart/00/007/990/0000799025_50.jpg</image>
31
+ <releaseDate>2010-05-10T00:00:00+01:00</releaseDate>
32
+
33
+ <addedDate>2010-04-12T14:41:51+01:00</addedDate>
34
+
35
+ <price>
36
+ <currency code="GBP">&#163;</currency>
37
+ <value>5.49</value>
38
+ <formattedPrice>&#163;5.49</formattedPrice>
39
+ <onSale>true</onSale>
40
+ </price>
41
+
42
+
43
+ <formats availableDrmFree="true">
44
+
45
+
46
+ <format id="17">
47
+ <fileFormat>MP3</fileFormat>
48
+ <bitRate>320</bitRate>
49
+ <drmFree>true</drmFree>
50
+ </format>
51
+
52
+ </formats>
53
+ <label id="36440">
54
+ <name>Universal Music Oy</name>
55
+ </label>
56
+
57
+
58
+ </release>
59
+
60
+
61
+ <release id="813455">
62
+
63
+ <title>Perfect Symmetry</title>
64
+ <version></version>
65
+ <type>Single</type>
66
+ <barcode>00602527391441</barcode>
67
+ <year>2010</year>
68
+ <explicitContent>false</explicitContent>
69
+
70
+ <artist id="1">
71
+ <name>Keane</name>
72
+
73
+ <appearsAs>Keane</appearsAs>
74
+
75
+ <url>http://www.7digital.com/artists/keane/</url>
76
+ </artist>
77
+ <url>http://www.7digital.com/artists/keane/perfect-symmetry-10/</url>
78
+ <image>http://cdn.7static.com/static/img/sleeveart/00/008/134/0000813455_50.jpg</image>
79
+ <releaseDate>2010-04-19T00:00:00+01:00</releaseDate>
80
+
81
+ <addedDate>2010-04-23T01:04:10+01:00</addedDate>
82
+
83
+ <price>
84
+ <currency code="GBP">&#163;</currency>
85
+ <value></value>
86
+ <formattedPrice>N/A</formattedPrice>
87
+ <onSale>false</onSale>
88
+ </price>
89
+
90
+
91
+ <formats availableDrmFree="true">
92
+
93
+
94
+ <format id="17">
95
+ <fileFormat>MP3</fileFormat>
96
+ <bitRate>320</bitRate>
97
+ <drmFree>true</drmFree>
98
+ </format>
99
+
100
+ </formats>
101
+ <label id="3309">
102
+ <name>Universal Music Ireland Ltd.</name>
103
+ </label>
104
+
105
+
106
+ </release>
107
+
108
+
109
+ <release id="809793">
110
+
111
+ <title>Somewhere Only We Know</title>
112
+ <version></version>
113
+ <type>Single</type>
114
+ <barcode>00602527390062</barcode>
115
+ <year>2010</year>
116
+ <explicitContent>false</explicitContent>
117
+
118
+ <artist id="1">
119
+ <name>Keane</name>
120
+
121
+ <appearsAs>Keane</appearsAs>
122
+
123
+ <url>http://www.7digital.com/artists/keane/</url>
124
+ </artist>
125
+ <url>http://www.7digital.com/artists/keane/somewhere-only-we-know-5/</url>
126
+ <image>http://cdn.7static.com/static/img/sleeveart/00/008/097/0000809793_50.jpg</image>
127
+ <releaseDate>2010-04-19T00:00:00+01:00</releaseDate>
128
+
129
+ <addedDate>2010-04-21T16:21:11+01:00</addedDate>
130
+
131
+ <price>
132
+ <currency code="GBP">&#163;</currency>
133
+ <value></value>
134
+ <formattedPrice>N/A</formattedPrice>
135
+ <onSale>false</onSale>
136
+ </price>
137
+
138
+
139
+ <formats availableDrmFree="true">
140
+
141
+
142
+ <format id="17">
143
+ <fileFormat>MP3</fileFormat>
144
+ <bitRate>320</bitRate>
145
+ <drmFree>true</drmFree>
146
+ </format>
147
+
148
+ </formats>
149
+ <label id="3309">
150
+ <name>Universal Music Ireland Ltd.</name>
151
+ </label>
152
+
153
+
154
+ </release>
155
+
156
+
157
+ <release id="820897">
158
+
159
+ <title>Bend &amp; Break</title>
160
+ <version></version>
161
+ <type>Single</type>
162
+ <barcode>00602527414225</barcode>
163
+ <year>2010</year>
164
+ <explicitContent>false</explicitContent>
165
+
166
+ <artist id="1">
167
+ <name>Keane</name>
168
+
169
+ <appearsAs>Keane</appearsAs>
170
+
171
+ <url>http://www.7digital.com/artists/keane/</url>
172
+ </artist>
173
+ <url>http://www.7digital.com/artists/keane/bend-and-break-1/</url>
174
+ <image>http://cdn.7static.com/static/img/sleeveart/00/008/208/0000820897_50.jpg</image>
175
+ <releaseDate>2010-04-26T00:00:00+01:00</releaseDate>
176
+
177
+ <addedDate>2010-04-30T16:33:50+01:00</addedDate>
178
+
179
+ <price>
180
+ <currency code="GBP">&#163;</currency>
181
+ <value></value>
182
+ <formattedPrice>N/A</formattedPrice>
183
+ <onSale>false</onSale>
184
+ </price>
185
+
186
+
187
+ <formats availableDrmFree="true">
188
+
189
+
190
+ <format id="17">
191
+ <fileFormat>MP3</fileFormat>
192
+ <bitRate>320</bitRate>
193
+ <drmFree>true</drmFree>
194
+ </format>
195
+
196
+ </formats>
197
+ <label id="3309">
198
+ <name>Universal Music Ireland Ltd.</name>
199
+ </label>
200
+
201
+
202
+ </release>
203
+
204
+
205
+ <release id="174161">
206
+
207
+ <title>Live</title>
208
+ <version></version>
209
+ <type>Single</type>
210
+ <barcode>00602517543638</barcode>
211
+ <year>2010</year>
212
+ <explicitContent>false</explicitContent>
213
+
214
+ <artist id="1">
215
+ <name>Keane</name>
216
+
217
+ <appearsAs>Keane</appearsAs>
218
+
219
+ <url>http://www.7digital.com/artists/keane/</url>
220
+ </artist>
221
+ <url>http://www.7digital.com/artists/keane/live/</url>
222
+ <image>http://cdn.7static.com/static/img/sleeveart/00/001/741/0000174161_50.jpg</image>
223
+ <releaseDate>2010-04-21T00:00:00+01:00</releaseDate>
224
+
225
+ <addedDate>2007-11-09T13:11:35Z</addedDate>
226
+
227
+ <price>
228
+ <currency code="GBP">&#163;</currency>
229
+ <value>2.29</value>
230
+ <formattedPrice>&#163;2.29</formattedPrice>
231
+ <onSale>true</onSale>
232
+ </price>
233
+
234
+
235
+ <formats availableDrmFree="true">
236
+
237
+
238
+ <format id="4">
239
+ <fileFormat>WMV</fileFormat>
240
+ <bitRate></bitRate>
241
+ <drmFree>false</drmFree>
242
+ </format>
243
+
244
+
245
+ <format id="9">
246
+ <fileFormat>MP4</fileFormat>
247
+ <bitRate></bitRate>
248
+ <drmFree>true</drmFree>
249
+ </format>
250
+
251
+
252
+ <format id="13">
253
+ <fileFormat>WMV</fileFormat>
254
+ <bitRate></bitRate>
255
+ <drmFree>false</drmFree>
256
+ </format>
257
+
258
+
259
+ <format id="17">
260
+ <fileFormat>MP3</fileFormat>
261
+ <bitRate>320</bitRate>
262
+ <drmFree>true</drmFree>
263
+ </format>
264
+
265
+
266
+ <format id="21">
267
+ <fileFormat>MP4</fileFormat>
268
+ <bitRate></bitRate>
269
+ <drmFree>true</drmFree>
270
+ </format>
271
+
272
+ </formats>
273
+ <label id="40">
274
+ <name>Universal-Island Records Ltd.</name>
275
+ </label>
276
+
277
+
278
+ </release>
279
+
280
+
281
+ <release id="828855">
282
+
283
+ <title>Stop For A Minute</title>
284
+ <version>Making Of The Video</version>
285
+ <type>Video</type>
286
+ <barcode>00602527405193</barcode>
287
+ <year>2010</year>
288
+ <explicitContent>false</explicitContent>
289
+
290
+ <artist id="1">
291
+ <name>Keane</name>
292
+
293
+ <appearsAs>Keane / K'NAAN</appearsAs>
294
+
295
+ <url>http://www.7digital.com/artists/keane/</url>
296
+ </artist>
297
+ <url>http://www.7digital.com/artists/keane/stop-for-a-minute-1/</url>
298
+ <image>http://cdn.7static.com/static/img/sleeveart/00/008/288/0000828855_50.jpg</image>
299
+ <releaseDate>2010-04-14T00:00:00+01:00</releaseDate>
300
+
301
+ <addedDate>2010-05-10T17:30:52+01:00</addedDate>
302
+
303
+ <price>
304
+ <currency code="GBP">&#163;</currency>
305
+ <value></value>
306
+ <formattedPrice>N/A</formattedPrice>
307
+ <onSale>false</onSale>
308
+ </price>
309
+
310
+
311
+ <formats availableDrmFree="true">
312
+
313
+
314
+ <format id="4">
315
+ <fileFormat>WMV</fileFormat>
316
+ <bitRate></bitRate>
317
+ <drmFree>false</drmFree>
318
+ </format>
319
+
320
+
321
+ <format id="9">
322
+ <fileFormat>MP4</fileFormat>
323
+ <bitRate></bitRate>
324
+ <drmFree>true</drmFree>
325
+ </format>
326
+
327
+
328
+ <format id="13">
329
+ <fileFormat>WMV</fileFormat>
330
+ <bitRate></bitRate>
331
+ <drmFree>false</drmFree>
332
+ </format>
333
+
334
+
335
+ <format id="21">
336
+ <fileFormat>MP4</fileFormat>
337
+ <bitRate></bitRate>
338
+ <drmFree>true</drmFree>
339
+ </format>
340
+
341
+ </formats>
342
+ <label id="40">
343
+ <name>Universal-Island Records Ltd.</name>
344
+ </label>
345
+
346
+
347
+ </release>
348
+
349
+
350
+ <release id="625642">
351
+
352
+ <title>Hopes and Fears</title>
353
+ <version>Deluxe Edition</version>
354
+ <type>Album</type>
355
+ <barcode>00600753225530</barcode>
356
+ <year>2009</year>
357
+ <explicitContent>false</explicitContent>
358
+
359
+ <artist id="1">
360
+ <name>Keane</name>
361
+
362
+ <appearsAs>Keane</appearsAs>
363
+
364
+ <url>http://www.7digital.com/artists/keane/</url>
365
+ </artist>
366
+ <url>http://www.7digital.com/artists/keane/hopes-and-fears-3/</url>
367
+ <image>http://cdn.7static.com/static/img/sleeveart/00/006/256/0000625642_50.jpg</image>
368
+ <releaseDate>2009-11-09T00:00:00Z</releaseDate>
369
+
370
+ <addedDate>2009-10-27T16:59:05Z</addedDate>
371
+
372
+ <price>
373
+ <currency code="GBP">&#163;</currency>
374
+ <value>9.99</value>
375
+ <formattedPrice>&#163;9.99</formattedPrice>
376
+ <onSale>true</onSale>
377
+ </price>
378
+
379
+
380
+ <formats availableDrmFree="true">
381
+
382
+
383
+ <format id="17">
384
+ <fileFormat>MP3</fileFormat>
385
+ <bitRate>320</bitRate>
386
+ <drmFree>true</drmFree>
387
+ </format>
388
+
389
+ </formats>
390
+ <label id="3309">
391
+ <name>Universal Music Ireland Ltd.</name>
392
+ </label>
393
+
394
+
395
+ </release>
396
+
397
+
398
+ <release id="809800">
399
+
400
+ <title>Better Than This</title>
401
+ <version></version>
402
+ <type>Single</type>
403
+ <barcode>00602527391465</barcode>
404
+ <year>2009</year>
405
+ <explicitContent>false</explicitContent>
406
+
407
+ <artist id="1">
408
+ <name>Keane</name>
409
+
410
+ <appearsAs>Keane</appearsAs>
411
+
412
+ <url>http://www.7digital.com/artists/keane/</url>
413
+ </artist>
414
+ <url>http://www.7digital.com/artists/keane/better-than-this-1/</url>
415
+ <image>http://cdn.7static.com/static/img/sleeveart/00/008/098/0000809800_50.jpg</image>
416
+ <releaseDate>2009-03-16T00:00:00Z</releaseDate>
417
+
418
+ <addedDate>2010-04-21T16:22:09+01:00</addedDate>
419
+
420
+ <price>
421
+ <currency code="GBP">&#163;</currency>
422
+ <value></value>
423
+ <formattedPrice>N/A</formattedPrice>
424
+ <onSale>false</onSale>
425
+ </price>
426
+
427
+
428
+ <formats availableDrmFree="true">
429
+
430
+
431
+ <format id="17">
432
+ <fileFormat>MP3</fileFormat>
433
+ <bitRate>320</bitRate>
434
+ <drmFree>true</drmFree>
435
+ </format>
436
+
437
+ </formats>
438
+ <label id="3309">
439
+ <name>Universal Music Ireland Ltd.</name>
440
+ </label>
441
+
442
+
443
+ </release>
444
+
445
+
446
+ <release id="353305">
447
+
448
+ <title>Perfect Symmetry</title>
449
+ <version>Frankmusik Remix</version>
450
+ <type>Single</type>
451
+ <barcode>00602517968530</barcode>
452
+ <year>2008</year>
453
+ <explicitContent>false</explicitContent>
454
+
455
+ <artist id="1">
456
+ <name>Keane</name>
457
+
458
+ <appearsAs>Keane</appearsAs>
459
+
460
+ <url>http://www.7digital.com/artists/keane/</url>
461
+ </artist>
462
+ <url>http://www.7digital.com/artists/keane/perfect-symmetry-5/</url>
463
+ <image>http://cdn.7static.com/static/img/sleeveart/00/003/533/0000353305_50.jpg</image>
464
+ <releaseDate>2008-12-28T00:00:00Z</releaseDate>
465
+
466
+ <addedDate>2008-12-17T12:42:19Z</addedDate>
467
+
468
+ <price>
469
+ <currency code="GBP">&#163;</currency>
470
+ <value></value>
471
+ <formattedPrice>N/A</formattedPrice>
472
+ <onSale>false</onSale>
473
+ </price>
474
+
475
+
476
+ <formats availableDrmFree="true">
477
+
478
+
479
+ <format id="17">
480
+ <fileFormat>MP3</fileFormat>
481
+ <bitRate>320</bitRate>
482
+ <drmFree>true</drmFree>
483
+ </format>
484
+
485
+ </formats>
486
+ <label id="3309">
487
+ <name>Universal Music Ireland Ltd.</name>
488
+ </label>
489
+
490
+
491
+ </release>
492
+
493
+
494
+ <release id="353302">
495
+
496
+ <title>Perfect Symmetry</title>
497
+ <version></version>
498
+ <type>Single</type>
499
+ <barcode>00602517969414</barcode>
500
+ <year>2008</year>
501
+ <explicitContent>false</explicitContent>
502
+
503
+ <artist id="1">
504
+ <name>Keane</name>
505
+
506
+ <appearsAs>Keane</appearsAs>
507
+
508
+ <url>http://www.7digital.com/artists/keane/</url>
509
+ </artist>
510
+ <url>http://www.7digital.com/artists/keane/perfect-symmetry-4/</url>
511
+ <image>http://cdn.7static.com/static/img/sleeveart/00/003/533/0000353302_50.jpg</image>
512
+ <releaseDate>2008-12-21T00:00:00Z</releaseDate>
513
+
514
+ <addedDate>2008-12-17T12:41:45Z</addedDate>
515
+
516
+ <price>
517
+ <currency code="GBP">&#163;</currency>
518
+ <value></value>
519
+ <formattedPrice>N/A</formattedPrice>
520
+ <onSale>false</onSale>
521
+ </price>
522
+
523
+
524
+ <formats availableDrmFree="true">
525
+
526
+
527
+ <format id="17">
528
+ <fileFormat>MP3</fileFormat>
529
+ <bitRate>320</bitRate>
530
+ <drmFree>true</drmFree>
531
+ </format>
532
+
533
+ </formats>
534
+ <label id="3309">
535
+ <name>Universal Music Ireland Ltd.</name>
536
+ </label>
537
+
538
+
539
+ </release>
540
+
541
+
542
+ </releases>
543
+
544
+
545
+ </response>