7digital 0.1.2 → 0.1.5

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 (197) hide show
  1. checksums.yaml +7 -0
  2. data/README.rdoc +143 -143
  3. data/lib/sevendigital.rb +55 -55
  4. data/lib/sevendigital/api_operator.rb +127 -127
  5. data/lib/sevendigital/api_operator_cached.rb +91 -62
  6. data/lib/sevendigital/api_request.rb +72 -62
  7. data/lib/sevendigital/client.rb +122 -122
  8. data/lib/sevendigital/client_configuration.rb +85 -83
  9. data/lib/sevendigital/client_digestors.rb +122 -122
  10. data/lib/sevendigital/client_managers.rb +57 -57
  11. data/lib/sevendigital/digestion_tract/api_response_digestor.rb +48 -48
  12. data/lib/sevendigital/digestion_tract/artist_digestor.rb +35 -35
  13. data/lib/sevendigital/digestion_tract/basket_digestor.rb +19 -19
  14. data/lib/sevendigital/digestion_tract/basket_item_digestor.rb +26 -26
  15. data/lib/sevendigital/digestion_tract/chart_item_digestor.rb +34 -34
  16. data/lib/sevendigital/digestion_tract/country_digestor.rb +15 -15
  17. data/lib/sevendigital/digestion_tract/digestor.rb +122 -122
  18. data/lib/sevendigital/digestion_tract/download_url_digestor.rb +23 -23
  19. data/lib/sevendigital/digestion_tract/format_digestor.rb +24 -24
  20. data/lib/sevendigital/digestion_tract/label_digestor.rb +21 -21
  21. data/lib/sevendigital/digestion_tract/list_digestor.rb +24 -24
  22. data/lib/sevendigital/digestion_tract/list_item_digestor.rb +26 -26
  23. data/lib/sevendigital/digestion_tract/locker_digestor.rb +22 -22
  24. data/lib/sevendigital/digestion_tract/locker_release_digestor.rb +26 -26
  25. data/lib/sevendigital/digestion_tract/locker_track_digestor.rb +26 -26
  26. data/lib/sevendigital/digestion_tract/oauth_access_token_digestor.rb +18 -18
  27. data/lib/sevendigital/digestion_tract/oauth_request_token_digestor.rb +18 -18
  28. data/lib/sevendigital/digestion_tract/pager_digestor.rb +28 -28
  29. data/lib/sevendigital/digestion_tract/price_digestor.rb +28 -28
  30. data/lib/sevendigital/digestion_tract/release_digestor.rb +45 -45
  31. data/lib/sevendigital/digestion_tract/tag_digestor.rb +23 -23
  32. data/lib/sevendigital/digestion_tract/track_digestor.rb +38 -37
  33. data/lib/sevendigital/digestion_tract/user_card_digestor.rb +24 -24
  34. data/lib/sevendigital/digestion_tract/user_digestor.rb +21 -21
  35. data/lib/sevendigital/management/artist_manager.rb +97 -97
  36. data/lib/sevendigital/management/basket_manager.rb +29 -29
  37. data/lib/sevendigital/management/country_manager.rb +10 -10
  38. data/lib/sevendigital/management/list_manager.rb +18 -18
  39. data/lib/sevendigital/management/manager.rb +12 -12
  40. data/lib/sevendigital/management/oauth_manager.rb +23 -23
  41. data/lib/sevendigital/management/release_manager.rb +54 -54
  42. data/lib/sevendigital/management/tag_manager.rb +10 -10
  43. data/lib/sevendigital/management/track_manager.rb +29 -27
  44. data/lib/sevendigital/management/user_card_manager.rb +26 -26
  45. data/lib/sevendigital/management/user_manager.rb +76 -76
  46. data/lib/sevendigital/model/api_response.rb +32 -32
  47. data/lib/sevendigital/model/artist.rb +104 -104
  48. data/lib/sevendigital/model/basket.rb +15 -15
  49. data/lib/sevendigital/model/basket_item.rb +14 -14
  50. data/lib/sevendigital/model/card.rb +11 -11
  51. data/lib/sevendigital/model/chart_item.rb +9 -9
  52. data/lib/sevendigital/model/download_url.rb +7 -7
  53. data/lib/sevendigital/model/format.rb +7 -7
  54. data/lib/sevendigital/model/label.rb +7 -7
  55. data/lib/sevendigital/model/list.rb +4 -4
  56. data/lib/sevendigital/model/list_item.rb +8 -8
  57. data/lib/sevendigital/model/locker.rb +4 -4
  58. data/lib/sevendigital/model/locker_release.rb +9 -9
  59. data/lib/sevendigital/model/locker_track.rb +9 -9
  60. data/lib/sevendigital/model/price.rb +9 -9
  61. data/lib/sevendigital/model/release.rb +57 -57
  62. data/lib/sevendigital/model/sevendigital_error.rb +11 -11
  63. data/lib/sevendigital/model/sevendigital_object.rb +57 -57
  64. data/lib/sevendigital/model/tag.rb +7 -7
  65. data/lib/sevendigital/model/track.rb +87 -83
  66. data/lib/sevendigital/model/user.rb +74 -74
  67. data/lib/sevendigital/pager.rb +20 -20
  68. data/lib/sevendigital/version.rb +5 -5
  69. data/spec/api_operator_cached_spec.rb +233 -178
  70. data/spec/api_operator_spec.rb +320 -320
  71. data/spec/api_request_spec.rb +46 -31
  72. data/spec/client_configuration_spec.rb +78 -78
  73. data/spec/client_spec.rb +161 -161
  74. data/spec/data/config/sevendigital.yml +5 -5
  75. data/spec/data/configuration_env_override.yml +5 -5
  76. data/spec/data/configuration_override.yml +1 -1
  77. data/spec/digestion_tract/api_response_digestor_spec.rb +93 -93
  78. data/spec/digestion_tract/artist_digestor_spec.rb +81 -81
  79. data/spec/digestion_tract/basket_digestor_spec.rb +31 -31
  80. data/spec/digestion_tract/basket_item_digestor_spec.rb +58 -58
  81. data/spec/digestion_tract/chart_digestor_spec.rb +52 -52
  82. data/spec/digestion_tract/country_digestor_spec.rb +33 -33
  83. data/spec/digestion_tract/digestor_spec.rb +33 -33
  84. data/spec/digestion_tract/download_url_digestor_spec.rb +40 -40
  85. data/spec/digestion_tract/format_digestor_spec.rb +38 -38
  86. data/spec/digestion_tract/label_digestor_spec.rb +33 -33
  87. data/spec/digestion_tract/list_digestor_spec.rb +31 -31
  88. data/spec/digestion_tract/list_item_digestor_spec.rb +80 -80
  89. data/spec/digestion_tract/locker_digestor_spec.rb +30 -30
  90. data/spec/digestion_tract/locker_release_digestor_spec.rb +70 -70
  91. data/spec/digestion_tract/locker_track_digestor_spec.rb +56 -56
  92. data/spec/digestion_tract/oauth_access_token_digestor_spec.rb +34 -34
  93. data/spec/digestion_tract/oauth_request_token_digestor_spec.rb +34 -34
  94. data/spec/digestion_tract/pager_digestor_spec.rb +50 -50
  95. data/spec/digestion_tract/price_digestor_spec.rb +73 -73
  96. data/spec/digestion_tract/release_digestor_spec.rb +115 -115
  97. data/spec/digestion_tract/tag_digestor_spec.rb +46 -46
  98. data/spec/digestion_tract/track_digestor_spec.rb +105 -104
  99. data/spec/digestion_tract/user_card_digestor_spec.rb +58 -58
  100. data/spec/digestion_tract/user_digestor_spec.rb +42 -42
  101. data/spec/integration/artist_spec.rb +99 -86
  102. data/spec/integration/country_spec.rb +18 -18
  103. data/spec/integration/list_spec.rb +22 -22
  104. data/spec/integration/purchasing_spec.rb +24 -24
  105. data/spec/integration/release_spec.rb +34 -34
  106. data/spec/integration/sevendigital_spec.yml +4 -4
  107. data/spec/integration/track_spec.rb +38 -23
  108. data/spec/integration/user_spec.rb +22 -22
  109. data/spec/management/artist_manager_spec.rb +172 -172
  110. data/spec/management/basket_manager_spec.rb +77 -77
  111. data/spec/management/country_manager_spec.rb +34 -34
  112. data/spec/management/list_manager_spec.rb +26 -26
  113. data/spec/management/oauth_manager_spec.rb +72 -72
  114. data/spec/management/release_manager_spec.rb +200 -200
  115. data/spec/management/tag_manager_spec.rb +34 -34
  116. data/spec/management/track_manager_spec.rb +111 -107
  117. data/spec/management/user_card_manager_spec.rb +78 -78
  118. data/spec/management/user_manager_spec.rb +218 -218
  119. data/spec/model/api_response_spec.rb +48 -48
  120. data/spec/model/artist_spec.rb +162 -162
  121. data/spec/model/basket_spec.rb +62 -62
  122. data/spec/model/release_spec.rb +133 -133
  123. data/spec/model/sevendigital_object_spec.rb +73 -73
  124. data/spec/model/track_spec.rb +146 -144
  125. data/spec/model/user_spec.rb +181 -181
  126. data/spec/spec_helper.rb +86 -84
  127. data/spec/test-xml/methods/artist/browse.xml +21 -21
  128. data/spec/test-xml/methods/artist/byTag/top.xml +50 -50
  129. data/spec/test-xml/methods/artist/chart.xml +30 -30
  130. data/spec/test-xml/methods/artist/details.xml +9 -9
  131. data/spec/test-xml/methods/artist/releases.xml +544 -544
  132. data/spec/test-xml/methods/artist/search.xml +18 -18
  133. data/spec/test-xml/methods/artist/similar.xml +39 -39
  134. data/spec/test-xml/methods/artist/tags.xml +11 -11
  135. data/spec/test-xml/methods/artist/toptracks.xml +279 -279
  136. data/spec/test-xml/methods/basket/additem.xml +23 -23
  137. data/spec/test-xml/methods/basket/create.xml +10 -10
  138. data/spec/test-xml/methods/basket/index.xml +23 -23
  139. data/spec/test-xml/methods/basket/removeitem.xml +10 -10
  140. data/spec/test-xml/methods/country/resolve.xml +6 -6
  141. data/spec/test-xml/methods/editorial/list.xml +170 -170
  142. data/spec/test-xml/methods/oauth/accesstoken.xml +5 -5
  143. data/spec/test-xml/methods/oauth/requesttoken.xml +5 -5
  144. data/spec/test-xml/methods/release/bydate.xml +173 -173
  145. data/spec/test-xml/methods/release/bytag/top.xml +150 -150
  146. data/spec/test-xml/methods/release/chart.xml +181 -181
  147. data/spec/test-xml/methods/release/details.xml +48 -48
  148. data/spec/test-xml/methods/release/recommend.xml +89 -89
  149. data/spec/test-xml/methods/release/search.xml +194 -194
  150. data/spec/test-xml/methods/release/tags.xml +27 -27
  151. data/spec/test-xml/methods/release/tracks.xml +28 -28
  152. data/spec/test-xml/methods/tag/index.xml +16 -16
  153. data/spec/test-xml/methods/track/chart.xml +149 -149
  154. data/spec/test-xml/methods/track/details.xml +30 -30
  155. data/spec/test-xml/methods/track/search.xml +159 -159
  156. data/spec/test-xml/methods/user/details.xml +4 -4
  157. data/spec/test-xml/methods/user/locker.xml +49 -49
  158. data/spec/test-xml/methods/user/payment/card/add.xml +7 -7
  159. data/spec/test-xml/methods/user/payment/card/index.xml +7 -7
  160. data/spec/test-xml/methods/user/purchase/basket.xml +48 -48
  161. data/spec/test-xml/methods/user/purchase/item.xml +48 -48
  162. data/spec/test-xml/methods/user/signUp.xml +5 -5
  163. data/spec/test-xml/objects/artist.xml +7 -7
  164. data/spec/test-xml/objects/artist_chart_item.xml +7 -7
  165. data/spec/test-xml/objects/artist_list.xml +22 -22
  166. data/spec/test-xml/objects/artist_list_empty.xml +4 -4
  167. data/spec/test-xml/objects/basket.xml +21 -21
  168. data/spec/test-xml/objects/basket_item.xml +11 -11
  169. data/spec/test-xml/objects/basket_item_list.xml +25 -25
  170. data/spec/test-xml/objects/basket_item_list_empty.xml +1 -1
  171. data/spec/test-xml/objects/download_url.xml +7 -7
  172. data/spec/test-xml/objects/list.xml +89 -89
  173. data/spec/test-xml/objects/list_item_list.xml +85 -85
  174. data/spec/test-xml/objects/list_item_release.xml +13 -13
  175. data/spec/test-xml/objects/locker.xml +47 -47
  176. data/spec/test-xml/objects/locker_release.xml +40 -40
  177. data/spec/test-xml/objects/locker_release_list.xml +87 -87
  178. data/spec/test-xml/objects/locker_release_list_empty.xml +4 -4
  179. data/spec/test-xml/objects/locker_release_one_item_list.xml +43 -43
  180. data/spec/test-xml/objects/locker_track.xml +25 -25
  181. data/spec/test-xml/objects/locker_track_list.xml +26 -26
  182. data/spec/test-xml/objects/locker_track_list_empty.xml +2 -2
  183. data/spec/test-xml/objects/nested_release_list.xml +22 -22
  184. data/spec/test-xml/objects/oauth_access_token.xml +3 -3
  185. data/spec/test-xml/objects/oauth_request_token.xml +3 -3
  186. data/spec/test-xml/objects/price.xml +7 -7
  187. data/spec/test-xml/objects/release.xml +40 -40
  188. data/spec/test-xml/objects/release_chart_item.xml +39 -39
  189. data/spec/test-xml/objects/release_list.xml +18 -18
  190. data/spec/test-xml/objects/release_list_empty.xml +4 -4
  191. data/spec/test-xml/objects/response.xml +38 -38
  192. data/spec/test-xml/objects/tag.xml +4 -4
  193. data/spec/test-xml/objects/track.xml +34 -33
  194. data/spec/test-xml/objects/track_chart_item.xml +27 -27
  195. data/spec/test-xml/objects/user.xml +4 -4
  196. data/spec/test-xml/objects/user_payment_card.xml +5 -5
  197. metadata +15 -25
@@ -1,29 +1,29 @@
1
- module Sevendigital
2
-
3
- class BasketManager < Manager
4
-
5
- def get(basket_id, options={})
6
- api_response = @api_client.make_api_request(:GET, "basket", {:basketId => basket_id}, options)
7
- @api_client.basket_digestor.from_xml_doc(api_response.item_xml("basket"))
8
- end
9
-
10
- def create(options={})
11
- api_response = @api_client.make_api_request(:GET, "basket/create", {}, options)
12
- @api_client.basket_digestor.from_xml_doc(api_response.item_xml("basket"))
13
- end
14
-
15
- def add_item(basket_id, release_id, track_id=nil, options={})
16
- api_response = @api_client.make_api_request(:GET, "basket/addItem", {:basketId => basket_id, :releaseId => release_id, :trackId => track_id}, options)
17
- @api_client.basket_digestor.from_xml_doc(api_response.item_xml("basket"))
18
- end
19
-
20
-
21
- def remove_item(basket_id, item_id, options={})
22
- api_response = @api_client.make_api_request(:GET, "basket/removeItem", {:basketId => basket_id, :itemId => item_id}, options)
23
- @api_client.basket_digestor.from_xml_doc(api_response.item_xml("basket"))
24
- end
25
-
26
-
27
- end
28
-
29
- end
1
+ module Sevendigital
2
+
3
+ class BasketManager < Manager
4
+
5
+ def get(basket_id, options={})
6
+ api_response = @api_client.make_api_request(:GET, "basket", {:basketId => basket_id}, options)
7
+ @api_client.basket_digestor.from_xml_doc(api_response.item_xml("basket"))
8
+ end
9
+
10
+ def create(options={})
11
+ api_response = @api_client.make_api_request(:GET, "basket/create", {}, options)
12
+ @api_client.basket_digestor.from_xml_doc(api_response.item_xml("basket"))
13
+ end
14
+
15
+ def add_item(basket_id, release_id, track_id=nil, options={})
16
+ api_response = @api_client.make_api_request(:GET, "basket/addItem", {:basketId => basket_id, :releaseId => release_id, :trackId => track_id}, options)
17
+ @api_client.basket_digestor.from_xml_doc(api_response.item_xml("basket"))
18
+ end
19
+
20
+
21
+ def remove_item(basket_id, item_id, options={})
22
+ api_response = @api_client.make_api_request(:GET, "basket/removeItem", {:basketId => basket_id, :itemId => item_id}, options)
23
+ @api_client.basket_digestor.from_xml_doc(api_response.item_xml("basket"))
24
+ end
25
+
26
+
27
+ end
28
+
29
+ end
@@ -1,11 +1,11 @@
1
- module Sevendigital
2
-
3
- class CountryManager < Manager
4
-
5
- def resolve(ip_address, options={})
6
- api_response = @api_client.make_api_request(:GET, "country/resolve", {:ipaddress=>ip_address}, options)
7
- @api_client.country_digestor.from_xml_doc(api_response.item_xml("GeoIpLookup"))
8
- end
9
-
10
- end
1
+ module Sevendigital
2
+
3
+ class CountryManager < Manager
4
+
5
+ def resolve(ip_address, options={})
6
+ api_response = @api_client.make_api_request(:GET, "country/resolve", {:ipaddress=>ip_address}, options)
7
+ @api_client.country_digestor.from_xml_doc(api_response.item_xml("GeoIpLookup"))
8
+ end
9
+
10
+ end
11
11
  end
@@ -1,18 +1,18 @@
1
- module Sevendigital
2
-
3
- # provides access to Artist related API methods (artist/*)
4
- class ListManager < Manager
5
-
6
- # calls *editorial/list* API method and returns Artist with populated details
7
- #
8
- # @param [String] key
9
- # @param [Hash] options optional hash of additional API parameters, e.g. page_size => 50, etc
10
- # @return [List]
11
- def get_editorial_list(key, options={})
12
- api_response = @api_client.make_api_request(:GET, "editorial/list", {:key => key}, options)
13
- @api_client.list_digestor.from_xml_doc(api_response.item_xml("list"))
14
- end
15
-
16
- end
17
-
18
- end
1
+ module Sevendigital
2
+
3
+ # provides access to Artist related API methods (artist/*)
4
+ class ListManager < Manager
5
+
6
+ # calls *editorial/list* API method and returns Artist with populated details
7
+ #
8
+ # @param [String] key
9
+ # @param [Hash] options optional hash of additional API parameters, e.g. page_size => 50, etc
10
+ # @return [List]
11
+ def get_editorial_list(key, options={})
12
+ api_response = @api_client.make_api_request(:GET, "editorial/list", {:key => key}, options)
13
+ @api_client.list_digestor.from_xml_doc(api_response.item_xml("list"))
14
+ end
15
+
16
+ end
17
+
18
+ end
@@ -1,12 +1,12 @@
1
- module Sevendigital
2
-
3
- #@private
4
- class Manager # :nodoc:
5
-
6
- def initialize(api_client)
7
- @api_client = api_client
8
- end
9
-
10
- end
11
-
12
- end
1
+ module Sevendigital
2
+
3
+ #@private
4
+ class Manager # :nodoc:
5
+
6
+ def initialize(api_client)
7
+ @api_client = api_client
8
+ end
9
+
10
+ end
11
+
12
+ end
@@ -1,23 +1,23 @@
1
- module Sevendigital
2
-
3
- class OAuthManager < Manager
4
-
5
- def get_request_token
6
- api_response = @api_client.make_signed_api_request(:GET, "oauth/requestToken", {})
7
- @api_client.oauth_request_token_digestor.from_xml_doc(api_response.item_xml("oauth_request_token"))
8
- end
9
-
10
- def get_access_token(request_token)
11
- api_response = @api_client.make_signed_api_request(:GET, "oauth/accessToken", {}, {}, request_token)
12
- @api_client.oauth_access_token_digestor.from_xml_doc(api_response.item_xml("oauth_access_token"))
13
- end
14
-
15
- def authorise_request_token(username, password, request_token)
16
- api_response = @api_client.make_signed_api_request(:GET, "oauth/requestToken/authorise", \
17
- {:username => username, :password => password, :token => request_token.token})
18
- api_response.ok?
19
- end
20
-
21
- end
22
-
23
- end
1
+ module Sevendigital
2
+
3
+ class OAuthManager < Manager
4
+
5
+ def get_request_token
6
+ api_response = @api_client.make_signed_api_request(:GET, "oauth/requestToken", {})
7
+ @api_client.oauth_request_token_digestor.from_xml_doc(api_response.item_xml("oauth_request_token"))
8
+ end
9
+
10
+ def get_access_token(request_token)
11
+ api_response = @api_client.make_signed_api_request(:GET, "oauth/accessToken", {}, {}, request_token)
12
+ @api_client.oauth_access_token_digestor.from_xml_doc(api_response.item_xml("oauth_access_token"))
13
+ end
14
+
15
+ def authorise_request_token(username, password, request_token)
16
+ api_response = @api_client.make_signed_api_request(:GET, "oauth/requestToken/authorise", \
17
+ {:username => username, :password => password, :token => request_token.token})
18
+ api_response.ok?
19
+ end
20
+
21
+ end
22
+
23
+ end
@@ -1,55 +1,55 @@
1
- module Sevendigital
2
-
3
- class ReleaseManager < Manager
4
-
5
- def get_details(release_id, options = {})
6
- api_response = @api_client.make_api_request(:GET, "release/details", {:releaseId => release_id}, options)
7
- @api_client.release_digestor.from_xml_doc(api_response.item_xml("release"))
8
- end
9
-
10
- def get_tracks(release_id, options = {})
11
- options[:page_size] ||= 100
12
- api_response = @api_client.make_api_request(:GET, "release/tracks", {:releaseId => release_id}, options)
13
- @api_client.track_digestor.list_from_xml_doc(api_response.item_xml("tracks"))
14
- end
15
-
16
- def get_chart(options={})
17
- api_response = @api_client.make_api_request(:GET, "release/chart", {}, options)
18
- @api_client.chart_item_digestor.list_from_xml_doc(api_response.item_xml("chart"))
19
- end
20
-
21
- def get_by_date(from_date = nil, to_date = nil, options = {})
22
- parameters = Hash.new
23
- parameters[:fromDate] = from_date.strftime("%Y%m%d") if from_date
24
- parameters[:toDate] = to_date.strftime("%Y%m%d") if to_date
25
-
26
- api_response = @api_client.make_api_request(:GET, "release/byDate", parameters, options)
27
- @api_client.release_digestor.list_from_xml_doc(api_response.item_xml("releases"))
28
- end
29
-
30
- def get_recommendations(release_id, options = {})
31
- api_response = @api_client.make_api_request(:GET, "release/recommend", {:releaseId => release_id}, options)
32
- @api_client.release_digestor.nested_list_from_xml_doc(api_response.item_xml("recommendations"), :recommendedItem, :release)
33
- end
34
-
35
-
36
- def get_top_by_tag(tags, options = {})
37
- api_response = @api_client.make_api_request(:GET, "release/byTag/top", {:tags => tags}, options)
38
- @api_client.release_digestor.nested_list_from_xml_doc( \
39
- api_response.item_xml("taggedResults"), :taggedItem, :release )
40
- end
41
-
42
- def search(query, options={})
43
- api_response = @api_client.make_api_request(:GET, "release/search", {:q => query}, options)
44
- @api_client.release_digestor.nested_list_from_xml_doc(api_response.item_xml("searchResults"), :searchResult, :release)
45
- end
46
-
47
-
48
- def get_tags(release_id, options = {})
49
- api_response = @api_client.make_api_request(:GET, "release/tags", {:releaseId => release_id}, options)
50
- @api_client.tag_digestor.list_from_xml_doc(api_response.item_xml("tags"))
51
- end
52
-
53
- end
54
-
1
+ module Sevendigital
2
+
3
+ class ReleaseManager < Manager
4
+
5
+ def get_details(release_id, options = {})
6
+ api_response = @api_client.make_api_request(:GET, "release/details", {:releaseId => release_id}, options)
7
+ @api_client.release_digestor.from_xml_doc(api_response.item_xml("release"))
8
+ end
9
+
10
+ def get_tracks(release_id, options = {})
11
+ options[:page_size] ||= 100
12
+ api_response = @api_client.make_api_request(:GET, "release/tracks", {:releaseId => release_id}, options)
13
+ @api_client.track_digestor.list_from_xml_doc(api_response.item_xml("tracks"))
14
+ end
15
+
16
+ def get_chart(options={})
17
+ api_response = @api_client.make_api_request(:GET, "release/chart", {}, options)
18
+ @api_client.chart_item_digestor.list_from_xml_doc(api_response.item_xml("chart"))
19
+ end
20
+
21
+ def get_by_date(from_date = nil, to_date = nil, options = {})
22
+ parameters = Hash.new
23
+ parameters[:fromDate] = from_date.strftime("%Y%m%d") if from_date
24
+ parameters[:toDate] = to_date.strftime("%Y%m%d") if to_date
25
+
26
+ api_response = @api_client.make_api_request(:GET, "release/byDate", parameters, options)
27
+ @api_client.release_digestor.list_from_xml_doc(api_response.item_xml("releases"))
28
+ end
29
+
30
+ def get_recommendations(release_id, options = {})
31
+ api_response = @api_client.make_api_request(:GET, "release/recommend", {:releaseId => release_id}, options)
32
+ @api_client.release_digestor.nested_list_from_xml_doc(api_response.item_xml("recommendations"), :recommendedItem, :release)
33
+ end
34
+
35
+
36
+ def get_top_by_tag(tags, options = {})
37
+ api_response = @api_client.make_api_request(:GET, "release/byTag/top", {:tags => tags}, options)
38
+ @api_client.release_digestor.nested_list_from_xml_doc( \
39
+ api_response.item_xml("taggedResults"), :taggedItem, :release )
40
+ end
41
+
42
+ def search(query, options={})
43
+ api_response = @api_client.make_api_request(:GET, "release/search", {:q => query}, options)
44
+ @api_client.release_digestor.nested_list_from_xml_doc(api_response.item_xml("searchResults"), :searchResult, :release)
45
+ end
46
+
47
+
48
+ def get_tags(release_id, options = {})
49
+ api_response = @api_client.make_api_request(:GET, "release/tags", {:releaseId => release_id}, options)
50
+ @api_client.tag_digestor.list_from_xml_doc(api_response.item_xml("tags"))
51
+ end
52
+
53
+ end
54
+
55
55
  end
@@ -1,11 +1,11 @@
1
- module Sevendigital
2
-
3
- class TagManager < Manager
4
-
5
- def get_tag_list(options={})
6
- api_response = @api_client.make_api_request(:GET, "tag", {}, options)
7
- @api_client.tag_digestor.list_from_xml_doc(api_response.item_xml("tags"))
8
- end
9
-
10
- end
1
+ module Sevendigital
2
+
3
+ class TagManager < Manager
4
+
5
+ def get_tag_list(options={})
6
+ api_response = @api_client.make_api_request(:GET, "tag", {}, options)
7
+ @api_client.tag_digestor.list_from_xml_doc(api_response.item_xml("tags"))
8
+ end
9
+
10
+ end
11
11
  end
@@ -1,28 +1,30 @@
1
- module Sevendigital
2
- class TrackManager < Manager
3
- def get_details(id, options={})
4
- api_response = @api_client.make_api_request(:GET, "track/details", {:trackId => id}, options)
5
- @api_client.track_digestor.from_xml_doc(api_response.item_xml("track"))
6
- end
7
-
8
- def get_details_from_release(track_id, release_id, options={})
9
- @api_client.release.get_tracks(release_id, options).find {|track| track.id == track_id}
10
- end
11
-
12
- def get_chart(options={})
13
- api_response = @api_client.make_api_request(:GET, "track/chart", {}, options)
14
- @api_client.chart_item_digestor.list_from_xml_doc(api_response.item_xml("chart"))
15
- end
16
-
17
- def build_preview_url(id, options={})
18
- api_request = @api_client.create_api_request(:GET, "track/preview", {:trackId => id}, options)
19
- @api_client.operator.get_request_uri(api_request)
20
- end
21
-
22
- def search(query, options={})
23
- api_response = @api_client.make_api_request(:GET, "track/search", {:q => query}, options)
24
- @api_client.track_digestor.nested_list_from_xml_doc(api_response.item_xml("searchResults"), :searchResult, :track)
25
- end
26
-
27
- end
1
+ module Sevendigital
2
+ class TrackManager < Manager
3
+ def get_details(id, options={})
4
+ api_response = @api_client.make_api_request(:GET, "track/details", {:trackId => id}, options)
5
+ @api_client.track_digestor.from_xml_doc(api_response.item_xml("track"))
6
+ end
7
+
8
+ def get_details_from_release(track_id, release_id, options={})
9
+ @api_client.release.get_tracks(release_id, options).find {|track| track.id == track_id}
10
+ end
11
+
12
+ def get_chart(options={})
13
+ api_response = @api_client.make_api_request(:GET, "track/chart", {}, options)
14
+ @api_client.chart_item_digestor.list_from_xml_doc(api_response.item_xml("chart"))
15
+ end
16
+
17
+ def build_preview_url(id, options={})
18
+ api_request = @api_client.create_api_request(:GET, "clip/#{id}", {}, options)
19
+ api_request.api_service = :previews
20
+ api_request.require_signature
21
+ @api_client.operator.get_request_uri(api_request)
22
+ end
23
+
24
+ def search(query, options={})
25
+ api_response = @api_client.make_api_request(:GET, "track/search", {:q => query}, options)
26
+ @api_client.track_digestor.nested_list_from_xml_doc(api_response.item_xml("searchResults"), :searchResult, :track)
27
+ end
28
+
29
+ end
28
30
  end
@@ -1,27 +1,27 @@
1
- module Sevendigital
2
-
3
- class UserCardManager < Manager
4
-
5
- def get_card_list(token, options={})
6
- api_response = @api_client.make_signed_api_request(:GET, "user/payment/card", {}, options, token)
7
- @api_client.user_card_digestor.list_from_xml_doc(api_response.item_xml("cards"))
8
- end
9
-
10
- def add_card(card_number, card_type, card_holder_name, card_start_date, card_expiry_date, card_issue_number,
11
- card_verification_code, card_post_code, card_country, token, options={})
12
- api_response = @api_client.make_signed_api_request(:POST, "user/payment/card/add", {
13
- :cardNumber => card_number, :cardType => card_type, :cardHolderName => card_holder_name,
14
- :cardStartDate => card_start_date, :cardExpiryDate => card_expiry_date, :cardIssueNumber => card_issue_number,
15
- :cardVerificationCode => card_verification_code, :cardPostCode => card_post_code, :cardCountry => card_country
16
- }, options, token)
17
- @api_client.user_card_digestor.from_xml_doc(api_response.item_xml("card"))
18
- end
19
-
20
- def select_card(card_id, token, options={})
21
- api_response = @api_client.make_signed_api_request(
22
- :POST, "user/payment/card/select", {:cardId => card_id}, options, token)
23
- api_response.ok?
24
- end
25
-
26
- end
1
+ module Sevendigital
2
+
3
+ class UserCardManager < Manager
4
+
5
+ def get_card_list(token, options={})
6
+ api_response = @api_client.make_signed_api_request(:GET, "user/payment/card", {}, options, token)
7
+ @api_client.user_card_digestor.list_from_xml_doc(api_response.item_xml("cards"))
8
+ end
9
+
10
+ def add_card(card_number, card_type, card_holder_name, card_start_date, card_expiry_date, card_issue_number,
11
+ card_verification_code, card_post_code, card_country, token, options={})
12
+ api_response = @api_client.make_signed_api_request(:POST, "user/payment/card/add", {
13
+ :cardNumber => card_number, :cardType => card_type, :cardHolderName => card_holder_name,
14
+ :cardStartDate => card_start_date, :cardExpiryDate => card_expiry_date, :cardIssueNumber => card_issue_number,
15
+ :cardVerificationCode => card_verification_code, :cardPostCode => card_post_code, :cardCountry => card_country
16
+ }, options, token)
17
+ @api_client.user_card_digestor.from_xml_doc(api_response.item_xml("card"))
18
+ end
19
+
20
+ def select_card(card_id, token, options={})
21
+ api_response = @api_client.make_signed_api_request(
22
+ :POST, "user/payment/card/select", {:cardId => card_id}, options, token)
23
+ api_response.ok?
24
+ end
25
+
26
+ end
27
27
  end
@@ -1,76 +1,76 @@
1
- module Sevendigital
2
-
3
- class UserManager < Manager
4
-
5
- def get_details(token, options={})
6
- api_response = @api_client.make_signed_api_request(:GET, "user/details", {}, options, token)
7
- @locker = @api_client.user_digestor.from_xml_doc(api_response.item_xml("user"))
8
- end
9
-
10
- def login(access_token)
11
- raise Sevendigital::SevendigitalError if !access_token.kind_of? OAuth::AccessToken
12
- user = Sevendigital::User.new(@api_client)
13
- user.oauth_access_token = access_token
14
- user
15
- end
16
-
17
- def authenticate(email, password)
18
- request_token = @api_client.oauth.get_request_token
19
- return nil unless @api_client.oauth.authorise_request_token(email, password, request_token)
20
- user = Sevendigital::User.new(@api_client)
21
- user.oauth_access_token = @api_client.oauth.get_access_token(request_token)
22
- user
23
- end
24
-
25
- def sign_up(email, password, options={})
26
- api_response = @api_client.make_signed_api_request(:POST, "user/signUp", \
27
- {:emailAddress => email, :password=> password}, options)
28
- user = @api_client.user_digestor.from_xml_doc(api_response.item_xml("user"))
29
- user.oauth_access_token = authenticate(email, password).oauth_access_token
30
- user
31
- end
32
-
33
- def get_locker(token, options={})
34
- api_response = @api_client.make_signed_api_request(:GET, "user/locker", {}, options, token)
35
- @locker = @api_client.locker_digestor.from_xml_doc(api_response.item_xml("locker"))
36
- end
37
-
38
- # <b>DEPRECATED:</b> Please use <tt>purchase_item</tt> instead.
39
- def purchase(release_id, track_id, price, token, options={})
40
- warn "[DEPRECATION] 'purchase' is deprecated. Please use 'purchase_item' instead."
41
- purchase_item(release_id, track_id, price, token, options)
42
- end
43
-
44
- def purchase_item(release_id, track_id, price, token, options={})
45
- api_response = @api_client.make_signed_api_request(:GET, "user/purchase/item", \
46
- {:releaseId => release_id, :trackId => track_id, :price => price}, options, token)
47
- @api_client.locker_digestor.from_xml_doc(api_response.item_xml("purchase"))
48
- end
49
-
50
- def purchase_basket(basket_id, token, options={})
51
- api_response = @api_client.make_signed_api_request(:GET, "user/purchase/basket", \
52
- {:basketId => basket_id}, options, token)
53
- @api_client.locker_digestor.from_xml_doc(api_response.item_xml("purchase"))
54
- end
55
-
56
- def get_stream_track_url(release_id, track_id, token, options={})
57
- api_request = @api_client.create_api_request(:GET, "user/streamtrack", {:releaseId => release_id, :trackId => track_id}, options)
58
- api_request.api_service = :media
59
- api_request.require_signature
60
- api_request.token = token
61
- @api_client.operator.get_request_uri(api_request)
62
- end
63
-
64
- def get_add_card_url(return_url, token, options={})
65
- api_request = @api_client.create_api_request(:GET, "payment/addcard", {:returnUrl => return_url}, options)
66
- api_request.api_service = :account
67
- api_request.require_signature
68
- api_request.require_secure_connection
69
- api_request.token = token
70
- @api_client.operator.get_request_uri(api_request)
71
- end
72
-
73
-
74
- end
75
-
76
- end
1
+ module Sevendigital
2
+
3
+ class UserManager < Manager
4
+
5
+ def get_details(token, options={})
6
+ api_response = @api_client.make_signed_api_request(:GET, "user/details", {}, options, token)
7
+ @locker = @api_client.user_digestor.from_xml_doc(api_response.item_xml("user"))
8
+ end
9
+
10
+ def login(access_token)
11
+ raise Sevendigital::SevendigitalError if !access_token.kind_of? OAuth::AccessToken
12
+ user = Sevendigital::User.new(@api_client)
13
+ user.oauth_access_token = access_token
14
+ user
15
+ end
16
+
17
+ def authenticate(email, password)
18
+ request_token = @api_client.oauth.get_request_token
19
+ return nil unless @api_client.oauth.authorise_request_token(email, password, request_token)
20
+ user = Sevendigital::User.new(@api_client)
21
+ user.oauth_access_token = @api_client.oauth.get_access_token(request_token)
22
+ user
23
+ end
24
+
25
+ def sign_up(email, password, options={})
26
+ api_response = @api_client.make_signed_api_request(:POST, "user/signUp", \
27
+ {:emailAddress => email, :password=> password}, options)
28
+ user = @api_client.user_digestor.from_xml_doc(api_response.item_xml("user"))
29
+ user.oauth_access_token = authenticate(email, password).oauth_access_token
30
+ user
31
+ end
32
+
33
+ def get_locker(token, options={})
34
+ api_response = @api_client.make_signed_api_request(:GET, "user/locker", {}, options, token)
35
+ @locker = @api_client.locker_digestor.from_xml_doc(api_response.item_xml("locker"))
36
+ end
37
+
38
+ # <b>DEPRECATED:</b> Please use <tt>purchase_item</tt> instead.
39
+ def purchase(release_id, track_id, price, token, options={})
40
+ warn "[DEPRECATION] 'purchase' is deprecated. Please use 'purchase_item' instead."
41
+ purchase_item(release_id, track_id, price, token, options)
42
+ end
43
+
44
+ def purchase_item(release_id, track_id, price, token, options={})
45
+ api_response = @api_client.make_signed_api_request(:GET, "user/purchase/item", \
46
+ {:releaseId => release_id, :trackId => track_id, :price => price}, options, token)
47
+ @api_client.locker_digestor.from_xml_doc(api_response.item_xml("purchase"))
48
+ end
49
+
50
+ def purchase_basket(basket_id, token, options={})
51
+ api_response = @api_client.make_signed_api_request(:GET, "user/purchase/basket", \
52
+ {:basketId => basket_id}, options, token)
53
+ @api_client.locker_digestor.from_xml_doc(api_response.item_xml("purchase"))
54
+ end
55
+
56
+ def get_stream_track_url(release_id, track_id, token, options={})
57
+ api_request = @api_client.create_api_request(:GET, "user/streamtrack", {:releaseId => release_id, :trackId => track_id}, options)
58
+ api_request.api_service = :media
59
+ api_request.require_signature
60
+ api_request.token = token
61
+ @api_client.operator.get_request_uri(api_request)
62
+ end
63
+
64
+ def get_add_card_url(return_url, token, options={})
65
+ api_request = @api_client.create_api_request(:GET, "payment/addcard", {:returnUrl => return_url}, options)
66
+ api_request.api_service = :account
67
+ api_request.require_signature
68
+ api_request.require_secure_connection
69
+ api_request.token = token
70
+ @api_client.operator.get_request_uri(api_request)
71
+ end
72
+
73
+
74
+ end
75
+
76
+ end