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
@@ -1,18 +1,19 @@
1
- module Sevendigital
2
-
3
- class BasketDigestor < Digestor # :nodoc:
4
-
5
- def default_element_name; :basket end
6
-
7
- def from_proxy(basket_proxy)
8
- make_sure_not_eating_nil (basket_proxy)
9
- basket = Sevendigital::Basket.new(@api_client)
10
- basket.id = basket_proxy.id.to_s
11
- basket.basket_items = @api_client.basket_item_digestor.list_from_proxy(basket_proxy.basket_items)
12
-
13
- return basket
14
- end
15
-
16
- end
17
-
18
- end
1
+ module Sevendigital
2
+
3
+ #@private
4
+ class BasketDigestor < Digestor # :nodoc:
5
+
6
+ def default_element_name; :basket end
7
+
8
+ def from_proxy(basket_proxy)
9
+ make_sure_not_eating_nil (basket_proxy)
10
+ basket = Sevendigital::Basket.new(@api_client)
11
+ basket.id = basket_proxy.id.to_s
12
+ basket.basket_items = @api_client.basket_item_digestor.list_from_proxy(basket_proxy.basket_items)
13
+
14
+ return basket
15
+ end
16
+
17
+ end
18
+
19
+ end
@@ -1,25 +1,26 @@
1
- module Sevendigital
2
-
3
- class BasketItemDigestor < Digestor # :nodoc:
4
-
5
- def default_element_name; :basket_item end
6
- def default_list_element_name; :basket_items end
7
-
8
- def from_proxy(basket_item_proxy)
9
- make_sure_not_eating_nil(basket_item_proxy)
10
- basket_item = BasketItem.new(@api_client)
11
-
12
- basket_item.id = basket_item_proxy.id.to_i
13
- basket_item.type = basket_item_proxy.type.value.downcase.to_sym
14
- basket_item.artist_name = basket_item_proxy.artist_name.value.to_s
15
- basket_item.item_name = basket_item_proxy.item_name.value.to_s
16
- basket_item.release_id = basket_item_proxy.release_id.value.to_i
17
- basket_item.track_id = basket_item_proxy.track_id.value.to_i
18
- basket_item.price = @api_client.price_digestor.from_proxy(basket_item_proxy.price)
19
-
20
- return basket_item
21
- end
22
-
23
- end
24
-
25
- end
1
+ module Sevendigital
2
+
3
+ #@private
4
+ class BasketItemDigestor < Digestor # :nodoc:
5
+
6
+ def default_element_name; :basket_item end
7
+ def default_list_element_name; :basket_items end
8
+
9
+ def from_proxy(basket_item_proxy)
10
+ make_sure_not_eating_nil(basket_item_proxy)
11
+ basket_item = BasketItem.new(@api_client)
12
+
13
+ basket_item.id = basket_item_proxy.id.to_i
14
+ basket_item.type = basket_item_proxy.type.value.downcase.to_sym
15
+ basket_item.artist_name = basket_item_proxy.artist_name.value.to_s
16
+ basket_item.item_name = basket_item_proxy.item_name.value.to_s
17
+ basket_item.release_id = basket_item_proxy.release_id.value.to_i
18
+ basket_item.track_id = basket_item_proxy.track_id.value.to_i
19
+ basket_item.price = @api_client.price_digestor.from_proxy(basket_item_proxy.price)
20
+
21
+ return basket_item
22
+ end
23
+
24
+ end
25
+
26
+ end
@@ -1,27 +1,28 @@
1
- module Sevendigital
2
-
3
- class ChartItemDigestor < Digestor # :nodoc:
4
-
5
- def default_element_name; :chart_item end
6
- def default_list_element_name; :chart end
7
-
8
- def from_proxy(chart_item_proxy)
9
-
10
- make_sure_not_eating_nil(chart_item_proxy)
11
-
12
- chart_item = ChartItem.new(@client)
13
- chart_item.position = chart_item_proxy.position.value.to_i
14
- chart_item.change = chart_item_proxy.change.value.to_s.downcase.to_sym
15
- if chart_item_proxy.release then
16
- chart_item.item = @api_client.release_digestor.from_proxy(chart_item_proxy.release)
17
- elsif chart_item_proxy.track
18
- chart_item.item = @api_client.track_digestor.from_proxy(chart_item_proxy.track)
19
- else
20
- chart_item.item = @api_client.artist_digestor.from_proxy(chart_item_proxy.artist)
21
- end
22
- return chart_item
23
- end
24
-
25
- end
26
-
27
- end
1
+ module Sevendigital
2
+
3
+ #@private
4
+ class ChartItemDigestor < Digestor # :nodoc:
5
+
6
+ def default_element_name; :chart_item end
7
+ def default_list_element_name; :chart end
8
+
9
+ def from_proxy(chart_item_proxy)
10
+
11
+ make_sure_not_eating_nil(chart_item_proxy)
12
+
13
+ chart_item = ChartItem.new(@client)
14
+ chart_item.position = chart_item_proxy.position.value.to_i
15
+ chart_item.change = chart_item_proxy.change.value.to_s.downcase.to_sym
16
+ if chart_item_proxy.release then
17
+ chart_item.item = @api_client.release_digestor.from_proxy(chart_item_proxy.release)
18
+ elsif chart_item_proxy.track
19
+ chart_item.item = @api_client.track_digestor.from_proxy(chart_item_proxy.track)
20
+ else
21
+ chart_item.item = @api_client.artist_digestor.from_proxy(chart_item_proxy.artist)
22
+ end
23
+ return chart_item
24
+ end
25
+
26
+ end
27
+
28
+ end
@@ -1,70 +1,71 @@
1
- module Sevendigital
2
-
3
- #internal generic class used for digesting XML responses from the API
4
- class Digestor # :nodoc:
5
-
6
- #TODO TEST THIS CRAP
7
-
8
- def initialize(api_client)
9
- @api_client = api_client
10
- end
11
-
12
- def from_xml(xml_or_proxy, element_name = default_element_name)
13
- return from_proxy(ProxyPolice.ensure_is_proxy(xml_or_proxy, element_name))
14
- end
15
-
16
- def list_from_xml(xml_or_proxy, list_element_name = default_list_element_name)
17
- list_from_proxy(ProxyPolice.ensure_is_proxy(xml_or_proxy, list_element_name))
18
- end
19
-
20
- def list_from_proxy(object_list_proxy)
21
- make_sure_not_eating_nil(object_list_proxy)
22
- list = []
23
- return list if object_list_proxy.kind_of?(Peachy::SimpleContent)
24
- if object_list_proxy.send(default_element_name) then
25
- object_list_proxy.send(default_element_name).each { |object_proxy| list << from_proxy(object_proxy) }
26
- end
27
- paginate_results(object_list_proxy, list)
28
- end
29
-
30
- #nested parsing for api methods that return standard object inside containers with no additional (useful) information
31
- #e.g. tagged_item.artist, recommendation.release, search_result.track, etc
32
-
33
- def nested_list_from_xml(xml_or_proxy, container_element_name, list_element_name = default_list_element_name)
34
- nested_list_from_proxy(ProxyPolice.ensure_is_proxy(xml_or_proxy, list_element_name), container_element_name)
35
- end
36
-
37
- def nested_list_from_proxy(object_list_proxy, container_element_name)
38
- make_sure_not_eating_nil(object_list_proxy)
39
- list = []
40
- if object_list_proxy.send(container_element_name) then
41
- object_list_proxy.send(container_element_name).each do
42
- |object_proxy| list << from_proxy(object_proxy.send(default_element_name))
43
- end
44
- end
45
- return paginate_results(object_list_proxy, list)
46
- end
47
-
48
- def paginate_results(xml_results, list)
49
- pager = @api_client.pager_digestor.from_xml(xml_results)
50
- return list if !pager
51
- pager.paginate_list(list)
52
- end
53
-
54
- def make_sure_not_eating_nil(proxy)
55
- raise DigestiveProblem, "There's nothing i can digest" unless proxy
56
- end
57
-
58
- def value_present?(proxy_node)
59
- !proxy_node.nil? && !proxy_node.value.nil? && !proxy_node.value.empty?
60
- end
61
-
62
- def content_present?(proxy_node)
63
- !proxy_node.nil?
64
- end
65
-
66
- end
67
-
68
- class DigestiveProblem < StandardError; end
69
-
70
- end
1
+ module Sevendigital
2
+
3
+ #@private
4
+ #internal generic class used for digesting XML responses from the API
5
+ class Digestor # :nodoc:
6
+
7
+ #TODO TEST THIS CRAP
8
+
9
+ def initialize(api_client)
10
+ @api_client = api_client
11
+ end
12
+
13
+ def from_xml(xml_or_proxy, element_name = default_element_name)
14
+ return from_proxy(ProxyPolice.ensure_is_proxy(xml_or_proxy, element_name))
15
+ end
16
+
17
+ def list_from_xml(xml_or_proxy, list_element_name = default_list_element_name)
18
+ list_from_proxy(ProxyPolice.ensure_is_proxy(xml_or_proxy, list_element_name))
19
+ end
20
+
21
+ def list_from_proxy(object_list_proxy)
22
+ make_sure_not_eating_nil(object_list_proxy)
23
+ list = []
24
+ return list if object_list_proxy.kind_of?(Peachy::SimpleContent)
25
+ if object_list_proxy.send(default_element_name) then
26
+ object_list_proxy.send(default_element_name).each { |object_proxy| list << from_proxy(object_proxy) }
27
+ end
28
+ paginate_results(object_list_proxy, list)
29
+ end
30
+
31
+ #nested parsing for api methods that return standard object inside containers with no additional (useful) information
32
+ #e.g. tagged_item.artist, recommendation.release, search_result.track, etc
33
+
34
+ def nested_list_from_xml(xml_or_proxy, container_element_name, list_element_name = default_list_element_name)
35
+ nested_list_from_proxy(ProxyPolice.ensure_is_proxy(xml_or_proxy, list_element_name), container_element_name)
36
+ end
37
+
38
+ def nested_list_from_proxy(object_list_proxy, container_element_name)
39
+ make_sure_not_eating_nil(object_list_proxy)
40
+ list = []
41
+ if object_list_proxy.send(container_element_name) then
42
+ object_list_proxy.send(container_element_name).each do
43
+ |object_proxy| list << from_proxy(object_proxy.send(default_element_name))
44
+ end
45
+ end
46
+ return paginate_results(object_list_proxy, list)
47
+ end
48
+
49
+ def paginate_results(xml_results, list)
50
+ pager = @api_client.pager_digestor.from_xml(xml_results)
51
+ return list if !pager
52
+ pager.paginate_list(list)
53
+ end
54
+
55
+ def make_sure_not_eating_nil(proxy)
56
+ raise DigestiveProblem, "There's nothing i can digest" unless proxy
57
+ end
58
+
59
+ def value_present?(proxy_node)
60
+ !proxy_node.nil? && !proxy_node.value.nil? && !proxy_node.value.empty?
61
+ end
62
+
63
+ def content_present?(proxy_node)
64
+ !proxy_node.nil?
65
+ end
66
+
67
+ end
68
+
69
+ class DigestiveProblem < StandardError; end
70
+
71
+ end
@@ -1,19 +1,20 @@
1
- module Sevendigital
2
-
3
- class DownloadUrlDigestor < Digestor # :nodoc:
4
-
5
- def default_element_name; :download_url end
6
- def default_list_element_name; :download_urls end
7
-
8
- def from_proxy(download_url_proxy)
9
- make_sure_not_eating_nil (download_url_proxy)
10
- download_url = DownloadUrl.new()
11
- download_url.url = download_url_proxy.url.value.to_s
12
- download_url.format = @api_client.format_digestor.from_proxy(download_url_proxy.format)
13
-
14
- return download_url
15
- end
16
-
17
- end
18
-
19
- end
1
+ module Sevendigital
2
+
3
+ #@private
4
+ class DownloadUrlDigestor < Digestor # :nodoc:
5
+
6
+ def default_element_name; :download_url end
7
+ def default_list_element_name; :download_urls end
8
+
9
+ def from_proxy(download_url_proxy)
10
+ make_sure_not_eating_nil (download_url_proxy)
11
+ download_url = DownloadUrl.new()
12
+ download_url.url = download_url_proxy.url.value.to_s
13
+ download_url.format = @api_client.format_digestor.from_proxy(download_url_proxy.format)
14
+
15
+ return download_url
16
+ end
17
+
18
+ end
19
+
20
+ end
@@ -1,21 +1,22 @@
1
- module Sevendigital
2
-
3
- class FormatDigestor < Digestor # :nodoc:
4
-
5
- def default_element_name; :format end
6
- def default_list_element_name; :formats end
7
-
8
- def from_proxy(format_proxy)
9
- make_sure_not_eating_nil (format_proxy)
10
- format = Format.new()
11
- format.id = format_proxy.id.to_i
12
- format.file_format = format_proxy.file_format.value.to_sym
13
- format.bit_rate = format_proxy.bit_rate.value.to_i
14
- format.drm_free = format_proxy.drm_free.value.to_s.downcase == "true"
15
-
16
- return format
17
- end
18
-
19
- end
20
-
21
- end
1
+ module Sevendigital
2
+
3
+ #@private
4
+ class FormatDigestor < Digestor # :nodoc:
5
+
6
+ def default_element_name; :format end
7
+ def default_list_element_name; :formats end
8
+
9
+ def from_proxy(format_proxy)
10
+ make_sure_not_eating_nil (format_proxy)
11
+ format = Format.new()
12
+ format.id = format_proxy.id.to_i
13
+ format.file_format = format_proxy.file_format.value.to_sym
14
+ format.bit_rate = format_proxy.bit_rate.value.to_i
15
+ format.drm_free = format_proxy.drm_free.value.to_s.downcase == "true"
16
+
17
+ return format
18
+ end
19
+
20
+ end
21
+
22
+ end
@@ -1,20 +1,21 @@
1
- module Sevendigital
2
-
3
- class LabelDigestor < Digestor # :nodoc:
4
-
5
- def default_element_name; :label end
6
- def default_list_element_name; :labels end
7
-
8
- def from_proxy(label_proxy)
9
- make_sure_not_eating_nil(label_proxy)
10
-
11
- label = Label.new()
12
- label.id = label_proxy.id.to_i
13
- label.name = label_proxy.name.value.to_s
14
-
15
- return label
16
- end
17
-
18
- end
19
-
1
+ module Sevendigital
2
+
3
+ #@private
4
+ class LabelDigestor < Digestor # :nodoc:
5
+
6
+ def default_element_name; :label end
7
+ def default_list_element_name; :labels end
8
+
9
+ def from_proxy(label_proxy)
10
+ make_sure_not_eating_nil(label_proxy)
11
+
12
+ label = Label.new()
13
+ label.id = label_proxy.id.to_i
14
+ label.name = label_proxy.name.value.to_s
15
+
16
+ return label
17
+ end
18
+
19
+ end
20
+
20
21
  end
@@ -1,17 +1,18 @@
1
- module Sevendigital
2
-
3
- class LockerDigestor < Digestor # :nodoc:
4
-
5
- def default_element_name; :locker end
6
-
7
- def from_proxy(locker_proxy)
8
- make_sure_not_eating_nil (locker_proxy)
9
- locker = Locker.new(@api_client)
10
- locker.locker_releases = @api_client.locker_release_digestor.list_from_proxy(locker_proxy.locker_releases)
11
-
12
- return locker
13
- end
14
-
15
- end
16
-
17
- end
1
+ module Sevendigital
2
+
3
+ #@private
4
+ class LockerDigestor < Digestor # :nodoc:
5
+
6
+ def default_element_name; :locker end
7
+
8
+ def from_proxy(locker_proxy)
9
+ make_sure_not_eating_nil (locker_proxy)
10
+ locker = Locker.new(@api_client)
11
+ locker.locker_releases = @api_client.locker_release_digestor.list_from_proxy(locker_proxy.locker_releases)
12
+
13
+ return locker
14
+ end
15
+
16
+ end
17
+
18
+ end