7digital 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
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>