7digital 0.0.5 → 0.0.6

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 (271) hide show
  1. data/README.rdoc +136 -136
  2. data/lib/sevendigital.rb +53 -53
  3. data/lib/sevendigital/api_operator.rb +130 -124
  4. data/lib/sevendigital/api_operator_cached.rb +41 -29
  5. data/lib/sevendigital/api_request.rb +65 -64
  6. data/lib/sevendigital/client.rb +113 -98
  7. data/lib/sevendigital/client_configuration.rb +86 -86
  8. data/lib/sevendigital/client_digestors.rb +107 -79
  9. data/lib/sevendigital/client_managers.rb +47 -34
  10. data/lib/sevendigital/digestion_tract/api_response_digestor.rb +58 -57
  11. data/lib/sevendigital/digestion_tract/artist_digestor.rb +32 -31
  12. data/lib/sevendigital/digestion_tract/basket_digestor.rb +19 -18
  13. data/lib/sevendigital/digestion_tract/basket_item_digestor.rb +26 -25
  14. data/lib/sevendigital/digestion_tract/chart_item_digestor.rb +28 -27
  15. data/lib/sevendigital/digestion_tract/digestor.rb +71 -70
  16. data/lib/sevendigital/digestion_tract/download_url_digestor.rb +20 -19
  17. data/lib/sevendigital/digestion_tract/format_digestor.rb +22 -21
  18. data/lib/sevendigital/digestion_tract/label_digestor.rb +20 -19
  19. data/lib/sevendigital/digestion_tract/locker_digestor.rb +18 -17
  20. data/lib/sevendigital/digestion_tract/locker_release_digestor.rb +20 -19
  21. data/lib/sevendigital/digestion_tract/locker_track_digestor.rb +22 -21
  22. data/lib/sevendigital/digestion_tract/oauth_access_token_digestor.rb +14 -13
  23. data/lib/sevendigital/digestion_tract/oauth_request_token_digestor.rb +14 -13
  24. data/lib/sevendigital/digestion_tract/pager_digestor.rb +24 -23
  25. data/lib/sevendigital/digestion_tract/price_digestor.rb +25 -24
  26. data/lib/sevendigital/digestion_tract/release_digestor.rb +53 -52
  27. data/lib/sevendigital/digestion_tract/tag_digestor.rb +22 -21
  28. data/lib/sevendigital/digestion_tract/track_digestor.rb +38 -37
  29. data/lib/sevendigital/digestion_tract/user_card_digestor.rb +24 -0
  30. data/lib/sevendigital/digestion_tract/user_digestor.rb +21 -0
  31. data/lib/sevendigital/management/artist_manager.rb +99 -82
  32. data/lib/sevendigital/management/basket_manager.rb +29 -29
  33. data/lib/sevendigital/management/manager.rb +12 -11
  34. data/lib/sevendigital/management/oauth_manager.rb +23 -23
  35. data/lib/sevendigital/management/release_manager.rb +56 -50
  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 +27 -0
  39. data/lib/sevendigital/management/user_manager.rb +71 -51
  40. data/lib/sevendigital/model/api_response.rb +25 -40
  41. data/lib/sevendigital/model/artist.rb +94 -64
  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 +12 -0
  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 -47
  54. data/lib/sevendigital/model/sevendigital_error.rb +11 -11
  55. data/lib/sevendigital/model/sevendigital_object.rb +57 -56
  56. data/lib/sevendigital/model/tag.rb +7 -7
  57. data/lib/sevendigital/model/track.rb +83 -28
  58. data/lib/sevendigital/model/user.rb +63 -33
  59. data/lib/sevendigital/pager.rb +23 -22
  60. data/lib/sevendigital/peachy_patchy.rb +9 -0
  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 -102
  64. data/spec/api_operator_spec.rb +336 -338
  65. data/spec/api_request_spec.rb +31 -31
  66. data/spec/client_configuration_spec.rb +74 -74
  67. data/spec/client_spec.rb +162 -153
  68. data/spec/data/config/sevendigital.yml +5 -5
  69. data/spec/data/configuration_env_override.yml +5 -5
  70. data/spec/data/configuration_override.yml +1 -1
  71. data/spec/digestion_tract/api_response_digestor_spec.rb +92 -92
  72. data/spec/digestion_tract/artist_digestor_spec.rb +81 -81
  73. data/spec/digestion_tract/basket_digestor_spec.rb +31 -31
  74. data/spec/digestion_tract/basket_item_digestor_spec.rb +58 -58
  75. data/spec/digestion_tract/chart_digestor_spec.rb +52 -52
  76. data/spec/digestion_tract/download_url_digestor_spec.rb +40 -40
  77. data/spec/digestion_tract/format_digestor_spec.rb +38 -38
  78. data/spec/digestion_tract/label_digestor_spec.rb +33 -33
  79. data/spec/digestion_tract/locker_digestor_spec.rb +30 -30
  80. data/spec/digestion_tract/locker_release_digestor_spec.rb +70 -71
  81. data/spec/digestion_tract/locker_track_digestor_spec.rb +56 -56
  82. data/spec/digestion_tract/oauth_access_token_digestor_spec.rb +34 -34
  83. data/spec/digestion_tract/oauth_request_token_digestor_spec.rb +34 -34
  84. data/spec/digestion_tract/pager_digestor_spec.rb +50 -50
  85. data/spec/digestion_tract/price_digestor_spec.rb +73 -73
  86. data/spec/digestion_tract/release_digestor_spec.rb +101 -101
  87. data/spec/digestion_tract/tag_digestor_spec.rb +46 -46
  88. data/spec/digestion_tract/track_digestor_spec.rb +104 -104
  89. data/spec/digestion_tract/user_card_digestor_spec.rb +58 -0
  90. data/spec/digestion_tract/user_digestor_spec.rb +44 -0
  91. data/spec/management/artist_manager_spec.rb +151 -133
  92. data/spec/management/basket_manager_spec.rb +77 -77
  93. data/spec/management/oauth_manager_spec.rb +72 -72
  94. data/spec/management/release_manager_spec.rb +200 -181
  95. data/spec/management/tag_manager_spec.rb +34 -34
  96. data/spec/management/track_manager_spec.rb +107 -105
  97. data/spec/management/user_card_manager_spec.rb +79 -0
  98. data/spec/management/user_manager_spec.rb +202 -162
  99. data/spec/model/api_response_spec.rb +48 -111
  100. data/spec/model/artist_spec.rb +154 -141
  101. data/spec/model/basket_spec.rb +62 -62
  102. data/spec/model/release_spec.rb +122 -110
  103. data/spec/model/sevendigital_object_spec.rb +73 -73
  104. data/spec/model/track_spec.rb +144 -143
  105. data/spec/model/user_spec.rb +160 -97
  106. data/spec/pager_spec.rb +7 -7
  107. data/spec/peachy_spec_helper_patch.rb +6 -6
  108. data/spec/proxy_police_spec.rb +69 -47
  109. data/spec/sevendigital_spec.rb +70 -0
  110. data/spec/sevendigital_spec.yml +5 -0
  111. data/spec/spec_helper.rb +64 -60
  112. data/spec/test-xml/methods/artist/browse.xml +21 -21
  113. data/spec/test-xml/methods/artist/byTag/top.xml +50 -50
  114. data/spec/test-xml/methods/artist/chart.xml +30 -30
  115. data/spec/test-xml/methods/artist/details.xml +9 -9
  116. data/spec/test-xml/methods/artist/releases.xml +544 -544
  117. data/spec/test-xml/methods/artist/search.xml +18 -18
  118. data/spec/test-xml/methods/artist/similar.xml +39 -39
  119. data/spec/test-xml/methods/artist/tags.xml +12 -0
  120. data/spec/test-xml/methods/artist/toptracks.xml +279 -279
  121. data/spec/test-xml/methods/basket/additem.xml +23 -23
  122. data/spec/test-xml/methods/basket/create.xml +10 -10
  123. data/spec/test-xml/methods/basket/index.xml +23 -23
  124. data/spec/test-xml/methods/basket/removeitem.xml +10 -10
  125. data/spec/test-xml/methods/oauth/accesstoken.xml +5 -5
  126. data/spec/test-xml/methods/oauth/requesttoken.xml +5 -5
  127. data/spec/test-xml/methods/release/bydate.xml +173 -173
  128. data/spec/test-xml/methods/release/bytag/top.xml +150 -150
  129. data/spec/test-xml/methods/release/chart.xml +181 -181
  130. data/spec/test-xml/methods/release/details.xml +48 -48
  131. data/spec/test-xml/methods/release/recommend.xml +89 -89
  132. data/spec/test-xml/methods/release/search.xml +194 -194
  133. data/spec/test-xml/methods/release/tags.xml +27 -0
  134. data/spec/test-xml/methods/release/tracks.xml +28 -28
  135. data/spec/test-xml/methods/tag/index.xml +16 -16
  136. data/spec/test-xml/methods/track/chart.xml +149 -149
  137. data/spec/test-xml/methods/track/details.xml +30 -30
  138. data/spec/test-xml/methods/track/search.xml +159 -159
  139. data/spec/test-xml/methods/user/locker.xml +49 -49
  140. data/spec/test-xml/methods/user/payment/card/add.xml +8 -0
  141. data/spec/test-xml/methods/user/payment/card/index.xml +8 -0
  142. data/spec/test-xml/methods/user/payment/card/select.xml +1 -0
  143. data/spec/test-xml/methods/user/purchase/item.xml +48 -48
  144. data/spec/test-xml/methods/user/signUp.xml +6 -0
  145. data/spec/test-xml/objects/artist.xml +6 -6
  146. data/spec/test-xml/objects/artist_chart_item.xml +7 -7
  147. data/spec/test-xml/objects/artist_list.xml +22 -22
  148. data/spec/test-xml/objects/artist_list_empty.xml +4 -4
  149. data/spec/test-xml/objects/basket.xml +21 -21
  150. data/spec/test-xml/objects/basket_item.xml +11 -11
  151. data/spec/test-xml/objects/basket_item_list.xml +25 -25
  152. data/spec/test-xml/objects/basket_item_list_empty.xml +1 -1
  153. data/spec/test-xml/objects/download_url.xml +7 -7
  154. data/spec/test-xml/objects/locker.xml +47 -47
  155. data/spec/test-xml/objects/locker_release.xml +40 -40
  156. data/spec/test-xml/objects/locker_release_list.xml +87 -87
  157. data/spec/test-xml/objects/locker_release_list_empty.xml +4 -4
  158. data/spec/test-xml/objects/locker_release_one_item_list.xml +43 -43
  159. data/spec/test-xml/objects/locker_track.xml +25 -25
  160. data/spec/test-xml/objects/locker_track_list.xml +26 -26
  161. data/spec/test-xml/objects/locker_track_list_empty.xml +2 -2
  162. data/spec/test-xml/objects/oauth_access_token.xml +3 -3
  163. data/spec/test-xml/objects/oauth_request_token.xml +3 -3
  164. data/spec/test-xml/objects/price.xml +7 -7
  165. data/spec/test-xml/objects/release.xml +40 -40
  166. data/spec/test-xml/objects/release_chart_item.xml +39 -39
  167. data/spec/test-xml/objects/release_list.xml +18 -18
  168. data/spec/test-xml/objects/release_list_empty.xml +4 -4
  169. data/spec/test-xml/objects/response.xml +38 -38
  170. data/spec/test-xml/objects/tag.xml +4 -4
  171. data/spec/test-xml/objects/track.xml +33 -33
  172. data/spec/test-xml/objects/track_chart_item.xml +27 -27
  173. data/spec/test-xml/objects/user.xml +4 -0
  174. data/spec/test-xml/objects/user_payment_card.xml +6 -0
  175. data/spec/test-xml/objects/user_payment_card_list_empty.xml +1 -0
  176. metadata +51 -192
  177. data/lib/sevendigital/default_configuration.yml +0 -2
  178. data/spec/coverage/assets/0.3.9/app.js +0 -66
  179. data/spec/coverage/assets/0.3.9/fancybox/blank.gif +0 -0
  180. data/spec/coverage/assets/0.3.9/fancybox/fancy_close.png +0 -0
  181. data/spec/coverage/assets/0.3.9/fancybox/fancy_loading.png +0 -0
  182. data/spec/coverage/assets/0.3.9/fancybox/fancy_nav_left.png +0 -0
  183. data/spec/coverage/assets/0.3.9/fancybox/fancy_nav_right.png +0 -0
  184. data/spec/coverage/assets/0.3.9/fancybox/fancy_shadow_e.png +0 -0
  185. data/spec/coverage/assets/0.3.9/fancybox/fancy_shadow_n.png +0 -0
  186. data/spec/coverage/assets/0.3.9/fancybox/fancy_shadow_ne.png +0 -0
  187. data/spec/coverage/assets/0.3.9/fancybox/fancy_shadow_nw.png +0 -0
  188. data/spec/coverage/assets/0.3.9/fancybox/fancy_shadow_s.png +0 -0
  189. data/spec/coverage/assets/0.3.9/fancybox/fancy_shadow_se.png +0 -0
  190. data/spec/coverage/assets/0.3.9/fancybox/fancy_shadow_sw.png +0 -0
  191. data/spec/coverage/assets/0.3.9/fancybox/fancy_shadow_w.png +0 -0
  192. data/spec/coverage/assets/0.3.9/fancybox/fancy_title_left.png +0 -0
  193. data/spec/coverage/assets/0.3.9/fancybox/fancy_title_main.png +0 -0
  194. data/spec/coverage/assets/0.3.9/fancybox/fancy_title_over.png +0 -0
  195. data/spec/coverage/assets/0.3.9/fancybox/fancy_title_right.png +0 -0
  196. data/spec/coverage/assets/0.3.9/fancybox/fancybox-x.png +0 -0
  197. data/spec/coverage/assets/0.3.9/fancybox/fancybox-y.png +0 -0
  198. data/spec/coverage/assets/0.3.9/fancybox/fancybox.png +0 -0
  199. data/spec/coverage/assets/0.3.9/fancybox/jquery.fancybox-1.3.1.css +0 -363
  200. data/spec/coverage/assets/0.3.9/fancybox/jquery.fancybox-1.3.1.pack.js +0 -44
  201. data/spec/coverage/assets/0.3.9/favicon.png +0 -0
  202. data/spec/coverage/assets/0.3.9/jquery-1.4.2.min.js +0 -155
  203. data/spec/coverage/assets/0.3.9/jquery.dataTables.min.js +0 -152
  204. data/spec/coverage/assets/0.3.9/jquery.timeago.js +0 -141
  205. data/spec/coverage/assets/0.3.9/jquery.url.js +0 -174
  206. data/spec/coverage/assets/0.3.9/loading.gif +0 -0
  207. data/spec/coverage/assets/0.3.9/magnify.png +0 -0
  208. data/spec/coverage/assets/0.3.9/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  209. data/spec/coverage/assets/0.3.9/smoothness/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
  210. data/spec/coverage/assets/0.3.9/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
  211. data/spec/coverage/assets/0.3.9/smoothness/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  212. data/spec/coverage/assets/0.3.9/smoothness/images/ui-bg_glass_75_dadada_1x400.png +0 -0
  213. data/spec/coverage/assets/0.3.9/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
  214. data/spec/coverage/assets/0.3.9/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  215. data/spec/coverage/assets/0.3.9/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
  216. data/spec/coverage/assets/0.3.9/smoothness/images/ui-icons_222222_256x240.png +0 -0
  217. data/spec/coverage/assets/0.3.9/smoothness/images/ui-icons_2e83ff_256x240.png +0 -0
  218. data/spec/coverage/assets/0.3.9/smoothness/images/ui-icons_454545_256x240.png +0 -0
  219. data/spec/coverage/assets/0.3.9/smoothness/images/ui-icons_888888_256x240.png +0 -0
  220. data/spec/coverage/assets/0.3.9/smoothness/images/ui-icons_cd0a0a_256x240.png +0 -0
  221. data/spec/coverage/assets/0.3.9/smoothness/jquery-ui-1.8.4.custom.css +0 -295
  222. data/spec/coverage/assets/0.3.9/stylesheet.css +0 -341
  223. data/spec/coverage/index.html +0 -43412
  224. data/spec/coverage/resultset.yml +0 -3251
  225. data/spec/model/coverage/assets/0.3.9/app.js +0 -66
  226. data/spec/model/coverage/assets/0.3.9/fancybox/blank.gif +0 -0
  227. data/spec/model/coverage/assets/0.3.9/fancybox/fancy_close.png +0 -0
  228. data/spec/model/coverage/assets/0.3.9/fancybox/fancy_loading.png +0 -0
  229. data/spec/model/coverage/assets/0.3.9/fancybox/fancy_nav_left.png +0 -0
  230. data/spec/model/coverage/assets/0.3.9/fancybox/fancy_nav_right.png +0 -0
  231. data/spec/model/coverage/assets/0.3.9/fancybox/fancy_shadow_e.png +0 -0
  232. data/spec/model/coverage/assets/0.3.9/fancybox/fancy_shadow_n.png +0 -0
  233. data/spec/model/coverage/assets/0.3.9/fancybox/fancy_shadow_ne.png +0 -0
  234. data/spec/model/coverage/assets/0.3.9/fancybox/fancy_shadow_nw.png +0 -0
  235. data/spec/model/coverage/assets/0.3.9/fancybox/fancy_shadow_s.png +0 -0
  236. data/spec/model/coverage/assets/0.3.9/fancybox/fancy_shadow_se.png +0 -0
  237. data/spec/model/coverage/assets/0.3.9/fancybox/fancy_shadow_sw.png +0 -0
  238. data/spec/model/coverage/assets/0.3.9/fancybox/fancy_shadow_w.png +0 -0
  239. data/spec/model/coverage/assets/0.3.9/fancybox/fancy_title_left.png +0 -0
  240. data/spec/model/coverage/assets/0.3.9/fancybox/fancy_title_main.png +0 -0
  241. data/spec/model/coverage/assets/0.3.9/fancybox/fancy_title_over.png +0 -0
  242. data/spec/model/coverage/assets/0.3.9/fancybox/fancy_title_right.png +0 -0
  243. data/spec/model/coverage/assets/0.3.9/fancybox/fancybox-x.png +0 -0
  244. data/spec/model/coverage/assets/0.3.9/fancybox/fancybox-y.png +0 -0
  245. data/spec/model/coverage/assets/0.3.9/fancybox/fancybox.png +0 -0
  246. data/spec/model/coverage/assets/0.3.9/fancybox/jquery.fancybox-1.3.1.css +0 -363
  247. data/spec/model/coverage/assets/0.3.9/fancybox/jquery.fancybox-1.3.1.pack.js +0 -44
  248. data/spec/model/coverage/assets/0.3.9/favicon.png +0 -0
  249. data/spec/model/coverage/assets/0.3.9/jquery-1.4.2.min.js +0 -155
  250. data/spec/model/coverage/assets/0.3.9/jquery.dataTables.min.js +0 -152
  251. data/spec/model/coverage/assets/0.3.9/jquery.timeago.js +0 -141
  252. data/spec/model/coverage/assets/0.3.9/jquery.url.js +0 -174
  253. data/spec/model/coverage/assets/0.3.9/loading.gif +0 -0
  254. data/spec/model/coverage/assets/0.3.9/magnify.png +0 -0
  255. data/spec/model/coverage/assets/0.3.9/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  256. data/spec/model/coverage/assets/0.3.9/smoothness/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
  257. data/spec/model/coverage/assets/0.3.9/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
  258. data/spec/model/coverage/assets/0.3.9/smoothness/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  259. data/spec/model/coverage/assets/0.3.9/smoothness/images/ui-bg_glass_75_dadada_1x400.png +0 -0
  260. data/spec/model/coverage/assets/0.3.9/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
  261. data/spec/model/coverage/assets/0.3.9/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  262. data/spec/model/coverage/assets/0.3.9/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
  263. data/spec/model/coverage/assets/0.3.9/smoothness/images/ui-icons_222222_256x240.png +0 -0
  264. data/spec/model/coverage/assets/0.3.9/smoothness/images/ui-icons_2e83ff_256x240.png +0 -0
  265. data/spec/model/coverage/assets/0.3.9/smoothness/images/ui-icons_454545_256x240.png +0 -0
  266. data/spec/model/coverage/assets/0.3.9/smoothness/images/ui-icons_888888_256x240.png +0 -0
  267. data/spec/model/coverage/assets/0.3.9/smoothness/images/ui-icons_cd0a0a_256x240.png +0 -0
  268. data/spec/model/coverage/assets/0.3.9/smoothness/jquery-ui-1.8.4.custom.css +0 -295
  269. data/spec/model/coverage/assets/0.3.9/stylesheet.css +0 -341
  270. data/spec/model/coverage/index.html +0 -8637
  271. data/spec/model/coverage/resultset.yml +0 -642
@@ -0,0 +1,24 @@
1
+ module Sevendigital
2
+
3
+ #@private
4
+ class UserCardDigestor < Digestor # :nodoc:
5
+
6
+ def default_element_name; :card end
7
+ def default_list_element_name; :cards end
8
+
9
+ def from_proxy(card_proxy)
10
+ make_sure_not_eating_nil(card_proxy)
11
+
12
+ card = Sevendigital::Card.new(@api_client)
13
+ card.id = card_proxy.id.to_i
14
+ card.type = card_proxy.type.value.to_s
15
+ card.last_4_digits = card_proxy.last4digits.value.to_s
16
+ card.card_holder_name = card_proxy.card_holder_name.value.to_s if value_present?(card_proxy.card_holder_name)
17
+ card.expiry_date = card_proxy.expiry_date.value.to_s if value_present?(card_proxy.expiry_date)
18
+
19
+ return card
20
+ end
21
+
22
+ end
23
+
24
+ end
@@ -0,0 +1,21 @@
1
+ module Sevendigital
2
+
3
+ #@private
4
+ class UserDigestor < Digestor # :nodoc:
5
+
6
+ def default_element_name; :user end
7
+
8
+ def from_proxy(user_proxy)
9
+ make_sure_not_eating_nil(user_proxy)
10
+
11
+ user = User.new(@api_client)
12
+ user.id = user_proxy.id.to_s if !user_proxy.nil?
13
+ user.type = user_proxy.type.value.to_sym
14
+ user.email_address = user_proxy.email_address.value.to_s if value_present?(user_proxy.email_address)
15
+
16
+ return user
17
+ end
18
+
19
+ end
20
+
21
+ end
@@ -1,82 +1,99 @@
1
- require "peachy"
2
-
3
- module Sevendigital
4
-
5
- # provides access to Artist related API methods (artist/*)
6
- class ArtistManager < Manager
7
-
8
- # calls *artist/details* API method and returns Artist with populated details
9
- #
10
- # <tt>artist_id</tt>:: artist ID
11
- # <tt>options</tt>:: optional hash of additional API parameters, e.g. {page_size => 50}, etc
12
- def get_details(artist_id, options={})
13
- api_response = @api_client.make_api_request("artist/details", {:artistId => artist_id}, options)
14
- @api_client.artist_digestor.from_xml(api_response.content.artist)
15
- end
16
-
17
- # calls *artist/releases* API method and returns Release array
18
- #
19
- # <tt>artist_id</tt>:: artist ID
20
- # <tt>options</tt>:: optional hash of additional API parameters, e.g. {page_size => 50}, etc
21
- def get_releases(artist_id, options={})
22
- api_response = @api_client.make_api_request("artist/releases", {:artistId => artist_id}, options)
23
- @api_client.release_digestor.list_from_xml(api_response.content.releases)
24
- end
25
-
26
- # calls *artist/toptracks* API method and returns Track array
27
- #
28
- # <tt>artist_id</tt>:: artist ID
29
- # <tt>options</tt>:: optional hash of additional API parameters, e.g. {page_size => 50}, etc
30
- def get_top_tracks(artist_id, options={})
31
- api_response = @api_client.make_api_request("artist/topTracks", {:artistId => artist_id}, options)
32
- @api_client.track_digestor.list_from_xml(api_response.content.tracks)
33
- end
34
-
35
- # calls *artist/similar* API method and returns Artist array
36
- #
37
- # <tt>artist_id</tt>:: artist ID
38
- # <tt>options</tt>:: optional hash of additional API parameters, e.g. {page_size => 50}, etc
39
- def get_similar(artist_id, options={})
40
- api_response = @api_client.make_api_request("artist/similar", {:artistId => artist_id}, options)
41
- @api_client.artist_digestor.list_from_xml(api_response.content.artists)
42
- end
43
-
44
- # calls *artist/byTag/top* API method and returns Artist array
45
- #
46
- # <tt>tags</tt>:: string containing comma separated list of tags
47
- # <tt>options</tt>:: optional hash of additional API parameters, e.g. {page_size => 50}, etc
48
- def get_top_by_tag(tags, options={})
49
- api_response = @api_client.make_api_request("artist/byTag/top", {:tags => tags}, options)
50
- @api_client.artist_digestor.nested_list_from_xml(api_response.content.tagged_results, :tagged_item, :tagged_results)
51
- end
52
-
53
- # calls *artist/search* API method and returns Artist array
54
- #
55
- # <tt>query</tt>:: string containing the search query
56
- # <tt>options</tt>:: optional hash of additional API parameters, e.g. {page_size => 50}, etc
57
- def search(query, options={})
58
- api_response = @api_client.make_api_request("artist/search", {:q => query}, options)
59
- @api_client.artist_digestor.nested_list_from_xml(api_response.content.search_results, :search_result, :search_results)
60
- end
61
-
62
- # calls *artist/browse* API method and returns Artist array
63
- #
64
- # <tt>letter</tt>:: string containing the search query
65
- # <tt>options</tt>:: optional hash of additional API parameters, e.g. {page_size => 50}, etc
66
- def browse(letter, options={})
67
- api_response = @api_client.make_api_request("artist/browse", {:letter => letter}, options)
68
- @api_client.artist_digestor.list_from_xml(api_response.content.artists)
69
- end
70
-
71
- # calls *artist/chart* API method and returns Artist array
72
- #
73
- # <tt>options</tt>:: optional hash of additional API parameters, e.g. {page_size => 50}, etc
74
- def get_chart(options={})
75
- api_response = @api_client.make_api_request("artist/chart", {}, options)
76
- @api_client.chart_item_digestor.list_from_xml(api_response.content.chart)
77
- end
78
-
79
-
80
- end
81
-
82
- end
1
+ require "peachy"
2
+
3
+ module Sevendigital
4
+
5
+ # provides access to Artist related API methods (artist/*)
6
+ class ArtistManager < Manager
7
+
8
+ # calls *artist/details* API method and returns Artist with populated details
9
+ #
10
+ # @param [Integer] artist_id
11
+ # @param [Hash] options optional hash of additional API parameters, e.g. page_size => 50, etc
12
+ # @return [Artist]
13
+ def get_details(artist_id, options={})
14
+ api_response = @api_client.make_api_request(:GET, "artist/details", {:artistId => artist_id}, options)
15
+ @api_client.artist_digestor.from_xml(api_response.content.artist)
16
+ end
17
+
18
+ # calls *artist/releases* API method and returns Release array
19
+ #
20
+ # @param [Integer] artist_id
21
+ # @param [Hash] options optional hash of additional API parameters, e.g. page_size => 50, etc
22
+ # @return [[Artist]]
23
+ def get_releases(artist_id, options={})
24
+ api_response = @api_client.make_api_request(:GET, "artist/releases", {:artistId => artist_id}, options)
25
+ @api_client.release_digestor.list_from_xml(api_response.content.releases)
26
+ end
27
+
28
+ # calls *artist/toptracks* API method and returns Track array
29
+ #
30
+ # @param [Integer] artist_id
31
+ # @param [Hash] options optional hash of additional API parameters, e.g. page_size => 50, etc
32
+ # @return [Array<Track>]
33
+ def get_top_tracks(artist_id, options={})
34
+ api_response = @api_client.make_api_request(:GET, "artist/topTracks", {:artistId => artist_id}, options)
35
+ @api_client.track_digestor.list_from_xml(api_response.content.tracks)
36
+ end
37
+
38
+ # calls *artist/similar* API method and returns Artist array
39
+ #
40
+ # @param [Integer] artist_id
41
+ # @param [Hash] options optional hash of additional API parameters, e.g. page_size => 50, etc
42
+ # @return [Array<Artist>]
43
+ def get_similar(artist_id, options={})
44
+ api_response = @api_client.make_api_request(:GET, "artist/similar", {:artistId => artist_id}, options)
45
+ @api_client.artist_digestor.list_from_xml(api_response.content.artists)
46
+ end
47
+
48
+ # calls *artist/byTag/top* API method and returns Artist array
49
+ #
50
+ # @param [String] tags tag or comma separated list of tags
51
+ # @param [Hash] options optional hash of additional API parameters, e.g. page_size => 50, etc
52
+ # @return [Array<Artist>]
53
+ def get_top_by_tag(tags, options={})
54
+ api_response = @api_client.make_api_request(:GET, "artist/byTag/top", {:tags => tags}, options)
55
+ @api_client.artist_digestor.nested_list_from_xml(api_response.content.tagged_results, :tagged_item, :tagged_results)
56
+ end
57
+
58
+ # calls *artist/search* API method and returns Artist array
59
+ #
60
+ # @param [String] query search query
61
+ # @param [Hash] options optional hash of additional API parameters, e.g. page_size => 50, etc
62
+ # @return [Array<Artist>]
63
+ def search(query, options={})
64
+ api_response = @api_client.make_api_request(:GET, "artist/search", {:q => query}, options)
65
+ @api_client.artist_digestor.nested_list_from_xml(api_response.content.search_results, :search_result, :search_results)
66
+ end
67
+
68
+ # calls *artist/browse* API method and returns Artist array
69
+ #
70
+ # @param [String] letter the letter(s) returned artist names should artists
71
+ # @param [Hash] options optional hash of additional API parameters, e.g. page_size => 50, etc
72
+ # @return [Array<Artist>]
73
+ def browse(letter, options={})
74
+ api_response = @api_client.make_api_request(:GET, "artist/browse", {:letter => letter}, options)
75
+ @api_client.artist_digestor.list_from_xml(api_response.content.artists)
76
+ end
77
+
78
+ # calls *artist/chart* API method and returns Artist array
79
+ #
80
+ # @param [Hash] options optional hash of additional API parameters, e.g. page_size => 50, etc
81
+ def get_chart(options={})
82
+ api_response = @api_client.make_api_request(:GET, "artist/chart", {}, options)
83
+ @api_client.chart_item_digestor.list_from_xml(api_response.content.chart)
84
+ end
85
+
86
+ # calls *artist/tags* API method and returns Tag array
87
+ #
88
+ # @param [Integer] artist_id
89
+ # @param [Hash] options optional hash of additional API parameters, e.g. page_size => 50, etc
90
+ # @return [Array<Tag>]
91
+ def get_tags(artist_id, options={})
92
+ api_response = @api_client.make_api_request(:GET, "artist/tags", {:artistId => artist_id}, options)
93
+ @api_client.tag_digestor.list_from_xml(api_response.content.tags)
94
+ end
95
+
96
+
97
+ end
98
+
99
+ end
@@ -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("basket", {:basketId => basket_id}, options)
7
- @api_client.basket_digestor.from_xml(api_response.content.basket)
8
- end
9
-
10
- def create(options={})
11
- api_response = @api_client.make_api_request("basket/create", {}, options)
12
- @api_client.basket_digestor.from_xml(api_response.content.basket)
13
- end
14
-
15
- def add_item(basket_id, release_id, track_id=nil, options={})
16
- api_response = @api_client.make_api_request("basket/addItem", {:basketId => basket_id, :releaseId => release_id, :trackId => track_id}, options)
17
- @api_client.basket_digestor.from_xml(api_response.content.basket)
18
- end
19
-
20
-
21
- def remove_item(basket_id, item_id, options={})
22
- api_response = @api_client.make_api_request("basket/removeItem", {:basketId => basket_id, :itemId => item_id}, options)
23
- @api_client.basket_digestor.from_xml(api_response.content.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(api_response.content.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(api_response.content.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(api_response.content.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(api_response.content.basket)
24
+ end
25
+
26
+
27
+ end
28
+
29
+ end
@@ -1,11 +1,12 @@
1
- module Sevendigital
2
-
3
- class Manager # :nodoc:
4
-
5
- def initialize(api_client)
6
- @api_client = api_client
7
- end
8
-
9
- end
10
-
11
- 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("oauth/requestToken", {})
7
- @api_client.oauth_request_token_digestor.from_xml(api_response.content.oauth_request_token, :oauth_request_token)
8
- end
9
-
10
- def get_access_token(request_token)
11
- api_response = @api_client.make_signed_api_request("oauth/accessToken", {}, {}, request_token)
12
- @api_client.oauth_access_token_digestor.from_xml(api_response.content.oauth_access_token, :oauth_access_token)
13
- end
14
-
15
- def authorise_request_token(username, password, request_token)
16
- api_response = @api_client.make_signed_api_request("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(api_response.content.oauth_request_token, :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(api_response.content.oauth_access_token, :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,51 +1,57 @@
1
- require "peachy"
2
-
3
- module Sevendigital
4
-
5
- class ReleaseManager < Manager
6
-
7
- def get_details(release_id, options = {})
8
- api_response = @api_client.make_api_request("release/details", {:releaseId => release_id}, options)
9
- @api_client.release_digestor.from_xml(api_response.content.release)
10
- end
11
-
12
- def get_tracks(release_id, options = {})
13
- options[:page_size] ||= 100
14
- api_response = @api_client.make_api_request("release/tracks", {:releaseId => release_id}, options)
15
- @api_client.track_digestor.list_from_xml(api_response.content.tracks)
16
- end
17
-
18
- def get_chart(options={})
19
- api_response = @api_client.make_api_request("release/chart", {}, options)
20
- @api_client.chart_item_digestor.list_from_xml(api_response.content.chart)
21
- end
22
-
23
- def get_by_date(from_date = nil, to_date = nil, options = {})
24
- parameters = Hash.new
25
- parameters[:fromDate] = from_date.strftime("%Y%m%d") if from_date
26
- parameters[:toDate] = to_date.strftime("%Y%m%d") if to_date
27
-
28
- api_response = @api_client.make_api_request("release/byDate", parameters, options)
29
- @api_client.release_digestor.list_from_xml(api_response.content.releases)
30
- end
31
-
32
- def get_recommendations(release_id, options = {})
33
- api_response = @api_client.make_api_request("release/recommend", {:releaseId => release_id}, options)
34
- @api_client.release_digestor.nested_list_from_xml(api_response.content.recommendations, :recommended_item, :recommendations)
35
- end
36
-
37
-
38
- def get_top_by_tag(tags, options = {})
39
- api_response = @api_client.make_api_request("release/byTag/top", {:tags => tags}, options)
40
- @api_client.release_digestor.nested_list_from_xml( \
41
- api_response.content.tagged_results, :tagged_item, :tagged_results )
42
- end
43
-
44
- def search(query, options={})
45
- api_response = @api_client.make_api_request("release/search", {:q => query}, options)
46
- @api_client.release_digestor.nested_list_from_xml(api_response.content.search_results, :search_result, :search_results)
47
- end
48
-
49
- end
50
-
1
+ require "peachy"
2
+
3
+ module Sevendigital
4
+
5
+ class ReleaseManager < Manager
6
+
7
+ def get_details(release_id, options = {})
8
+ api_response = @api_client.make_api_request(:GET, "release/details", {:releaseId => release_id}, options)
9
+ @api_client.release_digestor.from_xml(api_response.content.release)
10
+ end
11
+
12
+ def get_tracks(release_id, options = {})
13
+ options[:page_size] ||= 100
14
+ api_response = @api_client.make_api_request(:GET, "release/tracks", {:releaseId => release_id}, options)
15
+ @api_client.track_digestor.list_from_xml(api_response.content.tracks)
16
+ end
17
+
18
+ def get_chart(options={})
19
+ api_response = @api_client.make_api_request(:GET, "release/chart", {}, options)
20
+ @api_client.chart_item_digestor.list_from_xml(api_response.content.chart)
21
+ end
22
+
23
+ def get_by_date(from_date = nil, to_date = nil, options = {})
24
+ parameters = Hash.new
25
+ parameters[:fromDate] = from_date.strftime("%Y%m%d") if from_date
26
+ parameters[:toDate] = to_date.strftime("%Y%m%d") if to_date
27
+
28
+ api_response = @api_client.make_api_request(:GET, "release/byDate", parameters, options)
29
+ @api_client.release_digestor.list_from_xml(api_response.content.releases)
30
+ end
31
+
32
+ def get_recommendations(release_id, options = {})
33
+ api_response = @api_client.make_api_request(:GET, "release/recommend", {:releaseId => release_id}, options)
34
+ @api_client.release_digestor.nested_list_from_xml(api_response.content.recommendations, :recommended_item, :recommendations)
35
+ end
36
+
37
+
38
+ def get_top_by_tag(tags, options = {})
39
+ api_response = @api_client.make_api_request(:GET, "release/byTag/top", {:tags => tags}, options)
40
+ @api_client.release_digestor.nested_list_from_xml( \
41
+ api_response.content.tagged_results, :tagged_item, :tagged_results )
42
+ end
43
+
44
+ def search(query, options={})
45
+ api_response = @api_client.make_api_request(:GET, "release/search", {:q => query}, options)
46
+ @api_client.release_digestor.nested_list_from_xml(api_response.content.search_results, :search_result, :search_results)
47
+ end
48
+
49
+
50
+ def get_tags(release_id, options = {})
51
+ api_response = @api_client.make_api_request(:GET, "release/tags", {:releaseId => release_id}, options)
52
+ @api_client.tag_digestor.list_from_xml(api_response.content.tags)
53
+ end
54
+
55
+ end
56
+
51
57
  end