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,19 +1,19 @@
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
+ 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,26 +1,26 @@
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
+ 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,28 +1,28 @@
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
+ 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,71 +1,71 @@
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
+ 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,20 +1,20 @@
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
+ 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,22 +1,22 @@
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
+ 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,21 +1,21 @@
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
-
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
+
21
21
  end
@@ -1,18 +1,18 @@
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
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