7digital 0.0.7 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (211) hide show
  1. data/README.rdoc +8 -1
  2. data/lib/sevendigital.rb +4 -2
  3. data/lib/sevendigital/api_operator.rb +92 -94
  4. data/lib/sevendigital/api_operator_cached.rb +55 -33
  5. data/lib/sevendigital/api_request.rb +50 -54
  6. data/lib/sevendigital/client.rb +15 -6
  7. data/lib/sevendigital/client_configuration.rb +0 -3
  8. data/lib/sevendigital/client_digestors.rb +15 -0
  9. data/lib/sevendigital/client_managers.rb +11 -1
  10. data/lib/sevendigital/digestion_tract/api_response_digestor.rb +31 -40
  11. data/lib/sevendigital/digestion_tract/artist_digestor.rb +16 -13
  12. data/lib/sevendigital/digestion_tract/basket_digestor.rb +5 -5
  13. data/lib/sevendigital/digestion_tract/basket_item_digestor.rb +12 -12
  14. data/lib/sevendigital/digestion_tract/chart_item_digestor.rb +17 -11
  15. data/lib/sevendigital/digestion_tract/country_digestor.rb +16 -0
  16. data/lib/sevendigital/digestion_tract/digestor.rb +82 -28
  17. data/lib/sevendigital/digestion_tract/download_url_digestor.rb +10 -7
  18. data/lib/sevendigital/digestion_tract/format_digestor.rb +11 -9
  19. data/lib/sevendigital/digestion_tract/label_digestor.rb +8 -7
  20. data/lib/sevendigital/digestion_tract/list_digestor.rb +24 -0
  21. data/lib/sevendigital/digestion_tract/list_item_digestor.rb +26 -0
  22. data/lib/sevendigital/digestion_tract/locker_digestor.rb +9 -5
  23. data/lib/sevendigital/digestion_tract/locker_release_digestor.rb +13 -7
  24. data/lib/sevendigital/digestion_tract/locker_track_digestor.rb +13 -9
  25. data/lib/sevendigital/digestion_tract/oauth_access_token_digestor.rb +7 -3
  26. data/lib/sevendigital/digestion_tract/oauth_request_token_digestor.rb +7 -3
  27. data/lib/sevendigital/digestion_tract/pager_digestor.rb +13 -9
  28. data/lib/sevendigital/digestion_tract/price_digestor.rb +15 -12
  29. data/lib/sevendigital/digestion_tract/release_digestor.rb +26 -34
  30. data/lib/sevendigital/digestion_tract/tag_digestor.rb +8 -7
  31. data/lib/sevendigital/digestion_tract/track_digestor.rb +27 -28
  32. data/lib/sevendigital/digestion_tract/user_card_digestor.rb +9 -8
  33. data/lib/sevendigital/digestion_tract/user_digestor.rb +8 -7
  34. data/lib/sevendigital/management/artist_manager.rb +9 -11
  35. data/lib/sevendigital/management/basket_manager.rb +4 -4
  36. data/lib/sevendigital/management/country_manager.rb +11 -0
  37. data/lib/sevendigital/management/list_manager.rb +18 -0
  38. data/lib/sevendigital/management/oauth_manager.rb +2 -2
  39. data/lib/sevendigital/management/release_manager.rb +9 -11
  40. data/lib/sevendigital/management/tag_manager.rb +1 -1
  41. data/lib/sevendigital/management/track_manager.rb +4 -5
  42. data/lib/sevendigital/management/user_card_manager.rb +2 -2
  43. data/lib/sevendigital/management/user_manager.rb +9 -4
  44. data/lib/sevendigital/model/api_response.rb +12 -4
  45. data/lib/sevendigital/model/artist.rb +5 -0
  46. data/lib/sevendigital/model/list.rb +5 -0
  47. data/lib/sevendigital/model/list_item.rb +9 -0
  48. data/lib/sevendigital/model/release.rb +2 -2
  49. data/lib/sevendigital/model/sevendigital_object.rb +1 -1
  50. data/lib/sevendigital/model/user.rb +12 -1
  51. data/lib/sevendigital/pager.rb +2 -6
  52. data/lib/sevendigital/version.rb +1 -1
  53. data/spec/api_operator_cached_spec.rb +14 -14
  54. data/spec/api_operator_spec.rb +18 -34
  55. data/spec/digestion_tract/api_response_digestor_spec.rb +26 -25
  56. data/spec/digestion_tract/artist_digestor_spec.rb +9 -9
  57. data/spec/digestion_tract/basket_digestor_spec.rb +2 -2
  58. data/spec/digestion_tract/basket_item_digestor_spec.rb +4 -4
  59. data/spec/digestion_tract/chart_digestor_spec.rb +4 -4
  60. data/spec/digestion_tract/country_digestor_spec.rb +33 -0
  61. data/spec/digestion_tract/digestor_spec.rb +34 -0
  62. data/spec/digestion_tract/download_url_digestor_spec.rb +2 -2
  63. data/spec/digestion_tract/format_digestor_spec.rb +2 -2
  64. data/spec/digestion_tract/label_digestor_spec.rb +2 -2
  65. data/spec/digestion_tract/list_digestor_spec.rb +32 -0
  66. data/spec/digestion_tract/list_item_digestor_spec.rb +80 -0
  67. data/spec/digestion_tract/locker_digestor_spec.rb +2 -2
  68. data/spec/digestion_tract/locker_release_digestor_spec.rb +5 -5
  69. data/spec/digestion_tract/locker_track_digestor_spec.rb +4 -4
  70. data/spec/digestion_tract/oauth_access_token_digestor_spec.rb +2 -2
  71. data/spec/digestion_tract/oauth_request_token_digestor_spec.rb +2 -2
  72. data/spec/digestion_tract/pager_digestor_spec.rb +3 -3
  73. data/spec/digestion_tract/price_digestor_spec.rb +4 -4
  74. data/spec/digestion_tract/release_digestor_spec.rb +19 -5
  75. data/spec/digestion_tract/tag_digestor_spec.rb +3 -3
  76. data/spec/digestion_tract/track_digestor_spec.rb +4 -4
  77. data/spec/digestion_tract/user_card_digestor_spec.rb +5 -5
  78. data/spec/digestion_tract/user_digestor_spec.rb +4 -6
  79. data/spec/integration/artist_spec.rb +86 -0
  80. data/spec/integration/country_spec.rb +18 -0
  81. data/spec/integration/list_spec.rb +22 -0
  82. data/spec/integration/purchasing_spec.rb +24 -0
  83. data/spec/integration/release_spec.rb +34 -0
  84. data/spec/integration/sevendigital_spec.yml +5 -0
  85. data/spec/integration/track_spec.rb +23 -0
  86. data/spec/integration/user_spec.rb +22 -0
  87. data/spec/management/artist_manager_spec.rb +32 -11
  88. data/spec/management/basket_manager_spec.rb +4 -4
  89. data/spec/management/country_manager_spec.rb +34 -0
  90. data/spec/management/list_manager_spec.rb +27 -0
  91. data/spec/management/oauth_manager_spec.rb +4 -4
  92. data/spec/management/release_manager_spec.rb +13 -13
  93. data/spec/management/tag_manager_spec.rb +1 -1
  94. data/spec/management/track_manager_spec.rb +4 -4
  95. data/spec/management/user_card_manager_spec.rb +2 -2
  96. data/spec/management/user_manager_spec.rb +20 -4
  97. data/spec/model/api_response_spec.rb +3 -3
  98. data/spec/model/artist_spec.rb +2 -2
  99. data/spec/model/sevendigital_object_spec.rb +4 -4
  100. data/spec/model/user_spec.rb +21 -0
  101. data/spec/spec_helper.rb +31 -11
  102. data/spec/test-xml/methods/country/resolve.xml +7 -0
  103. data/spec/test-xml/methods/editorial/list.xml +171 -0
  104. data/spec/test-xml/methods/user/details.xml +5 -0
  105. data/spec/test-xml/objects/artist.xml +1 -0
  106. data/spec/test-xml/objects/list.xml +89 -0
  107. data/spec/test-xml/objects/list_item_list.xml +86 -0
  108. data/spec/test-xml/objects/list_item_release.xml +14 -0
  109. data/spec/test-xml/objects/nested_release_list.xml +23 -0
  110. metadata +126 -273
  111. data/lib/sevendigital/peachy_patchy.rb +0 -9
  112. data/lib/sevendigital/proxy_police.rb +0 -28
  113. data/spec/coverage/assets/0.3.9/app.js +0 -66
  114. data/spec/coverage/assets/0.3.9/fancybox/blank.gif +0 -0
  115. data/spec/coverage/assets/0.3.9/fancybox/fancy_close.png +0 -0
  116. data/spec/coverage/assets/0.3.9/fancybox/fancy_loading.png +0 -0
  117. data/spec/coverage/assets/0.3.9/fancybox/fancy_nav_left.png +0 -0
  118. data/spec/coverage/assets/0.3.9/fancybox/fancy_nav_right.png +0 -0
  119. data/spec/coverage/assets/0.3.9/fancybox/fancy_shadow_e.png +0 -0
  120. data/spec/coverage/assets/0.3.9/fancybox/fancy_shadow_n.png +0 -0
  121. data/spec/coverage/assets/0.3.9/fancybox/fancy_shadow_ne.png +0 -0
  122. data/spec/coverage/assets/0.3.9/fancybox/fancy_shadow_nw.png +0 -0
  123. data/spec/coverage/assets/0.3.9/fancybox/fancy_shadow_s.png +0 -0
  124. data/spec/coverage/assets/0.3.9/fancybox/fancy_shadow_se.png +0 -0
  125. data/spec/coverage/assets/0.3.9/fancybox/fancy_shadow_sw.png +0 -0
  126. data/spec/coverage/assets/0.3.9/fancybox/fancy_shadow_w.png +0 -0
  127. data/spec/coverage/assets/0.3.9/fancybox/fancy_title_left.png +0 -0
  128. data/spec/coverage/assets/0.3.9/fancybox/fancy_title_main.png +0 -0
  129. data/spec/coverage/assets/0.3.9/fancybox/fancy_title_over.png +0 -0
  130. data/spec/coverage/assets/0.3.9/fancybox/fancy_title_right.png +0 -0
  131. data/spec/coverage/assets/0.3.9/fancybox/fancybox-x.png +0 -0
  132. data/spec/coverage/assets/0.3.9/fancybox/fancybox-y.png +0 -0
  133. data/spec/coverage/assets/0.3.9/fancybox/fancybox.png +0 -0
  134. data/spec/coverage/assets/0.3.9/fancybox/jquery.fancybox-1.3.1.css +0 -363
  135. data/spec/coverage/assets/0.3.9/fancybox/jquery.fancybox-1.3.1.pack.js +0 -44
  136. data/spec/coverage/assets/0.3.9/favicon.png +0 -0
  137. data/spec/coverage/assets/0.3.9/jquery-1.4.2.min.js +0 -155
  138. data/spec/coverage/assets/0.3.9/jquery.dataTables.min.js +0 -152
  139. data/spec/coverage/assets/0.3.9/jquery.timeago.js +0 -141
  140. data/spec/coverage/assets/0.3.9/jquery.url.js +0 -174
  141. data/spec/coverage/assets/0.3.9/loading.gif +0 -0
  142. data/spec/coverage/assets/0.3.9/magnify.png +0 -0
  143. data/spec/coverage/assets/0.3.9/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  144. data/spec/coverage/assets/0.3.9/smoothness/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
  145. data/spec/coverage/assets/0.3.9/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
  146. data/spec/coverage/assets/0.3.9/smoothness/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  147. data/spec/coverage/assets/0.3.9/smoothness/images/ui-bg_glass_75_dadada_1x400.png +0 -0
  148. data/spec/coverage/assets/0.3.9/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
  149. data/spec/coverage/assets/0.3.9/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  150. data/spec/coverage/assets/0.3.9/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
  151. data/spec/coverage/assets/0.3.9/smoothness/images/ui-icons_222222_256x240.png +0 -0
  152. data/spec/coverage/assets/0.3.9/smoothness/images/ui-icons_2e83ff_256x240.png +0 -0
  153. data/spec/coverage/assets/0.3.9/smoothness/images/ui-icons_454545_256x240.png +0 -0
  154. data/spec/coverage/assets/0.3.9/smoothness/images/ui-icons_888888_256x240.png +0 -0
  155. data/spec/coverage/assets/0.3.9/smoothness/images/ui-icons_cd0a0a_256x240.png +0 -0
  156. data/spec/coverage/assets/0.3.9/smoothness/jquery-ui-1.8.4.custom.css +0 -295
  157. data/spec/coverage/assets/0.3.9/stylesheet.css +0 -341
  158. data/spec/coverage/index.html +0 -47481
  159. data/spec/coverage/resultset.yml +0 -3556
  160. data/spec/model/coverage/assets/0.3.9/app.js +0 -66
  161. data/spec/model/coverage/assets/0.3.9/fancybox/blank.gif +0 -0
  162. data/spec/model/coverage/assets/0.3.9/fancybox/fancy_close.png +0 -0
  163. data/spec/model/coverage/assets/0.3.9/fancybox/fancy_loading.png +0 -0
  164. data/spec/model/coverage/assets/0.3.9/fancybox/fancy_nav_left.png +0 -0
  165. data/spec/model/coverage/assets/0.3.9/fancybox/fancy_nav_right.png +0 -0
  166. data/spec/model/coverage/assets/0.3.9/fancybox/fancy_shadow_e.png +0 -0
  167. data/spec/model/coverage/assets/0.3.9/fancybox/fancy_shadow_n.png +0 -0
  168. data/spec/model/coverage/assets/0.3.9/fancybox/fancy_shadow_ne.png +0 -0
  169. data/spec/model/coverage/assets/0.3.9/fancybox/fancy_shadow_nw.png +0 -0
  170. data/spec/model/coverage/assets/0.3.9/fancybox/fancy_shadow_s.png +0 -0
  171. data/spec/model/coverage/assets/0.3.9/fancybox/fancy_shadow_se.png +0 -0
  172. data/spec/model/coverage/assets/0.3.9/fancybox/fancy_shadow_sw.png +0 -0
  173. data/spec/model/coverage/assets/0.3.9/fancybox/fancy_shadow_w.png +0 -0
  174. data/spec/model/coverage/assets/0.3.9/fancybox/fancy_title_left.png +0 -0
  175. data/spec/model/coverage/assets/0.3.9/fancybox/fancy_title_main.png +0 -0
  176. data/spec/model/coverage/assets/0.3.9/fancybox/fancy_title_over.png +0 -0
  177. data/spec/model/coverage/assets/0.3.9/fancybox/fancy_title_right.png +0 -0
  178. data/spec/model/coverage/assets/0.3.9/fancybox/fancybox-x.png +0 -0
  179. data/spec/model/coverage/assets/0.3.9/fancybox/fancybox-y.png +0 -0
  180. data/spec/model/coverage/assets/0.3.9/fancybox/fancybox.png +0 -0
  181. data/spec/model/coverage/assets/0.3.9/fancybox/jquery.fancybox-1.3.1.css +0 -363
  182. data/spec/model/coverage/assets/0.3.9/fancybox/jquery.fancybox-1.3.1.pack.js +0 -44
  183. data/spec/model/coverage/assets/0.3.9/favicon.png +0 -0
  184. data/spec/model/coverage/assets/0.3.9/jquery-1.4.2.min.js +0 -155
  185. data/spec/model/coverage/assets/0.3.9/jquery.dataTables.min.js +0 -152
  186. data/spec/model/coverage/assets/0.3.9/jquery.timeago.js +0 -141
  187. data/spec/model/coverage/assets/0.3.9/jquery.url.js +0 -174
  188. data/spec/model/coverage/assets/0.3.9/loading.gif +0 -0
  189. data/spec/model/coverage/assets/0.3.9/magnify.png +0 -0
  190. data/spec/model/coverage/assets/0.3.9/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  191. data/spec/model/coverage/assets/0.3.9/smoothness/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
  192. data/spec/model/coverage/assets/0.3.9/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
  193. data/spec/model/coverage/assets/0.3.9/smoothness/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  194. data/spec/model/coverage/assets/0.3.9/smoothness/images/ui-bg_glass_75_dadada_1x400.png +0 -0
  195. data/spec/model/coverage/assets/0.3.9/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
  196. data/spec/model/coverage/assets/0.3.9/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  197. data/spec/model/coverage/assets/0.3.9/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
  198. data/spec/model/coverage/assets/0.3.9/smoothness/images/ui-icons_222222_256x240.png +0 -0
  199. data/spec/model/coverage/assets/0.3.9/smoothness/images/ui-icons_2e83ff_256x240.png +0 -0
  200. data/spec/model/coverage/assets/0.3.9/smoothness/images/ui-icons_454545_256x240.png +0 -0
  201. data/spec/model/coverage/assets/0.3.9/smoothness/images/ui-icons_888888_256x240.png +0 -0
  202. data/spec/model/coverage/assets/0.3.9/smoothness/images/ui-icons_cd0a0a_256x240.png +0 -0
  203. data/spec/model/coverage/assets/0.3.9/smoothness/jquery-ui-1.8.4.custom.css +0 -295
  204. data/spec/model/coverage/assets/0.3.9/stylesheet.css +0 -341
  205. data/spec/model/coverage/index.html +0 -8637
  206. data/spec/model/coverage/resultset.yml +0 -642
  207. data/spec/pager_spec.rb +0 -7
  208. data/spec/peachy_spec_helper_patch.rb +0 -7
  209. data/spec/proxy_police_spec.rb +0 -70
  210. data/spec/sevendigital_spec.rb +0 -51
  211. data/spec/sevendigital_spec.yml +0 -5
@@ -3,18 +3,21 @@ module Sevendigital
3
3
  #@private
4
4
  class DownloadUrlDigestor < Digestor # :nodoc:
5
5
 
6
- def default_element_name; :download_url end
7
- def default_list_element_name; :download_urls end
6
+ def default_element_name; :downloadUrl end
7
+ def default_list_element_name; :downloadUrls end
8
+
9
+ def from_xml_doc(xml_node)
10
+ make_sure_eating_nokogiri_node(xml_node)
8
11
 
9
- def from_proxy(download_url_proxy)
10
- make_sure_not_eating_nil (download_url_proxy)
11
12
  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
13
 
15
- return download_url
14
+ download_url.url = get_required_value(xml_node,"url")
15
+ download_url.format = get_required_node(xml_node, "format") {|v| @api_client.format_digestor.from_xml_doc(v)}
16
+
17
+ download_url
16
18
  end
17
19
 
20
+
18
21
  end
19
22
 
20
23
  end
@@ -6,15 +6,17 @@ module Sevendigital
6
6
  def default_element_name; :format end
7
7
  def default_list_element_name; :formats end
8
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
9
+ def from_xml_doc(xml_node)
10
+ make_sure_eating_nokogiri_node(xml_node)
11
+
12
+ format = Sevendigital::Format.new()
13
+
14
+ format.id = get_required_attribute(xml_node,"id").to_i
15
+ format.file_format = get_required_value(xml_node,"fileFormat").to_sym
16
+ format.bit_rate = get_required_value(xml_node,"bitRate").to_i
17
+ format.drm_free = get_required_value(xml_node,"drmFree").downcase == "true"
18
+
19
+ format
18
20
  end
19
21
 
20
22
  end
@@ -5,16 +5,17 @@ module Sevendigital
5
5
 
6
6
  def default_element_name; :label end
7
7
  def default_list_element_name; :labels end
8
-
9
- def from_proxy(label_proxy)
10
- make_sure_not_eating_nil(label_proxy)
8
+
9
+ def from_xml_doc(xml_node)
10
+ make_sure_eating_nokogiri_node(xml_node)
11
11
 
12
12
  label = Label.new()
13
- label.id = label_proxy.id.to_i
14
- label.name = label_proxy.name.value.to_s
15
13
 
16
- return label
17
- end
14
+ label.id = get_required_attribute(xml_node, "id").to_i
15
+ label.name = get_required_value(xml_node, "name")
16
+
17
+ label
18
+ end
18
19
 
19
20
  end
20
21
 
@@ -0,0 +1,24 @@
1
+ module Sevendigital
2
+
3
+ #@private
4
+ class ListDigestor < Digestor # :nodoc:
5
+
6
+ def default_element_name; :list end
7
+
8
+ def from_xml_doc(xml_node)
9
+ make_sure_eating_nokogiri_node(xml_node)
10
+
11
+ list = List.new(@api_client)
12
+
13
+ list.id = get_required_attribute(xml_node, "id").to_i
14
+ list.key = get_required_value(xml_node, "key")
15
+ list.list_items = get_required_node(xml_node, "listItems") do |v|
16
+ @api_client.list_item_digestor.list_from_xml_doc(v)
17
+ end
18
+
19
+ list
20
+ end
21
+
22
+ end
23
+
24
+ end
@@ -0,0 +1,26 @@
1
+ module Sevendigital
2
+
3
+ #@private
4
+ class ListItemDigestor < Digestor # :nodoc:
5
+
6
+ def default_element_name; :listItem end
7
+ def default_list_element_name; :listItems end
8
+
9
+ def from_xml_doc(xml_node)
10
+ make_sure_eating_nokogiri_node(xml_node)
11
+
12
+ list_item = Sevendigital::ListItem.new(@api_client)
13
+
14
+ list_item.id = get_required_attribute(xml_node, "id").to_i
15
+ list_item.type = get_required_value(xml_node, "type").to_sym
16
+
17
+ list_item.release = get_required_node(xml_node, "release") do |v|
18
+ @api_client.release_digestor.from_xml_doc(v)
19
+ end
20
+
21
+ list_item
22
+ end
23
+
24
+ end
25
+
26
+ end
@@ -5,12 +5,16 @@ module Sevendigital
5
5
 
6
6
  def default_element_name; :locker end
7
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)
8
+ def from_xml_doc(xml_node)
9
+ make_sure_eating_nokogiri_node(xml_node)
12
10
 
13
- return locker
11
+ locker = Locker.new(@api_client)
12
+
13
+ locker.locker_releases = get_required_node(xml_node, "lockerReleases") do |v|
14
+ @api_client.locker_release_digestor.list_from_xml_doc(v)
15
+ end
16
+
17
+ locker
14
18
  end
15
19
 
16
20
  end
@@ -3,16 +3,22 @@ module Sevendigital
3
3
  #@private
4
4
  class LockerReleaseDigestor < Digestor # :nodoc:
5
5
 
6
- def default_element_name; :locker_release end
7
- def default_list_element_name; :locker_releases end
6
+ def default_element_name; :lockerRelease end
7
+ def default_list_element_name; :lockerReleases end
8
+
9
+ def from_xml_doc(xml_node)
10
+ make_sure_eating_nokogiri_node(xml_node)
8
11
 
9
- def from_proxy(locker_release_proxy)
10
- make_sure_not_eating_nil(locker_release_proxy)
11
12
  locker_release = Sevendigital::LockerRelease.new(@api_client)
12
- locker_release.release = @api_client.release_digestor.from_xml(locker_release_proxy.release)
13
- locker_release.locker_tracks = @api_client.locker_track_digestor.list_from_xml(locker_release_proxy.locker_tracks, :locker_tracks)
14
13
 
15
- return locker_release
14
+ locker_release.release = get_required_node(xml_node, "release") do |v|
15
+ @api_client.release_digestor.from_xml_doc(v)
16
+ end
17
+ locker_release.locker_tracks = get_required_node(xml_node, "lockerTracks") do |v|
18
+ @api_client.locker_track_digestor.list_from_xml_doc(v)
19
+ end
20
+
21
+ locker_release
16
22
  end
17
23
 
18
24
  end
@@ -3,18 +3,22 @@ module Sevendigital
3
3
  #@private
4
4
  class LockerTrackDigestor < Digestor # :nodoc:
5
5
 
6
- def default_element_name; :locker_track end
7
- def default_list_element_name; :locker_tracks end
6
+ def default_element_name; :lockerTrack end
7
+ def default_list_element_name; :lockerTracks end
8
+
9
+ def from_xml_doc(xml_node)
10
+ make_sure_eating_nokogiri_node(xml_node)
8
11
 
9
- def from_proxy(locker_track_proxy)
10
- make_sure_not_eating_nil(locker_track_proxy)
11
12
  locker_track = Sevendigital::LockerTrack.new(@api_client)
12
- locker_track.track = @api_client.track_digestor.from_xml(locker_track_proxy.track)
13
- locker_track.remaining_downloads = locker_track_proxy.remaining_downloads.value.to_i
14
- locker_track.purchase_date = DateTime.parse(locker_track_proxy.purchase_date.value.to_s)
15
- locker_track.download_urls = @api_client.download_url_digestor.list_from_xml(locker_track_proxy.download_urls)
16
13
 
17
- return locker_track
14
+ locker_track.track = get_required_node(xml_node, "track") {|v| @api_client.track_digestor.from_xml_doc(v)}
15
+ locker_track.remaining_downloads = get_required_value(xml_node, "remainingDownloads").to_i
16
+ locker_track.purchase_date = DateTime.parse(get_required_value(xml_node, "purchaseDate"))
17
+ locker_track.download_urls = get_required_node(xml_node, "downloadUrls") do |v|
18
+ @api_client.download_url_digestor.list_from_xml_doc(v)
19
+ end
20
+
21
+ locker_track
18
22
  end
19
23
 
20
24
  end
@@ -5,9 +5,13 @@ module Sevendigital
5
5
 
6
6
  def default_element_name; :oauth_access_token end
7
7
 
8
- def from_proxy(token_proxy)
9
- make_sure_not_eating_nil(token_proxy)
10
- OAuth::AccessToken.new(@api_client.oauth_consumer, token_proxy.oauth_token.value, token_proxy.oauth_token_secret.value)
8
+ def from_xml_doc(xml_node)
9
+ make_sure_eating_nokogiri_node(xml_node)
10
+ OAuth::AccessToken.new(
11
+ @api_client.oauth_consumer,
12
+ get_required_value(xml_node,"oauth_token"),
13
+ get_required_value(xml_node,"oauth_token_secret")
14
+ )
11
15
  end
12
16
 
13
17
  end
@@ -5,9 +5,13 @@ module Sevendigital
5
5
 
6
6
  def default_element_name; :oauth_request_token end
7
7
 
8
- def from_proxy(token_proxy)
9
- make_sure_not_eating_nil(token_proxy)
10
- OAuth::RequestToken.new(@api_client.oauth_consumer, token_proxy.oauth_token.value, token_proxy.oauth_token_secret.value)
8
+ def from_xml_doc(xml_node)
9
+ make_sure_eating_nokogiri_node(xml_node)
10
+ OAuth::RequestToken.new(
11
+ @api_client.oauth_consumer,
12
+ get_required_value(xml_node,"oauth_token"),
13
+ get_required_value(xml_node,"oauth_token_secret")
14
+ )
11
15
  end
12
16
 
13
17
  end
@@ -6,18 +6,22 @@ module Sevendigital
6
6
  def default_element_name; :results end
7
7
  def default_list_element_name; nil end
8
8
 
9
- def from_proxy(pager_proxy)
10
- make_sure_not_eating_nil(pager_proxy)
11
- return nil unless paging_info_available?(pager_proxy)
9
+ def from_xml_doc(xml_node)
10
+ make_sure_eating_nokogiri_node(xml_node)
11
+
12
+ return nil unless paging_info_available?(xml_node)
13
+
12
14
  pager = Pager.new
13
- pager.page = pager_proxy.page.value.to_i
14
- pager.page_size = pager_proxy.page_size.value.to_i
15
- pager.total_items = pager_proxy.total_items.value.to_i
16
- return pager
15
+
16
+ pager.page = get_required_value(xml_node,"page").to_i
17
+ pager.page_size = get_required_value(xml_node,"pageSize").to_i
18
+ pager.total_items = get_required_value(xml_node,"totalItems").to_i
19
+
20
+ pager
17
21
  end
18
22
 
19
- def paging_info_available?(pager_proxy)
20
- pager_proxy.page && pager_proxy.page_size && pager_proxy.total_items
23
+ def paging_info_available?(xml_doc)
24
+ xml_doc.at_xpath("./page") && xml_doc.at_xpath("./pageSize") && xml_doc.at_xpath("./totalItems")
21
25
  end
22
26
 
23
27
  end
@@ -7,19 +7,22 @@ module Sevendigital
7
7
  def default_element_name; :price end
8
8
  def default_list_element_name; nil end
9
9
 
10
- def from_proxy(price_proxy)
11
- make_sure_not_eating_nil(price_proxy)
12
- price = Sevendigital::Price.new()
13
- price.currency_code = price_proxy.currency.code.to_s.upcase.to_sym
14
- price.currency_symbol= price_proxy.currency.value
15
- price.value= price_proxy.value.value.to_f if !price_proxy.value.value.to_s.empty?
16
- price.formatted_price= price_proxy.formatted_price.value
17
- price.rrp= price_proxy.rrp.value.to_f if price_proxy.rrp
18
- price.formatted_rrp= price_proxy.formatted_rrp.value if price_proxy.formatted_rrp
19
- price.on_sale = price_proxy.on_sale.value.to_s.downcase == "true" if price_proxy.on_sale
20
-
21
- return price
10
+ def from_xml_doc(xml_node)
11
+ make_sure_eating_nokogiri_node(xml_node)
12
+ price = Sevendigital::Price.new()
13
+ get_required_node(xml_node, "currency") do |c|
14
+ price.currency_code = get_required_attribute(c, "code") {|v| v.upcase.to_sym}
22
15
  end
16
+ price.currency_symbol = get_required_value(xml_node, "currency")
17
+ price.value = get_required_value(xml_node,"value") {|v| v.to_d unless v.empty?}
18
+ price.formatted_price = get_required_value(xml_node,"formattedPrice")
19
+ price.rrp = get_optional_value(xml_node,"rrp") {|v| v.to_d unless v.empty?}
20
+ price.formatted_rrp = get_optional_value(xml_node,"formattedRrp")
21
+ price.on_sale = get_optional_value(xml_node,"onSale") {|v| v.downcase == "true"}
22
+
23
+ price
24
+ end
25
+
23
26
 
24
27
  end
25
28
 
@@ -8,45 +8,37 @@ module Sevendigital
8
8
  def default_element_name; :release end
9
9
  def default_list_element_name; :releases end
10
10
 
11
- def from_proxy(release_proxy)
12
- make_sure_not_eating_nil(release_proxy)
11
+ def from_xml_doc(xml_node)
12
+ make_sure_eating_nokogiri_node(xml_node)
13
+
13
14
  release = Release.new(@api_client)
14
15
 
15
- populate_required_properties(release, release_proxy)
16
- populate_optional_properties(release, release_proxy)
17
- populate_formats(release, release_proxy)
16
+ populate_required_properties(release, xml_node)
17
+ populate_optional_properties(release, xml_node)
18
+
19
+ release
20
+ end
18
21
 
19
- return release
22
+ def populate_required_properties(release, xml_node)
23
+ release.id = get_required_attribute(xml_node, "id").to_i
24
+ release.title = get_required_value(xml_node, "title")
25
+ release.artist = get_required_node(xml_node, "artist") {|v| @api_client.artist_digestor.from_xml_doc(v) }
20
26
  end
21
27
 
22
- def populate_required_properties(release, release_proxy)
23
- release.id = release_proxy.id.to_i
24
- release.title = release_proxy.title.value.to_s
25
- release.artist = @api_client.artist_digestor.from_proxy(release_proxy.artist)
26
- end
27
-
28
- def populate_optional_properties(release, release_proxy)
29
- release.version = release_proxy.version.value.to_s if release_proxy.version
30
- release.type = release_proxy.type.value.downcase.to_sym if value_present?(release_proxy.type)
31
- release.barcode = release_proxy.barcode.value.to_s if value_present?(release_proxy.barcode)
32
- release.year = release_proxy.year.value.to_i if value_present?(release_proxy.year)
33
- release.explicit_content = release_proxy.explicit_content.value.to_s.downcase == "true" if value_present?(release_proxy.explicit_content)
34
- release.release_date = DateTime.parse(release_proxy.release_date.value.to_s) if value_present?(release_proxy.release_date)
35
- release.added_date = DateTime.parse(release_proxy.added_date.value.to_s) if value_present?(release_proxy.added_date)
36
- release.label = @api_client.label_digestor.from_proxy(release_proxy.label) if content_present?(release_proxy.label)
37
- release.image = release_proxy.image.value.to_s if value_present?(release_proxy.image)
38
- release.url = release_proxy.url.value.to_s if value_present?(release_proxy.url)
39
- release.price = @api_client.price_digestor.from_proxy(release_proxy.price) if content_present?(release_proxy.price)
40
- end
41
-
42
- def populate_formats(release, release_proxy)
43
- if release_proxy.formats && release_proxy.formats.format then
44
- release.formats = Array.new
45
- release_proxy.formats.format.each do |format|
46
- release.formats << @api_client.format_digestor.from_proxy(format)
47
- end
48
- end
49
- end
28
+ def populate_optional_properties(release, xml_node)
29
+ release.version = get_optional_value(xml_node, "version")
30
+ release.type = get_optional_value(xml_node, "type") {|v| v.to_s.downcase.to_sym}
31
+ release.barcode = get_optional_value(xml_node, "barcode")
32
+ release.year = get_optional_value(xml_node, "year") {|v| v.to_i}
33
+ release.explicit_content = get_optional_value(xml_node, "explicitContent") {|v| v.to_s.downcase == "true"}
34
+ release.release_date = get_optional_value(xml_node, "releaseDate") {|v| DateTime.parse(v)}
35
+ release.added_date = get_optional_value(xml_node, "addedDate") {|v| DateTime.parse(v)}
36
+ release.label = get_optional_node(xml_node, "label") {|v| @api_client.label_digestor.from_xml_doc(v)}
37
+ release.image = get_optional_value(xml_node, "image")
38
+ release.url = get_optional_value(xml_node, "url")
39
+ release.price = get_optional_node(xml_node, "price") {|v| @api_client.price_digestor.from_xml_doc(v)}
40
+ release.formats = get_optional_node(xml_node, "formats") {|v| @api_client.format_digestor.list_from_xml_doc(v)}
41
+ end
50
42
 
51
43
  end
52
44
 
@@ -6,16 +6,17 @@ module Sevendigital
6
6
  def default_element_name; :tag end
7
7
  def default_list_element_name; :tags end
8
8
 
9
- def from_proxy(tag_proxy)
10
- make_sure_not_eating_nil(tag_proxy)
9
+ def from_xml_doc(xml_node)
10
+ make_sure_eating_nokogiri_node(xml_node)
11
11
 
12
12
  tag = Tag.new()
13
- tag.id = tag_proxy.id.to_s
14
- tag.text = tag_proxy.text.value.to_s
15
- tag.url = tag_proxy.url.value.to_s if value_present?(tag_proxy.url)
16
- tag.count = tag_proxy.count_.value.to_i if value_present?(tag_proxy.count_)
17
13
 
18
- return tag
14
+ tag.id = get_required_attribute(xml_node, "id")
15
+ tag.text = get_required_value(xml_node, "text")
16
+ tag.url = get_optional_value(xml_node, "url")
17
+ tag.count = get_optional_value(xml_node, "count") {|v| v.to_i}
18
+
19
+ tag
19
20
  end
20
21
 
21
22
  end
@@ -6,33 +6,32 @@ module Sevendigital
6
6
  def default_element_name; :track end
7
7
  def default_list_element_name; :tracks end
8
8
 
9
-
10
- def from_proxy(track_proxy)
11
- make_sure_not_eating_nil (track_proxy)
12
-
13
- track = Track.new(@api_client)
14
- populate_required_properties(track, track_proxy)
15
- populate_optional_properties(track, track_proxy)
16
-
17
- return track
18
- end
19
-
20
- def populate_required_properties(track, track_proxy)
21
- track.id = track_proxy.id.to_i
22
- track.title = track_proxy.title.value.to_s
23
- track.artist = @api_client.artist_digestor.from_proxy(track_proxy.artist)
24
- end
25
-
26
- def populate_optional_properties(track, track_proxy)
27
- track.version = track_proxy.version.value.to_s if track_proxy.version
28
- track.track_number = track_proxy.track_number.value.to_i if track_proxy.track_number
29
- track.duration = track_proxy.duration.value.to_i if track_proxy.duration
30
- track.release = @api_client.release_digestor.from_proxy(track_proxy.release) if track_proxy.release
31
- track.explicit_content = track_proxy.explicit_content.value.to_s.downcase == "true" if track_proxy.explicit_content
32
- track.isrc = track_proxy.isrc.value.to_s if track_proxy.isrc
33
- track.image = track_proxy.image.value.to_s if track_proxy.image
34
- track.url = track_proxy.url.value.to_s if track_proxy.url
35
- track.price = @api_client.price_digestor.from_proxy(track_proxy.price) if track_proxy.price
36
- end
9
+ def from_xml_doc(xml_node)
10
+ make_sure_eating_nokogiri_node(xml_node)
11
+
12
+ track = Track.new(@api_client)
13
+
14
+ populate_required_properties(track, xml_node)
15
+ populate_optional_properties(track, xml_node)
16
+
17
+ track
18
+ end
19
+
20
+ def populate_required_properties(track, xml_node)
21
+ track.id = get_required_attribute(xml_node, "id").to_i
22
+ track.title = get_required_value(xml_node, "title")
23
+ track.artist = get_required_node(xml_node, "artist") {|v| @api_client.artist_digestor.from_xml_doc(v) }
24
+ end
25
+
26
+ def populate_optional_properties(track, xml_node)
27
+ track.version = get_optional_value(xml_node, "version")
28
+ track.track_number = get_optional_value(xml_node, "trackNumber") {|v| v.to_i}
29
+ track.duration = get_optional_value(xml_node, "duration") {|v| v.to_i}
30
+ track.release = get_optional_node(xml_node, "release") {|v |@api_client.release_digestor.from_xml_doc(v)}
31
+ track.explicit_content = get_optional_value(xml_node, "explicitContent") {|v| v.downcase == "true"}
32
+ track.isrc = get_optional_value(xml_node, "isrc")
33
+ track.url = get_optional_value(xml_node, "url")
34
+ track.price = get_optional_node(xml_node, "price") {|v| @api_client.price_digestor.from_xml_doc(v)}
35
+ end
37
36
  end
38
37
  end