7digital 0.0.6 → 0.0.7

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 (269) hide show
  1. data/README.rdoc +136 -136
  2. data/lib/sevendigital.rb +53 -53
  3. data/lib/sevendigital/api_operator.rb +130 -130
  4. data/lib/sevendigital/api_operator_cached.rb +41 -41
  5. data/lib/sevendigital/api_request.rb +65 -65
  6. data/lib/sevendigital/client.rb +113 -113
  7. data/lib/sevendigital/client_configuration.rb +86 -86
  8. data/lib/sevendigital/client_digestors.rb +107 -107
  9. data/lib/sevendigital/client_managers.rb +47 -47
  10. data/lib/sevendigital/digestion_tract/api_response_digestor.rb +58 -58
  11. data/lib/sevendigital/digestion_tract/artist_digestor.rb +32 -32
  12. data/lib/sevendigital/digestion_tract/basket_digestor.rb +19 -19
  13. data/lib/sevendigital/digestion_tract/basket_item_digestor.rb +26 -26
  14. data/lib/sevendigital/digestion_tract/chart_item_digestor.rb +28 -28
  15. data/lib/sevendigital/digestion_tract/digestor.rb +71 -71
  16. data/lib/sevendigital/digestion_tract/download_url_digestor.rb +20 -20
  17. data/lib/sevendigital/digestion_tract/format_digestor.rb +22 -22
  18. data/lib/sevendigital/digestion_tract/label_digestor.rb +20 -20
  19. data/lib/sevendigital/digestion_tract/locker_digestor.rb +18 -18
  20. data/lib/sevendigital/digestion_tract/locker_release_digestor.rb +20 -20
  21. data/lib/sevendigital/digestion_tract/locker_track_digestor.rb +22 -22
  22. data/lib/sevendigital/digestion_tract/oauth_access_token_digestor.rb +14 -14
  23. data/lib/sevendigital/digestion_tract/oauth_request_token_digestor.rb +14 -14
  24. data/lib/sevendigital/digestion_tract/pager_digestor.rb +24 -24
  25. data/lib/sevendigital/digestion_tract/price_digestor.rb +25 -25
  26. data/lib/sevendigital/digestion_tract/release_digestor.rb +53 -53
  27. data/lib/sevendigital/digestion_tract/tag_digestor.rb +22 -22
  28. data/lib/sevendigital/digestion_tract/track_digestor.rb +38 -38
  29. data/lib/sevendigital/digestion_tract/user_card_digestor.rb +23 -23
  30. data/lib/sevendigital/digestion_tract/user_digestor.rb +20 -20
  31. data/lib/sevendigital/management/artist_manager.rb +99 -99
  32. data/lib/sevendigital/management/basket_manager.rb +29 -29
  33. data/lib/sevendigital/management/manager.rb +12 -12
  34. data/lib/sevendigital/management/oauth_manager.rb +23 -23
  35. data/lib/sevendigital/management/release_manager.rb +56 -56
  36. data/lib/sevendigital/management/tag_manager.rb +10 -10
  37. data/lib/sevendigital/management/track_manager.rb +28 -28
  38. data/lib/sevendigital/management/user_card_manager.rb +26 -26
  39. data/lib/sevendigital/management/user_manager.rb +71 -71
  40. data/lib/sevendigital/model/api_response.rb +25 -25
  41. data/lib/sevendigital/model/artist.rb +94 -94
  42. data/lib/sevendigital/model/basket.rb +15 -15
  43. data/lib/sevendigital/model/basket_item.rb +14 -14
  44. data/lib/sevendigital/model/card.rb +11 -11
  45. data/lib/sevendigital/model/chart_item.rb +9 -9
  46. data/lib/sevendigital/model/download_url.rb +7 -7
  47. data/lib/sevendigital/model/format.rb +7 -7
  48. data/lib/sevendigital/model/label.rb +7 -7
  49. data/lib/sevendigital/model/locker.rb +4 -4
  50. data/lib/sevendigital/model/locker_release.rb +9 -9
  51. data/lib/sevendigital/model/locker_track.rb +9 -9
  52. data/lib/sevendigital/model/price.rb +9 -9
  53. data/lib/sevendigital/model/release.rb +52 -52
  54. data/lib/sevendigital/model/sevendigital_error.rb +11 -11
  55. data/lib/sevendigital/model/sevendigital_object.rb +57 -57
  56. data/lib/sevendigital/model/tag.rb +7 -7
  57. data/lib/sevendigital/model/track.rb +83 -83
  58. data/lib/sevendigital/model/user.rb +63 -63
  59. data/lib/sevendigital/pager.rb +23 -23
  60. data/lib/sevendigital/peachy_patchy.rb +9 -9
  61. data/lib/sevendigital/proxy_police.rb +27 -27
  62. data/lib/sevendigital/version.rb +5 -5
  63. data/spec/api_operator_cached_spec.rb +178 -178
  64. data/spec/api_operator_spec.rb +336 -336
  65. data/spec/api_request_spec.rb +31 -31
  66. data/spec/client_configuration_spec.rb +79 -74
  67. data/spec/client_spec.rb +162 -162
  68. data/spec/coverage/assets/0.3.9/app.js +66 -0
  69. data/spec/coverage/assets/0.3.9/fancybox/blank.gif +0 -0
  70. data/spec/coverage/assets/0.3.9/fancybox/fancy_close.png +0 -0
  71. data/spec/coverage/assets/0.3.9/fancybox/fancy_loading.png +0 -0
  72. data/spec/coverage/assets/0.3.9/fancybox/fancy_nav_left.png +0 -0
  73. data/spec/coverage/assets/0.3.9/fancybox/fancy_nav_right.png +0 -0
  74. data/spec/coverage/assets/0.3.9/fancybox/fancy_shadow_e.png +0 -0
  75. data/spec/coverage/assets/0.3.9/fancybox/fancy_shadow_n.png +0 -0
  76. data/spec/coverage/assets/0.3.9/fancybox/fancy_shadow_ne.png +0 -0
  77. data/spec/coverage/assets/0.3.9/fancybox/fancy_shadow_nw.png +0 -0
  78. data/spec/coverage/assets/0.3.9/fancybox/fancy_shadow_s.png +0 -0
  79. data/spec/coverage/assets/0.3.9/fancybox/fancy_shadow_se.png +0 -0
  80. data/spec/coverage/assets/0.3.9/fancybox/fancy_shadow_sw.png +0 -0
  81. data/spec/coverage/assets/0.3.9/fancybox/fancy_shadow_w.png +0 -0
  82. data/spec/coverage/assets/0.3.9/fancybox/fancy_title_left.png +0 -0
  83. data/spec/coverage/assets/0.3.9/fancybox/fancy_title_main.png +0 -0
  84. data/spec/coverage/assets/0.3.9/fancybox/fancy_title_over.png +0 -0
  85. data/spec/coverage/assets/0.3.9/fancybox/fancy_title_right.png +0 -0
  86. data/spec/coverage/assets/0.3.9/fancybox/fancybox-x.png +0 -0
  87. data/spec/coverage/assets/0.3.9/fancybox/fancybox-y.png +0 -0
  88. data/spec/coverage/assets/0.3.9/fancybox/fancybox.png +0 -0
  89. data/spec/coverage/assets/0.3.9/fancybox/jquery.fancybox-1.3.1.css +363 -0
  90. data/spec/coverage/assets/0.3.9/fancybox/jquery.fancybox-1.3.1.pack.js +44 -0
  91. data/spec/coverage/assets/0.3.9/favicon.png +0 -0
  92. data/spec/coverage/assets/0.3.9/jquery-1.4.2.min.js +155 -0
  93. data/spec/coverage/assets/0.3.9/jquery.dataTables.min.js +152 -0
  94. data/spec/coverage/assets/0.3.9/jquery.timeago.js +141 -0
  95. data/spec/coverage/assets/0.3.9/jquery.url.js +174 -0
  96. data/spec/coverage/assets/0.3.9/loading.gif +0 -0
  97. data/spec/coverage/assets/0.3.9/magnify.png +0 -0
  98. data/spec/coverage/assets/0.3.9/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  99. data/spec/coverage/assets/0.3.9/smoothness/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
  100. data/spec/coverage/assets/0.3.9/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
  101. data/spec/coverage/assets/0.3.9/smoothness/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  102. data/spec/coverage/assets/0.3.9/smoothness/images/ui-bg_glass_75_dadada_1x400.png +0 -0
  103. data/spec/coverage/assets/0.3.9/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
  104. data/spec/coverage/assets/0.3.9/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  105. data/spec/coverage/assets/0.3.9/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
  106. data/spec/coverage/assets/0.3.9/smoothness/images/ui-icons_222222_256x240.png +0 -0
  107. data/spec/coverage/assets/0.3.9/smoothness/images/ui-icons_2e83ff_256x240.png +0 -0
  108. data/spec/coverage/assets/0.3.9/smoothness/images/ui-icons_454545_256x240.png +0 -0
  109. data/spec/coverage/assets/0.3.9/smoothness/images/ui-icons_888888_256x240.png +0 -0
  110. data/spec/coverage/assets/0.3.9/smoothness/images/ui-icons_cd0a0a_256x240.png +0 -0
  111. data/spec/coverage/assets/0.3.9/smoothness/jquery-ui-1.8.4.custom.css +295 -0
  112. data/spec/coverage/assets/0.3.9/stylesheet.css +341 -0
  113. data/spec/coverage/index.html +47481 -0
  114. data/spec/coverage/resultset.yml +3556 -0
  115. data/spec/data/config/sevendigital.yml +5 -5
  116. data/spec/data/configuration_env_override.yml +5 -5
  117. data/spec/data/configuration_override.yml +1 -1
  118. data/spec/digestion_tract/api_response_digestor_spec.rb +92 -92
  119. data/spec/digestion_tract/artist_digestor_spec.rb +81 -81
  120. data/spec/digestion_tract/basket_digestor_spec.rb +31 -31
  121. data/spec/digestion_tract/basket_item_digestor_spec.rb +58 -58
  122. data/spec/digestion_tract/chart_digestor_spec.rb +52 -52
  123. data/spec/digestion_tract/download_url_digestor_spec.rb +40 -40
  124. data/spec/digestion_tract/format_digestor_spec.rb +38 -38
  125. data/spec/digestion_tract/label_digestor_spec.rb +33 -33
  126. data/spec/digestion_tract/locker_digestor_spec.rb +30 -30
  127. data/spec/digestion_tract/locker_release_digestor_spec.rb +70 -70
  128. data/spec/digestion_tract/locker_track_digestor_spec.rb +56 -56
  129. data/spec/digestion_tract/oauth_access_token_digestor_spec.rb +34 -34
  130. data/spec/digestion_tract/oauth_request_token_digestor_spec.rb +34 -34
  131. data/spec/digestion_tract/pager_digestor_spec.rb +50 -50
  132. data/spec/digestion_tract/price_digestor_spec.rb +73 -73
  133. data/spec/digestion_tract/release_digestor_spec.rb +101 -101
  134. data/spec/digestion_tract/tag_digestor_spec.rb +46 -46
  135. data/spec/digestion_tract/track_digestor_spec.rb +104 -104
  136. data/spec/digestion_tract/user_card_digestor_spec.rb +58 -58
  137. data/spec/digestion_tract/user_digestor_spec.rb +44 -44
  138. data/spec/management/artist_manager_spec.rb +151 -151
  139. data/spec/management/basket_manager_spec.rb +77 -77
  140. data/spec/management/oauth_manager_spec.rb +72 -72
  141. data/spec/management/release_manager_spec.rb +200 -200
  142. data/spec/management/tag_manager_spec.rb +34 -34
  143. data/spec/management/track_manager_spec.rb +107 -107
  144. data/spec/management/user_card_manager_spec.rb +78 -78
  145. data/spec/management/user_manager_spec.rb +202 -202
  146. data/spec/model/api_response_spec.rb +48 -48
  147. data/spec/model/artist_spec.rb +154 -154
  148. data/spec/model/basket_spec.rb +62 -62
  149. data/spec/model/coverage/assets/0.3.9/app.js +66 -0
  150. data/spec/model/coverage/assets/0.3.9/fancybox/blank.gif +0 -0
  151. data/spec/model/coverage/assets/0.3.9/fancybox/fancy_close.png +0 -0
  152. data/spec/model/coverage/assets/0.3.9/fancybox/fancy_loading.png +0 -0
  153. data/spec/model/coverage/assets/0.3.9/fancybox/fancy_nav_left.png +0 -0
  154. data/spec/model/coverage/assets/0.3.9/fancybox/fancy_nav_right.png +0 -0
  155. data/spec/model/coverage/assets/0.3.9/fancybox/fancy_shadow_e.png +0 -0
  156. data/spec/model/coverage/assets/0.3.9/fancybox/fancy_shadow_n.png +0 -0
  157. data/spec/model/coverage/assets/0.3.9/fancybox/fancy_shadow_ne.png +0 -0
  158. data/spec/model/coverage/assets/0.3.9/fancybox/fancy_shadow_nw.png +0 -0
  159. data/spec/model/coverage/assets/0.3.9/fancybox/fancy_shadow_s.png +0 -0
  160. data/spec/model/coverage/assets/0.3.9/fancybox/fancy_shadow_se.png +0 -0
  161. data/spec/model/coverage/assets/0.3.9/fancybox/fancy_shadow_sw.png +0 -0
  162. data/spec/model/coverage/assets/0.3.9/fancybox/fancy_shadow_w.png +0 -0
  163. data/spec/model/coverage/assets/0.3.9/fancybox/fancy_title_left.png +0 -0
  164. data/spec/model/coverage/assets/0.3.9/fancybox/fancy_title_main.png +0 -0
  165. data/spec/model/coverage/assets/0.3.9/fancybox/fancy_title_over.png +0 -0
  166. data/spec/model/coverage/assets/0.3.9/fancybox/fancy_title_right.png +0 -0
  167. data/spec/model/coverage/assets/0.3.9/fancybox/fancybox-x.png +0 -0
  168. data/spec/model/coverage/assets/0.3.9/fancybox/fancybox-y.png +0 -0
  169. data/spec/model/coverage/assets/0.3.9/fancybox/fancybox.png +0 -0
  170. data/spec/model/coverage/assets/0.3.9/fancybox/jquery.fancybox-1.3.1.css +363 -0
  171. data/spec/model/coverage/assets/0.3.9/fancybox/jquery.fancybox-1.3.1.pack.js +44 -0
  172. data/spec/model/coverage/assets/0.3.9/favicon.png +0 -0
  173. data/spec/model/coverage/assets/0.3.9/jquery-1.4.2.min.js +155 -0
  174. data/spec/model/coverage/assets/0.3.9/jquery.dataTables.min.js +152 -0
  175. data/spec/model/coverage/assets/0.3.9/jquery.timeago.js +141 -0
  176. data/spec/model/coverage/assets/0.3.9/jquery.url.js +174 -0
  177. data/spec/model/coverage/assets/0.3.9/loading.gif +0 -0
  178. data/spec/model/coverage/assets/0.3.9/magnify.png +0 -0
  179. data/spec/model/coverage/assets/0.3.9/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  180. data/spec/model/coverage/assets/0.3.9/smoothness/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
  181. data/spec/model/coverage/assets/0.3.9/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
  182. data/spec/model/coverage/assets/0.3.9/smoothness/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  183. data/spec/model/coverage/assets/0.3.9/smoothness/images/ui-bg_glass_75_dadada_1x400.png +0 -0
  184. data/spec/model/coverage/assets/0.3.9/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
  185. data/spec/model/coverage/assets/0.3.9/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  186. data/spec/model/coverage/assets/0.3.9/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
  187. data/spec/model/coverage/assets/0.3.9/smoothness/images/ui-icons_222222_256x240.png +0 -0
  188. data/spec/model/coverage/assets/0.3.9/smoothness/images/ui-icons_2e83ff_256x240.png +0 -0
  189. data/spec/model/coverage/assets/0.3.9/smoothness/images/ui-icons_454545_256x240.png +0 -0
  190. data/spec/model/coverage/assets/0.3.9/smoothness/images/ui-icons_888888_256x240.png +0 -0
  191. data/spec/model/coverage/assets/0.3.9/smoothness/images/ui-icons_cd0a0a_256x240.png +0 -0
  192. data/spec/model/coverage/assets/0.3.9/smoothness/jquery-ui-1.8.4.custom.css +295 -0
  193. data/spec/model/coverage/assets/0.3.9/stylesheet.css +341 -0
  194. data/spec/model/coverage/index.html +8637 -0
  195. data/spec/model/coverage/resultset.yml +642 -0
  196. data/spec/model/release_spec.rb +122 -122
  197. data/spec/model/sevendigital_object_spec.rb +73 -73
  198. data/spec/model/track_spec.rb +144 -144
  199. data/spec/model/user_spec.rb +160 -160
  200. data/spec/pager_spec.rb +7 -7
  201. data/spec/peachy_spec_helper_patch.rb +6 -6
  202. data/spec/proxy_police_spec.rb +69 -69
  203. data/spec/sevendigital_spec.rb +51 -70
  204. data/spec/sevendigital_spec.yml +4 -4
  205. data/spec/spec_helper.rb +64 -64
  206. data/spec/test-xml/methods/artist/browse.xml +21 -21
  207. data/spec/test-xml/methods/artist/byTag/top.xml +50 -50
  208. data/spec/test-xml/methods/artist/chart.xml +30 -30
  209. data/spec/test-xml/methods/artist/details.xml +9 -9
  210. data/spec/test-xml/methods/artist/releases.xml +544 -544
  211. data/spec/test-xml/methods/artist/search.xml +18 -18
  212. data/spec/test-xml/methods/artist/similar.xml +39 -39
  213. data/spec/test-xml/methods/artist/tags.xml +11 -11
  214. data/spec/test-xml/methods/artist/toptracks.xml +279 -279
  215. data/spec/test-xml/methods/basket/additem.xml +23 -23
  216. data/spec/test-xml/methods/basket/create.xml +10 -10
  217. data/spec/test-xml/methods/basket/index.xml +23 -23
  218. data/spec/test-xml/methods/basket/removeitem.xml +10 -10
  219. data/spec/test-xml/methods/oauth/accesstoken.xml +5 -5
  220. data/spec/test-xml/methods/oauth/requesttoken.xml +5 -5
  221. data/spec/test-xml/methods/release/bydate.xml +173 -173
  222. data/spec/test-xml/methods/release/bytag/top.xml +150 -150
  223. data/spec/test-xml/methods/release/chart.xml +181 -181
  224. data/spec/test-xml/methods/release/details.xml +48 -48
  225. data/spec/test-xml/methods/release/recommend.xml +89 -89
  226. data/spec/test-xml/methods/release/search.xml +194 -194
  227. data/spec/test-xml/methods/release/tags.xml +27 -27
  228. data/spec/test-xml/methods/release/tracks.xml +28 -28
  229. data/spec/test-xml/methods/tag/index.xml +16 -16
  230. data/spec/test-xml/methods/track/chart.xml +149 -149
  231. data/spec/test-xml/methods/track/details.xml +30 -30
  232. data/spec/test-xml/methods/track/search.xml +159 -159
  233. data/spec/test-xml/methods/user/locker.xml +49 -49
  234. data/spec/test-xml/methods/user/payment/card/add.xml +7 -7
  235. data/spec/test-xml/methods/user/payment/card/index.xml +7 -7
  236. data/spec/test-xml/methods/user/purchase/basket.xml +49 -0
  237. data/spec/test-xml/methods/user/purchase/item.xml +48 -48
  238. data/spec/test-xml/methods/user/signUp.xml +5 -5
  239. data/spec/test-xml/objects/artist.xml +6 -6
  240. data/spec/test-xml/objects/artist_chart_item.xml +7 -7
  241. data/spec/test-xml/objects/artist_list.xml +22 -22
  242. data/spec/test-xml/objects/artist_list_empty.xml +4 -4
  243. data/spec/test-xml/objects/basket.xml +21 -21
  244. data/spec/test-xml/objects/basket_item.xml +11 -11
  245. data/spec/test-xml/objects/basket_item_list.xml +25 -25
  246. data/spec/test-xml/objects/basket_item_list_empty.xml +1 -1
  247. data/spec/test-xml/objects/download_url.xml +7 -7
  248. data/spec/test-xml/objects/locker.xml +47 -47
  249. data/spec/test-xml/objects/locker_release.xml +40 -40
  250. data/spec/test-xml/objects/locker_release_list.xml +87 -87
  251. data/spec/test-xml/objects/locker_release_list_empty.xml +4 -4
  252. data/spec/test-xml/objects/locker_release_one_item_list.xml +43 -43
  253. data/spec/test-xml/objects/locker_track.xml +25 -25
  254. data/spec/test-xml/objects/locker_track_list.xml +26 -26
  255. data/spec/test-xml/objects/locker_track_list_empty.xml +2 -2
  256. data/spec/test-xml/objects/oauth_access_token.xml +3 -3
  257. data/spec/test-xml/objects/oauth_request_token.xml +3 -3
  258. data/spec/test-xml/objects/price.xml +7 -7
  259. data/spec/test-xml/objects/release.xml +40 -40
  260. data/spec/test-xml/objects/release_chart_item.xml +39 -39
  261. data/spec/test-xml/objects/release_list.xml +18 -18
  262. data/spec/test-xml/objects/release_list_empty.xml +4 -4
  263. data/spec/test-xml/objects/response.xml +38 -38
  264. data/spec/test-xml/objects/tag.xml +4 -4
  265. data/spec/test-xml/objects/track.xml +33 -33
  266. data/spec/test-xml/objects/track_chart_item.xml +27 -27
  267. data/spec/test-xml/objects/user.xml +4 -4
  268. data/spec/test-xml/objects/user_payment_card.xml +5 -5
  269. metadata +193 -3
@@ -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(api_response.content.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(api_response.content.tags)
8
+ end
9
+
10
+ end
11
11
  end
@@ -1,29 +1,29 @@
1
- module Sevendigital
2
-
3
- class TrackManager < Manager
4
-
5
- def get_details(id, options={})
6
- api_response = @api_client.make_api_request(:GET, "track/details", {:trackId => id}, options)
7
- @api_client.track_digestor.from_xml(api_response.content.track)
8
- end
9
-
10
- def get_details_from_release(track_id, release_id, options={})
11
- @api_client.release.get_tracks(release_id, options).find {|track| track.id == track_id}
12
- end
13
-
14
- def get_chart(options={})
15
- api_response = @api_client.make_api_request(:GET, "track/chart", {}, options)
16
- @api_client.chart_item_digestor.list_from_xml(api_response.content.chart)
17
- end
18
-
19
- def build_preview_url(id, options={})
20
- api_request = @api_client.create_api_request(:GET, "track/preview", {:trackId => id}, options)
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(api_response.content.search_results, :search_result, :search_results)
27
- end
28
- end
1
+ module Sevendigital
2
+
3
+ class TrackManager < Manager
4
+
5
+ def get_details(id, options={})
6
+ api_response = @api_client.make_api_request(:GET, "track/details", {:trackId => id}, options)
7
+ @api_client.track_digestor.from_xml(api_response.content.track)
8
+ end
9
+
10
+ def get_details_from_release(track_id, release_id, options={})
11
+ @api_client.release.get_tracks(release_id, options).find {|track| track.id == track_id}
12
+ end
13
+
14
+ def get_chart(options={})
15
+ api_response = @api_client.make_api_request(:GET, "track/chart", {}, options)
16
+ @api_client.chart_item_digestor.list_from_xml(api_response.content.chart)
17
+ end
18
+
19
+ def build_preview_url(id, options={})
20
+ api_request = @api_client.create_api_request(:GET, "track/preview", {:trackId => id}, options)
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(api_response.content.search_results, :search_result, :search_results)
27
+ end
28
+ end
29
29
  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(api_response.content.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(api_response.content.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(api_response.content.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(api_response.content.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,71 +1,71 @@
1
- module Sevendigital
2
-
3
- class UserManager < Manager
4
-
5
- def login(access_token)
6
- raise Sevendigital::SevendigitalError if !access_token.kind_of? OAuth::AccessToken
7
- user = Sevendigital::User.new(@api_client)
8
- user.oauth_access_token = access_token
9
- user
10
- end
11
-
12
- def authenticate(email, password)
13
- request_token = @api_client.oauth.get_request_token
14
- return nil unless @api_client.oauth.authorise_request_token(email, password, request_token)
15
- user = Sevendigital::User.new(@api_client)
16
- user.oauth_access_token = @api_client.oauth.get_access_token(request_token)
17
- user
18
- end
19
-
20
- def sign_up(email, password, options={})
21
- api_response = @api_client.make_signed_api_request(:POST, "user/signUp", \
22
- {:emailAddress => email, :password=> password}, options)
23
- user = @api_client.user_digestor.from_xml(api_response.content.user)
24
- user.oauth_access_token = authenticate(email, password).oauth_access_token
25
- user
26
- end
27
-
28
- def get_locker(token, options={})
29
- api_response = @api_client.make_signed_api_request(:GET, "user/locker", {}, options, token)
30
- @locker = @api_client.locker_digestor.from_xml(api_response.content.locker)
31
- end
32
-
33
- # <b>DEPRECATED:</b> Please use <tt>purchase_item</tt> instead.
34
- def purchase(release_id, track_id, price, token, options={})
35
- warn "[DEPRECATION] 'purchase' is deprecated. Please use 'purchase_item' instead."
36
- purchase_item(release_id, track_id, price, token, options)
37
- end
38
-
39
- def purchase_item(release_id, track_id, price, token, options={})
40
- api_response = @api_client.make_signed_api_request(:GET, "user/purchase/item", \
41
- {:releaseId => release_id, :trackId => track_id, :price => price}, options, token)
42
- @api_client.locker_digestor.from_xml(api_response.content.purchase)
43
- end
44
-
45
- def purchase_basket(basket_id, token, options={})
46
- api_response = @api_client.make_signed_api_request(:GET, "user/purchase/basket", \
47
- {:basketId => basket_id}, options, token)
48
- @api_client.locker_digestor.from_xml(api_response.content.purchase)
49
- end
50
-
51
- def get_stream_track_url(release_id, track_id, token, options={})
52
- api_request = @api_client.create_api_request(:GET, "user/streamtrack", {:releaseId => release_id, :trackId => track_id}, options)
53
- api_request.api_service = :media
54
- api_request.require_signature
55
- api_request.token = token
56
- @api_client.operator.get_request_uri(api_request)
57
- end
58
-
59
- def get_add_card_url(return_url, token, options={})
60
- api_request = @api_client.create_api_request(:GET, "payment/addcard", {:returnUrl => return_url}, options)
61
- api_request.api_service = :account
62
- api_request.require_signature
63
- api_request.require_secure_connection
64
- api_request.token = token
65
- @api_client.operator.get_request_uri(api_request)
66
- end
67
-
68
-
69
- end
70
-
71
- end
1
+ module Sevendigital
2
+
3
+ class UserManager < Manager
4
+
5
+ def login(access_token)
6
+ raise Sevendigital::SevendigitalError if !access_token.kind_of? OAuth::AccessToken
7
+ user = Sevendigital::User.new(@api_client)
8
+ user.oauth_access_token = access_token
9
+ user
10
+ end
11
+
12
+ def authenticate(email, password)
13
+ request_token = @api_client.oauth.get_request_token
14
+ return nil unless @api_client.oauth.authorise_request_token(email, password, request_token)
15
+ user = Sevendigital::User.new(@api_client)
16
+ user.oauth_access_token = @api_client.oauth.get_access_token(request_token)
17
+ user
18
+ end
19
+
20
+ def sign_up(email, password, options={})
21
+ api_response = @api_client.make_signed_api_request(:POST, "user/signUp", \
22
+ {:emailAddress => email, :password=> password}, options)
23
+ user = @api_client.user_digestor.from_xml(api_response.content.user)
24
+ user.oauth_access_token = authenticate(email, password).oauth_access_token
25
+ user
26
+ end
27
+
28
+ def get_locker(token, options={})
29
+ api_response = @api_client.make_signed_api_request(:GET, "user/locker", {}, options, token)
30
+ @locker = @api_client.locker_digestor.from_xml(api_response.content.locker)
31
+ end
32
+
33
+ # <b>DEPRECATED:</b> Please use <tt>purchase_item</tt> instead.
34
+ def purchase(release_id, track_id, price, token, options={})
35
+ warn "[DEPRECATION] 'purchase' is deprecated. Please use 'purchase_item' instead."
36
+ purchase_item(release_id, track_id, price, token, options)
37
+ end
38
+
39
+ def purchase_item(release_id, track_id, price, token, options={})
40
+ api_response = @api_client.make_signed_api_request(:GET, "user/purchase/item", \
41
+ {:releaseId => release_id, :trackId => track_id, :price => price}, options, token)
42
+ @api_client.locker_digestor.from_xml(api_response.content.purchase)
43
+ end
44
+
45
+ def purchase_basket(basket_id, token, options={})
46
+ api_response = @api_client.make_signed_api_request(:GET, "user/purchase/basket", \
47
+ {:basketId => basket_id}, options, token)
48
+ @api_client.locker_digestor.from_xml(api_response.content.purchase)
49
+ end
50
+
51
+ def get_stream_track_url(release_id, track_id, token, options={})
52
+ api_request = @api_client.create_api_request(:GET, "user/streamtrack", {:releaseId => release_id, :trackId => track_id}, options)
53
+ api_request.api_service = :media
54
+ api_request.require_signature
55
+ api_request.token = token
56
+ @api_client.operator.get_request_uri(api_request)
57
+ end
58
+
59
+ def get_add_card_url(return_url, token, options={})
60
+ api_request = @api_client.create_api_request(:GET, "payment/addcard", {:returnUrl => return_url}, options)
61
+ api_request.api_service = :account
62
+ api_request.require_signature
63
+ api_request.require_secure_connection
64
+ api_request.token = token
65
+ @api_client.operator.get_request_uri(api_request)
66
+ end
67
+
68
+
69
+ end
70
+
71
+ end
@@ -1,26 +1,26 @@
1
- module Sevendigital
2
-
3
- #Holds the complete API response
4
- class ApiResponse
5
-
6
- attr_accessor :error_code, :error_message, :content, :headers
7
-
8
- #True if no API error has been returned
9
- def ok?
10
- return (@error_code == 0 && !@content.nil?)
11
- end
12
-
13
- def _dump(depth)
14
- Marshal.dump([@error_code, @error_message, @headers, @content.to_s])
15
- end
16
-
17
- def self._load(properties)
18
- response = ApiResponse.new
19
- response.error_code, response.error_message, response.headers, content_xml = Marshal.load(properties)
20
- response.content = Peachy::Proxy.new(content_xml).response
21
- response
22
- end
23
-
24
- end
25
-
1
+ module Sevendigital
2
+
3
+ #Holds the complete API response
4
+ class ApiResponse
5
+
6
+ attr_accessor :error_code, :error_message, :content, :headers
7
+
8
+ #True if no API error has been returned
9
+ def ok?
10
+ return (@error_code == 0 && !@content.nil?)
11
+ end
12
+
13
+ def _dump(depth)
14
+ Marshal.dump([@error_code, @error_message, @headers, @content.to_s])
15
+ end
16
+
17
+ def self._load(properties)
18
+ response = ApiResponse.new
19
+ response.error_code, response.error_message, response.headers, content_xml = Marshal.load(properties)
20
+ response.content = Peachy::Proxy.new(content_xml).response
21
+ response
22
+ end
23
+
24
+ end
25
+
26
26
  end
@@ -1,95 +1,95 @@
1
- module Sevendigital
2
-
3
- #with lazy loading enabled these will be automatically populated by calling get_details
4
- #==Extended properties
5
- #with lazy loading enabled these will be automatically populated by calling the method in brackets
6
- #additional options can be passed in when accessing lazy loaded properties, e.g.
7
- # artist.releases({:page_size => 5, :image_size =>250})
8
-
9
- class Artist < SevendigitalObject
10
-
11
- #7digital artist ID
12
- #@return [Integer]
13
- attr_accessor :id
14
-
15
- #artist's name
16
- #@return [String]
17
- attr_accessor :name
18
-
19
- #Artist's name as it appears on the release or track (only available when artist is linked from release or track)
20
- #@return [String]
21
- attr_accessor :appears_as
22
-
23
- #Artist name used for sorting, e.g. Beatles, The (optional lazy-loaded property)
24
- #@return [String]
25
- sevendigital_basic_property :sort_name
26
-
27
- #Artist image URL (optional lazy-loaded property)
28
- #@return [String]
29
- sevendigital_basic_property :image
30
-
31
- #Artist buy link URL (optional lazy-loaded property)
32
- #@return [String]
33
- sevendigital_basic_property :url
34
-
35
- #artist's releases (lazy loaded using get_releases)
36
- #@return [Array<Release>]
37
- sevendigital_extended_property :releases
38
-
39
- #artist's top tracks (lazy loaded using get_top_tracks)
40
- #@return [Array<Track>]
41
- sevendigital_extended_property :top_tracks
42
-
43
- #list of artists similar to this artist (lazy loaded using {#get_similar})
44
- #@return [Array<Artist>] similar
45
- sevendigital_extended_property :similar
46
-
47
- #list of tags associated with the artist (lazy loaded using #get_tags)
48
- #@return [Array<Artist>] similar
49
- sevendigital_extended_property :tags
50
-
51
- #populates all available details on artist by calling *artist/details* API method
52
- #@return [Artist]
53
- def get_details(options={})
54
- artist_with_details = @api_client.artist.get_details(@id, options)
55
- copy_basic_properties_from(artist_with_details)
56
- end
57
-
58
- #releases by this artist retrieved by calling *artist/releases* API method
59
- #@return [Array<Release>]
60
- def get_releases(options={})
61
- @api_client.artist.get_releases(@id, options)
62
- end
63
-
64
- #top tracks by this artist retrieved by calling *artist/topTracks* API method
65
- #@return [Array<Track>]
66
- def get_top_tracks(options={})
67
- @api_client.artist.get_top_tracks(@id, options)
68
- end
69
-
70
- #artists similar to this artist retrieved by calling *artist/similar* API method
71
- #@return [Array<Track>]
72
- def get_similar(options={})
73
- @similar = @api_client.artist.get_similar(@id, options)
74
- end
75
-
76
- #tags associated with this artist retrieved by calling *artist/tags* API method
77
- #@return [Array<Tag>]
78
- def get_tags(options={})
79
- @api_client.artist.get_tags(@id, options)
80
- end
81
-
82
- #does this artist represents various artists?
83
- #@return [Boolean]
84
- def various?
85
- joined_names = "#{name} #{appears_as}".downcase
86
-
87
- various_variations = ["vario", "v???????????????rio", "v.a", "vaious", "varios" "vaious", "varoius", "variuos", \
88
- "soundtrack", "karaoke", "original cast", "diverse artist"]
89
- various_variations.each{|various_variation| return true if joined_names.include?(various_variation)}
90
- return false
91
- end
92
-
93
-
94
- end
1
+ module Sevendigital
2
+
3
+ #with lazy loading enabled these will be automatically populated by calling get_details
4
+ #==Extended properties
5
+ #with lazy loading enabled these will be automatically populated by calling the method in brackets
6
+ #additional options can be passed in when accessing lazy loaded properties, e.g.
7
+ # artist.releases({:page_size => 5, :image_size =>250})
8
+
9
+ class Artist < SevendigitalObject
10
+
11
+ #7digital artist ID
12
+ #@return [Integer]
13
+ attr_accessor :id
14
+
15
+ #artist's name
16
+ #@return [String]
17
+ attr_accessor :name
18
+
19
+ #Artist's name as it appears on the release or track (only available when artist is linked from release or track)
20
+ #@return [String]
21
+ attr_accessor :appears_as
22
+
23
+ #Artist name used for sorting, e.g. Beatles, The (optional lazy-loaded property)
24
+ #@return [String]
25
+ sevendigital_basic_property :sort_name
26
+
27
+ #Artist image URL (optional lazy-loaded property)
28
+ #@return [String]
29
+ sevendigital_basic_property :image
30
+
31
+ #Artist buy link URL (optional lazy-loaded property)
32
+ #@return [String]
33
+ sevendigital_basic_property :url
34
+
35
+ #artist's releases (lazy loaded using get_releases)
36
+ #@return [Array<Release>]
37
+ sevendigital_extended_property :releases
38
+
39
+ #artist's top tracks (lazy loaded using get_top_tracks)
40
+ #@return [Array<Track>]
41
+ sevendigital_extended_property :top_tracks
42
+
43
+ #list of artists similar to this artist (lazy loaded using {#get_similar})
44
+ #@return [Array<Artist>] similar
45
+ sevendigital_extended_property :similar
46
+
47
+ #list of tags associated with the artist (lazy loaded using #get_tags)
48
+ #@return [Array<Artist>] similar
49
+ sevendigital_extended_property :tags
50
+
51
+ #populates all available details on artist by calling *artist/details* API method
52
+ #@return [Artist]
53
+ def get_details(options={})
54
+ artist_with_details = @api_client.artist.get_details(@id, options)
55
+ copy_basic_properties_from(artist_with_details)
56
+ end
57
+
58
+ #releases by this artist retrieved by calling *artist/releases* API method
59
+ #@return [Array<Release>]
60
+ def get_releases(options={})
61
+ @api_client.artist.get_releases(@id, options)
62
+ end
63
+
64
+ #top tracks by this artist retrieved by calling *artist/topTracks* API method
65
+ #@return [Array<Track>]
66
+ def get_top_tracks(options={})
67
+ @api_client.artist.get_top_tracks(@id, options)
68
+ end
69
+
70
+ #artists similar to this artist retrieved by calling *artist/similar* API method
71
+ #@return [Array<Track>]
72
+ def get_similar(options={})
73
+ @similar = @api_client.artist.get_similar(@id, options)
74
+ end
75
+
76
+ #tags associated with this artist retrieved by calling *artist/tags* API method
77
+ #@return [Array<Tag>]
78
+ def get_tags(options={})
79
+ @api_client.artist.get_tags(@id, options)
80
+ end
81
+
82
+ #does this artist represents various artists?
83
+ #@return [Boolean]
84
+ def various?
85
+ joined_names = "#{name} #{appears_as}".downcase
86
+
87
+ various_variations = ["vario", "v???????????????rio", "v.a", "vaious", "varios" "vaious", "varoius", "variuos", \
88
+ "soundtrack", "karaoke", "original cast", "diverse artist"]
89
+ various_variations.each{|various_variation| return true if joined_names.include?(various_variation)}
90
+ return false
91
+ end
92
+
93
+
94
+ end
95
95
  end