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,7 +1,7 @@
1
- module Sevendigital
2
-
3
- class Tag
4
- attr_accessor :id, :text, :url, :count
5
- end
6
-
7
- end
1
+ module Sevendigital
2
+
3
+ class Tag
4
+ attr_accessor :id, :text, :url, :count
5
+ end
6
+
7
+ end
@@ -1,84 +1,84 @@
1
- module Sevendigital
2
-
3
- class Track < SevendigitalObject
4
-
5
- #track id
6
- #@return [Integer]
7
- attr_accessor :id
8
-
9
- #title of the track
10
- #@return [String]
11
- attr_accessor :title
12
-
13
- #version of the track (e.g. remix, radio edit)
14
- #@return [String]
15
- attr_accessor :version
16
-
17
- #release the track appears on
18
- #@return [Release]
19
- attr_accessor :release
20
-
21
- #Artist of the track
22
- #@return [Artist]
23
- attr_accessor :artist
24
-
25
- #Number of the track as it appears on the release
26
- #@return [Integer]
27
- sevendigital_basic_property :track_number
28
-
29
- #The length of the track in seconds
30
- #@return [Integer]
31
- sevendigital_basic_property :duration
32
-
33
- #parental advisory - explicit content tag
34
- #@return [Boolean]
35
- sevendigital_basic_property :explicit_content
36
-
37
- #ISRC code
38
- #@return [String]
39
- sevendigital_basic_property :isrc
40
-
41
- #URL link to 7digital page where this track can be purchased
42
- #@return [String]
43
- sevendigital_basic_property :url
44
-
45
- #Pricing information of the track
46
- #@return [Price]
47
- sevendigital_basic_property :price
48
-
49
- #Retrieves and populates all track properties
50
- #
51
- #useful with lazy loading turned off
52
- #@param [Hash] options optional hash of additional API parameters, e.g. image_size => 75, etc
53
- #@return [Track]
54
- def get_details(options={})
55
- track_with_details = @api_client.track.get_details_from_release(@id, @release.id, options)
56
- copy_basic_properties_from(track_with_details)
57
- self
58
- end
59
-
60
- #Title of the track stripped out of any version information if it's included the title of the track rather than version property
61
- #e.g. if title is "Some Song (Radio Edit)" it will return "Some Song"
62
- #@return [String]
63
- def short_title
64
- # return title.gsub(/\s+[\(\[](album|lp|single|short|edit|radio)\s+version[\)\]]/ , "")
65
- return title.gsub(/\s+\(.*\s?(version|mix|remix|edit|edition|live|feat|explicit|original|remaster)\s?.*\)/i, "")
66
- end
67
-
68
- #Compares 2 songs whether they're just different versions of the same song by the same artist
69
- #e.g. track "Some Song (Radio Edit)" is alternate version of "Some Song (Remastered)"
70
- #returns true also if the 2 songs are the same
71
- #@return [Boolean]
72
- def alternate_version_of?(another_track)
73
- return another_track && short_title.downcase == another_track.short_title.downcase \
74
- && another_track.artist && artist.name.downcase == another_track.artist.name.downcase
75
- end
76
-
77
- #URL of mp3 preview for this track
78
- #@return [String]
79
- def preview_url(options={})
80
- @api_client.track.build_preview_url(@id, options)
81
- end
82
-
83
- end
1
+ module Sevendigital
2
+
3
+ class Track < SevendigitalObject
4
+
5
+ #track id
6
+ #@return [Integer]
7
+ attr_accessor :id
8
+
9
+ #title of the track
10
+ #@return [String]
11
+ attr_accessor :title
12
+
13
+ #version of the track (e.g. remix, radio edit)
14
+ #@return [String]
15
+ attr_accessor :version
16
+
17
+ #release the track appears on
18
+ #@return [Release]
19
+ attr_accessor :release
20
+
21
+ #Artist of the track
22
+ #@return [Artist]
23
+ attr_accessor :artist
24
+
25
+ #Number of the track as it appears on the release
26
+ #@return [Integer]
27
+ sevendigital_basic_property :track_number
28
+
29
+ #The length of the track in seconds
30
+ #@return [Integer]
31
+ sevendigital_basic_property :duration
32
+
33
+ #parental advisory - explicit content tag
34
+ #@return [Boolean]
35
+ sevendigital_basic_property :explicit_content
36
+
37
+ #ISRC code
38
+ #@return [String]
39
+ sevendigital_basic_property :isrc
40
+
41
+ #URL link to 7digital page where this track can be purchased
42
+ #@return [String]
43
+ sevendigital_basic_property :url
44
+
45
+ #Pricing information of the track
46
+ #@return [Price]
47
+ sevendigital_basic_property :price
48
+
49
+ #Retrieves and populates all track properties
50
+ #
51
+ #useful with lazy loading turned off
52
+ #@param [Hash] options optional hash of additional API parameters, e.g. image_size => 75, etc
53
+ #@return [Track]
54
+ def get_details(options={})
55
+ track_with_details = @api_client.track.get_details_from_release(@id, @release.id, options)
56
+ copy_basic_properties_from(track_with_details)
57
+ self
58
+ end
59
+
60
+ #Title of the track stripped out of any version information if it's included the title of the track rather than version property
61
+ #e.g. if title is "Some Song (Radio Edit)" it will return "Some Song"
62
+ #@return [String]
63
+ def short_title
64
+ # return title.gsub(/\s+[\(\[](album|lp|single|short|edit|radio)\s+version[\)\]]/ , "")
65
+ return title.gsub(/\s+\(.*\s?(version|mix|remix|edit|edition|live|feat|explicit|original|remaster)\s?.*\)/i, "")
66
+ end
67
+
68
+ #Compares 2 songs whether they're just different versions of the same song by the same artist
69
+ #e.g. track "Some Song (Radio Edit)" is alternate version of "Some Song (Remastered)"
70
+ #returns true also if the 2 songs are the same
71
+ #@return [Boolean]
72
+ def alternate_version_of?(another_track)
73
+ return another_track && short_title.downcase == another_track.short_title.downcase \
74
+ && another_track.artist && artist.name.downcase == another_track.artist.name.downcase
75
+ end
76
+
77
+ #URL of mp3 preview for this track
78
+ #@return [String]
79
+ def preview_url(options={})
80
+ @api_client.track.build_preview_url(@id, options)
81
+ end
82
+
83
+ end
84
84
  end
@@ -1,64 +1,64 @@
1
- module Sevendigital
2
-
3
- class User < SevendigitalObject
4
-
5
- attr_accessor :oauth_access_token, :id, :type, :email_address
6
-
7
- sevendigital_extended_property :locker
8
-
9
- sevendigital_extended_property :cards
10
-
11
- def authenticated?
12
- return !@oauth_access_token.nil?
13
- end
14
-
15
- def get_locker(options={})
16
- raise Sevendigital::SevendigitalError if !authenticated?
17
- @api_client.user.get_locker(@oauth_access_token, options)
18
- end
19
-
20
- def get_cards(options={})
21
- raise Sevendigital::SevendigitalError if !authenticated?
22
- @api_client.user_payment_card.get_card_list(@oauth_access_token, options)
23
- end
24
-
25
- def add_card(card_number, card_type, card_holder_name, card_start_date, card_expiry_date, card_issue_number,
26
- card_verification_code, card_post_code, card_country, options={})
27
- raise Sevendigital::SevendigitalError if !authenticated?
28
- @api_client.user_payment_card.add_card(card_number, card_type, card_holder_name, card_start_date, card_expiry_date, card_issue_number,
29
- card_verification_code, card_post_code, card_country, @oauth_access_token, options)
30
- end
31
-
32
- def select_card(card_id, options={})
33
- raise Sevendigital::SevendigitalError if !authenticated?
34
- @api_client.user_payment_card.select_card(card_id, @oauth_access_token, options)
35
- end
36
-
37
- # <b>DEPRECATED:</b> Please use <tt>purchase_item!</tt> instead.
38
- def purchase!(release_id, track_id, price, token, options={})
39
- warn "[DEPRECATION] `purchase!` is deprecated. Please use 'purchase_item!' instead."
40
- purchase_item!(release_id, track_id, price, options={})
41
- end
42
-
43
- def purchase_item!(release_id, track_id, price, options={})
44
- raise Sevendigital::SevendigitalError if !authenticated?
45
- @api_client.user.purchase_item(release_id, track_id, price, @oauth_access_token, options)
46
- end
47
-
48
- def purchase_basket!(basket_id, options={})
49
- raise Sevendigital::SevendigitalError if !authenticated?
50
- @api_client.user.purchase_basket(basket_id, @oauth_access_token, options)
51
- end
52
-
53
- def stream_track_url(release_id, track_id, options={})
54
- raise Sevendigital::SevendigitalError if !authenticated?
55
- @api_client.user.get_stream_track_url(release_id, track_id, @oauth_access_token, options)
56
- end
57
-
58
- def add_card_url(return_url, options={})
59
- raise Sevendigital::SevendigitalError if !authenticated?
60
- @api_client.user.get_add_card_url(return_url, @oauth_access_token, options)
61
- end
62
-
63
- end
1
+ module Sevendigital
2
+
3
+ class User < SevendigitalObject
4
+
5
+ attr_accessor :oauth_access_token, :id, :type, :email_address
6
+
7
+ sevendigital_extended_property :locker
8
+
9
+ sevendigital_extended_property :cards
10
+
11
+ def authenticated?
12
+ return !@oauth_access_token.nil?
13
+ end
14
+
15
+ def get_locker(options={})
16
+ raise Sevendigital::SevendigitalError if !authenticated?
17
+ @api_client.user.get_locker(@oauth_access_token, options)
18
+ end
19
+
20
+ def get_cards(options={})
21
+ raise Sevendigital::SevendigitalError if !authenticated?
22
+ @api_client.user_payment_card.get_card_list(@oauth_access_token, options)
23
+ end
24
+
25
+ def add_card(card_number, card_type, card_holder_name, card_start_date, card_expiry_date, card_issue_number,
26
+ card_verification_code, card_post_code, card_country, options={})
27
+ raise Sevendigital::SevendigitalError if !authenticated?
28
+ @api_client.user_payment_card.add_card(card_number, card_type, card_holder_name, card_start_date, card_expiry_date, card_issue_number,
29
+ card_verification_code, card_post_code, card_country, @oauth_access_token, options)
30
+ end
31
+
32
+ def select_card(card_id, options={})
33
+ raise Sevendigital::SevendigitalError if !authenticated?
34
+ @api_client.user_payment_card.select_card(card_id, @oauth_access_token, options)
35
+ end
36
+
37
+ # <b>DEPRECATED:</b> Please use <tt>purchase_item!</tt> instead.
38
+ def purchase!(release_id, track_id, price, token, options={})
39
+ warn "[DEPRECATION] `purchase!` is deprecated. Please use 'purchase_item!' instead."
40
+ purchase_item!(release_id, track_id, price, options={})
41
+ end
42
+
43
+ def purchase_item!(release_id, track_id, price, options={})
44
+ raise Sevendigital::SevendigitalError if !authenticated?
45
+ @api_client.user.purchase_item(release_id, track_id, price, @oauth_access_token, options)
46
+ end
47
+
48
+ def purchase_basket!(basket_id, options={})
49
+ raise Sevendigital::SevendigitalError if !authenticated?
50
+ @api_client.user.purchase_basket(basket_id, @oauth_access_token, options)
51
+ end
52
+
53
+ def stream_track_url(release_id, track_id, options={})
54
+ raise Sevendigital::SevendigitalError if !authenticated?
55
+ @api_client.user.get_stream_track_url(release_id, track_id, @oauth_access_token, options)
56
+ end
57
+
58
+ def add_card_url(return_url, options={})
59
+ raise Sevendigital::SevendigitalError if !authenticated?
60
+ @api_client.user.get_add_card_url(return_url, @oauth_access_token, options)
61
+ end
62
+
63
+ end
64
64
  end
@@ -1,24 +1,24 @@
1
- begin
2
- require "will_paginate/collection"
3
- rescue LoadError
4
- end
5
-
6
- module Sevendigital
7
-
8
- #@private
9
- #internal class used to page array results if will_paginate is available
10
- class Pager # :nodoc:
11
-
12
- attr_accessor :page, :page_size, :total_items
13
-
14
- def paginate_list(list)
15
- return list unless defined?(WillPaginate)
16
- paged_list = WillPaginate::Collection.create(@page, @page_size, @total_items) do |pager|
17
- pager.replace(list)
18
- end
19
- return paged_list
20
- end
21
-
22
- end
23
-
1
+ begin
2
+ require "will_paginate/collection"
3
+ rescue LoadError
4
+ end
5
+
6
+ module Sevendigital
7
+
8
+ #@private
9
+ #internal class used to page array results if will_paginate is available
10
+ class Pager # :nodoc:
11
+
12
+ attr_accessor :page, :page_size, :total_items
13
+
14
+ def paginate_list(list)
15
+ return list unless defined?(WillPaginate)
16
+ paged_list = WillPaginate::Collection.create(@page, @page_size, @total_items) do |pager|
17
+ pager.replace(list)
18
+ end
19
+ return paged_list
20
+ end
21
+
22
+ end
23
+
24
24
  end
@@ -1,9 +1,9 @@
1
- module Peachy
2
- class MethodName
3
-
4
- # let's also allow numbers and trailing underscores in element(method) names
5
- def matches_convention?
6
- @method_name =~ /^[a-z0-9]+(?:[_a-z0-9]+)*(?:NS[a-z0-9]+(?:[_a-z0-9]+)*)?$/
7
- end
8
- end
9
- end
1
+ module Peachy
2
+ class MethodName
3
+
4
+ # let's also allow numbers and trailing underscores in element(method) names
5
+ def matches_convention?
6
+ @method_name =~ /^[a-z0-9]+(?:[_a-z0-9]+)*(?:NS[a-z0-9]+(?:[_a-z0-9]+)*)?$/
7
+ end
8
+ end
9
+ end
@@ -1,28 +1,28 @@
1
- module Sevendigital
2
-
3
- #@private
4
- #internal class used to ensure the XML being processed is a Peachy::Proxy object
5
- #if not it checks the expected element name matches the supplied XML string and converts it to Peachy::Proxy
6
- class ProxyPolice # :nodoc:
7
-
8
- def ProxyPolice.ensure_is_proxy(xml_or_proxy, element_name)
9
- if xml_or_proxy.kind_of?(Peachy::Proxy) || xml_or_proxy.kind_of?(Peachy::SimpleContent) then
10
- return xml_or_proxy
11
- else
12
- return ProxyPolice.create_release_proxy(xml_or_proxy, element_name)
13
- end
14
- end
15
-
16
- def ProxyPolice.create_release_proxy(xml, element_name)
17
- #TODO don't use eval
18
- parent_proxy = Peachy::Proxy.new(xml)
19
- if element_name
20
- # parent_proxy.send(element_name)
21
- eval "parent_proxy.#{element_name.to_s}"
22
- else
23
- parent_proxy
24
- end
25
- end
26
-
27
- end
1
+ module Sevendigital
2
+
3
+ #@private
4
+ #internal class used to ensure the XML being processed is a Peachy::Proxy object
5
+ #if not it checks the expected element name matches the supplied XML string and converts it to Peachy::Proxy
6
+ class ProxyPolice # :nodoc:
7
+
8
+ def ProxyPolice.ensure_is_proxy(xml_or_proxy, element_name)
9
+ if xml_or_proxy.kind_of?(Peachy::Proxy) || xml_or_proxy.kind_of?(Peachy::SimpleContent) then
10
+ return xml_or_proxy
11
+ else
12
+ return ProxyPolice.create_release_proxy(xml_or_proxy, element_name)
13
+ end
14
+ end
15
+
16
+ def ProxyPolice.create_release_proxy(xml, element_name)
17
+ #TODO don't use eval
18
+ parent_proxy = Peachy::Proxy.new(xml)
19
+ if element_name
20
+ # parent_proxy.send(element_name)
21
+ eval "parent_proxy.#{element_name.to_s}"
22
+ else
23
+ parent_proxy
24
+ end
25
+ end
26
+
27
+ end
28
28
  end
@@ -1,5 +1,5 @@
1
- module Sevendigital
2
- # The version of the gem
3
- NAME = "7digital"
4
- VERSION = '0.0.6'
5
- end
1
+ module Sevendigital
2
+ # The version of the gem
3
+ NAME = "7digital"
4
+ VERSION = '0.0.7'
5
+ end