7digital 0.1.2 → 0.1.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (197) hide show
  1. checksums.yaml +7 -0
  2. data/README.rdoc +143 -143
  3. data/lib/sevendigital.rb +55 -55
  4. data/lib/sevendigital/api_operator.rb +127 -127
  5. data/lib/sevendigital/api_operator_cached.rb +91 -62
  6. data/lib/sevendigital/api_request.rb +72 -62
  7. data/lib/sevendigital/client.rb +122 -122
  8. data/lib/sevendigital/client_configuration.rb +85 -83
  9. data/lib/sevendigital/client_digestors.rb +122 -122
  10. data/lib/sevendigital/client_managers.rb +57 -57
  11. data/lib/sevendigital/digestion_tract/api_response_digestor.rb +48 -48
  12. data/lib/sevendigital/digestion_tract/artist_digestor.rb +35 -35
  13. data/lib/sevendigital/digestion_tract/basket_digestor.rb +19 -19
  14. data/lib/sevendigital/digestion_tract/basket_item_digestor.rb +26 -26
  15. data/lib/sevendigital/digestion_tract/chart_item_digestor.rb +34 -34
  16. data/lib/sevendigital/digestion_tract/country_digestor.rb +15 -15
  17. data/lib/sevendigital/digestion_tract/digestor.rb +122 -122
  18. data/lib/sevendigital/digestion_tract/download_url_digestor.rb +23 -23
  19. data/lib/sevendigital/digestion_tract/format_digestor.rb +24 -24
  20. data/lib/sevendigital/digestion_tract/label_digestor.rb +21 -21
  21. data/lib/sevendigital/digestion_tract/list_digestor.rb +24 -24
  22. data/lib/sevendigital/digestion_tract/list_item_digestor.rb +26 -26
  23. data/lib/sevendigital/digestion_tract/locker_digestor.rb +22 -22
  24. data/lib/sevendigital/digestion_tract/locker_release_digestor.rb +26 -26
  25. data/lib/sevendigital/digestion_tract/locker_track_digestor.rb +26 -26
  26. data/lib/sevendigital/digestion_tract/oauth_access_token_digestor.rb +18 -18
  27. data/lib/sevendigital/digestion_tract/oauth_request_token_digestor.rb +18 -18
  28. data/lib/sevendigital/digestion_tract/pager_digestor.rb +28 -28
  29. data/lib/sevendigital/digestion_tract/price_digestor.rb +28 -28
  30. data/lib/sevendigital/digestion_tract/release_digestor.rb +45 -45
  31. data/lib/sevendigital/digestion_tract/tag_digestor.rb +23 -23
  32. data/lib/sevendigital/digestion_tract/track_digestor.rb +38 -37
  33. data/lib/sevendigital/digestion_tract/user_card_digestor.rb +24 -24
  34. data/lib/sevendigital/digestion_tract/user_digestor.rb +21 -21
  35. data/lib/sevendigital/management/artist_manager.rb +97 -97
  36. data/lib/sevendigital/management/basket_manager.rb +29 -29
  37. data/lib/sevendigital/management/country_manager.rb +10 -10
  38. data/lib/sevendigital/management/list_manager.rb +18 -18
  39. data/lib/sevendigital/management/manager.rb +12 -12
  40. data/lib/sevendigital/management/oauth_manager.rb +23 -23
  41. data/lib/sevendigital/management/release_manager.rb +54 -54
  42. data/lib/sevendigital/management/tag_manager.rb +10 -10
  43. data/lib/sevendigital/management/track_manager.rb +29 -27
  44. data/lib/sevendigital/management/user_card_manager.rb +26 -26
  45. data/lib/sevendigital/management/user_manager.rb +76 -76
  46. data/lib/sevendigital/model/api_response.rb +32 -32
  47. data/lib/sevendigital/model/artist.rb +104 -104
  48. data/lib/sevendigital/model/basket.rb +15 -15
  49. data/lib/sevendigital/model/basket_item.rb +14 -14
  50. data/lib/sevendigital/model/card.rb +11 -11
  51. data/lib/sevendigital/model/chart_item.rb +9 -9
  52. data/lib/sevendigital/model/download_url.rb +7 -7
  53. data/lib/sevendigital/model/format.rb +7 -7
  54. data/lib/sevendigital/model/label.rb +7 -7
  55. data/lib/sevendigital/model/list.rb +4 -4
  56. data/lib/sevendigital/model/list_item.rb +8 -8
  57. data/lib/sevendigital/model/locker.rb +4 -4
  58. data/lib/sevendigital/model/locker_release.rb +9 -9
  59. data/lib/sevendigital/model/locker_track.rb +9 -9
  60. data/lib/sevendigital/model/price.rb +9 -9
  61. data/lib/sevendigital/model/release.rb +57 -57
  62. data/lib/sevendigital/model/sevendigital_error.rb +11 -11
  63. data/lib/sevendigital/model/sevendigital_object.rb +57 -57
  64. data/lib/sevendigital/model/tag.rb +7 -7
  65. data/lib/sevendigital/model/track.rb +87 -83
  66. data/lib/sevendigital/model/user.rb +74 -74
  67. data/lib/sevendigital/pager.rb +20 -20
  68. data/lib/sevendigital/version.rb +5 -5
  69. data/spec/api_operator_cached_spec.rb +233 -178
  70. data/spec/api_operator_spec.rb +320 -320
  71. data/spec/api_request_spec.rb +46 -31
  72. data/spec/client_configuration_spec.rb +78 -78
  73. data/spec/client_spec.rb +161 -161
  74. data/spec/data/config/sevendigital.yml +5 -5
  75. data/spec/data/configuration_env_override.yml +5 -5
  76. data/spec/data/configuration_override.yml +1 -1
  77. data/spec/digestion_tract/api_response_digestor_spec.rb +93 -93
  78. data/spec/digestion_tract/artist_digestor_spec.rb +81 -81
  79. data/spec/digestion_tract/basket_digestor_spec.rb +31 -31
  80. data/spec/digestion_tract/basket_item_digestor_spec.rb +58 -58
  81. data/spec/digestion_tract/chart_digestor_spec.rb +52 -52
  82. data/spec/digestion_tract/country_digestor_spec.rb +33 -33
  83. data/spec/digestion_tract/digestor_spec.rb +33 -33
  84. data/spec/digestion_tract/download_url_digestor_spec.rb +40 -40
  85. data/spec/digestion_tract/format_digestor_spec.rb +38 -38
  86. data/spec/digestion_tract/label_digestor_spec.rb +33 -33
  87. data/spec/digestion_tract/list_digestor_spec.rb +31 -31
  88. data/spec/digestion_tract/list_item_digestor_spec.rb +80 -80
  89. data/spec/digestion_tract/locker_digestor_spec.rb +30 -30
  90. data/spec/digestion_tract/locker_release_digestor_spec.rb +70 -70
  91. data/spec/digestion_tract/locker_track_digestor_spec.rb +56 -56
  92. data/spec/digestion_tract/oauth_access_token_digestor_spec.rb +34 -34
  93. data/spec/digestion_tract/oauth_request_token_digestor_spec.rb +34 -34
  94. data/spec/digestion_tract/pager_digestor_spec.rb +50 -50
  95. data/spec/digestion_tract/price_digestor_spec.rb +73 -73
  96. data/spec/digestion_tract/release_digestor_spec.rb +115 -115
  97. data/spec/digestion_tract/tag_digestor_spec.rb +46 -46
  98. data/spec/digestion_tract/track_digestor_spec.rb +105 -104
  99. data/spec/digestion_tract/user_card_digestor_spec.rb +58 -58
  100. data/spec/digestion_tract/user_digestor_spec.rb +42 -42
  101. data/spec/integration/artist_spec.rb +99 -86
  102. data/spec/integration/country_spec.rb +18 -18
  103. data/spec/integration/list_spec.rb +22 -22
  104. data/spec/integration/purchasing_spec.rb +24 -24
  105. data/spec/integration/release_spec.rb +34 -34
  106. data/spec/integration/sevendigital_spec.yml +4 -4
  107. data/spec/integration/track_spec.rb +38 -23
  108. data/spec/integration/user_spec.rb +22 -22
  109. data/spec/management/artist_manager_spec.rb +172 -172
  110. data/spec/management/basket_manager_spec.rb +77 -77
  111. data/spec/management/country_manager_spec.rb +34 -34
  112. data/spec/management/list_manager_spec.rb +26 -26
  113. data/spec/management/oauth_manager_spec.rb +72 -72
  114. data/spec/management/release_manager_spec.rb +200 -200
  115. data/spec/management/tag_manager_spec.rb +34 -34
  116. data/spec/management/track_manager_spec.rb +111 -107
  117. data/spec/management/user_card_manager_spec.rb +78 -78
  118. data/spec/management/user_manager_spec.rb +218 -218
  119. data/spec/model/api_response_spec.rb +48 -48
  120. data/spec/model/artist_spec.rb +162 -162
  121. data/spec/model/basket_spec.rb +62 -62
  122. data/spec/model/release_spec.rb +133 -133
  123. data/spec/model/sevendigital_object_spec.rb +73 -73
  124. data/spec/model/track_spec.rb +146 -144
  125. data/spec/model/user_spec.rb +181 -181
  126. data/spec/spec_helper.rb +86 -84
  127. data/spec/test-xml/methods/artist/browse.xml +21 -21
  128. data/spec/test-xml/methods/artist/byTag/top.xml +50 -50
  129. data/spec/test-xml/methods/artist/chart.xml +30 -30
  130. data/spec/test-xml/methods/artist/details.xml +9 -9
  131. data/spec/test-xml/methods/artist/releases.xml +544 -544
  132. data/spec/test-xml/methods/artist/search.xml +18 -18
  133. data/spec/test-xml/methods/artist/similar.xml +39 -39
  134. data/spec/test-xml/methods/artist/tags.xml +11 -11
  135. data/spec/test-xml/methods/artist/toptracks.xml +279 -279
  136. data/spec/test-xml/methods/basket/additem.xml +23 -23
  137. data/spec/test-xml/methods/basket/create.xml +10 -10
  138. data/spec/test-xml/methods/basket/index.xml +23 -23
  139. data/spec/test-xml/methods/basket/removeitem.xml +10 -10
  140. data/spec/test-xml/methods/country/resolve.xml +6 -6
  141. data/spec/test-xml/methods/editorial/list.xml +170 -170
  142. data/spec/test-xml/methods/oauth/accesstoken.xml +5 -5
  143. data/spec/test-xml/methods/oauth/requesttoken.xml +5 -5
  144. data/spec/test-xml/methods/release/bydate.xml +173 -173
  145. data/spec/test-xml/methods/release/bytag/top.xml +150 -150
  146. data/spec/test-xml/methods/release/chart.xml +181 -181
  147. data/spec/test-xml/methods/release/details.xml +48 -48
  148. data/spec/test-xml/methods/release/recommend.xml +89 -89
  149. data/spec/test-xml/methods/release/search.xml +194 -194
  150. data/spec/test-xml/methods/release/tags.xml +27 -27
  151. data/spec/test-xml/methods/release/tracks.xml +28 -28
  152. data/spec/test-xml/methods/tag/index.xml +16 -16
  153. data/spec/test-xml/methods/track/chart.xml +149 -149
  154. data/spec/test-xml/methods/track/details.xml +30 -30
  155. data/spec/test-xml/methods/track/search.xml +159 -159
  156. data/spec/test-xml/methods/user/details.xml +4 -4
  157. data/spec/test-xml/methods/user/locker.xml +49 -49
  158. data/spec/test-xml/methods/user/payment/card/add.xml +7 -7
  159. data/spec/test-xml/methods/user/payment/card/index.xml +7 -7
  160. data/spec/test-xml/methods/user/purchase/basket.xml +48 -48
  161. data/spec/test-xml/methods/user/purchase/item.xml +48 -48
  162. data/spec/test-xml/methods/user/signUp.xml +5 -5
  163. data/spec/test-xml/objects/artist.xml +7 -7
  164. data/spec/test-xml/objects/artist_chart_item.xml +7 -7
  165. data/spec/test-xml/objects/artist_list.xml +22 -22
  166. data/spec/test-xml/objects/artist_list_empty.xml +4 -4
  167. data/spec/test-xml/objects/basket.xml +21 -21
  168. data/spec/test-xml/objects/basket_item.xml +11 -11
  169. data/spec/test-xml/objects/basket_item_list.xml +25 -25
  170. data/spec/test-xml/objects/basket_item_list_empty.xml +1 -1
  171. data/spec/test-xml/objects/download_url.xml +7 -7
  172. data/spec/test-xml/objects/list.xml +89 -89
  173. data/spec/test-xml/objects/list_item_list.xml +85 -85
  174. data/spec/test-xml/objects/list_item_release.xml +13 -13
  175. data/spec/test-xml/objects/locker.xml +47 -47
  176. data/spec/test-xml/objects/locker_release.xml +40 -40
  177. data/spec/test-xml/objects/locker_release_list.xml +87 -87
  178. data/spec/test-xml/objects/locker_release_list_empty.xml +4 -4
  179. data/spec/test-xml/objects/locker_release_one_item_list.xml +43 -43
  180. data/spec/test-xml/objects/locker_track.xml +25 -25
  181. data/spec/test-xml/objects/locker_track_list.xml +26 -26
  182. data/spec/test-xml/objects/locker_track_list_empty.xml +2 -2
  183. data/spec/test-xml/objects/nested_release_list.xml +22 -22
  184. data/spec/test-xml/objects/oauth_access_token.xml +3 -3
  185. data/spec/test-xml/objects/oauth_request_token.xml +3 -3
  186. data/spec/test-xml/objects/price.xml +7 -7
  187. data/spec/test-xml/objects/release.xml +40 -40
  188. data/spec/test-xml/objects/release_chart_item.xml +39 -39
  189. data/spec/test-xml/objects/release_list.xml +18 -18
  190. data/spec/test-xml/objects/release_list_empty.xml +4 -4
  191. data/spec/test-xml/objects/response.xml +38 -38
  192. data/spec/test-xml/objects/tag.xml +4 -4
  193. data/spec/test-xml/objects/track.xml +34 -33
  194. data/spec/test-xml/objects/track_chart_item.xml +27 -27
  195. data/spec/test-xml/objects/user.xml +4 -4
  196. data/spec/test-xml/objects/user_payment_card.xml +5 -5
  197. metadata +15 -25
@@ -1,28 +1,28 @@
1
- module Sevendigital
2
-
3
- #@private
4
- class PagerDigestor < Digestor # :nodoc:
5
-
6
- def default_element_name; :results end
7
- def default_list_element_name; nil end
8
-
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
-
14
- pager = Pager.new
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
21
- end
22
-
23
- def paging_info_available?(xml_doc)
24
- xml_doc.at_xpath("./page") && xml_doc.at_xpath("./pageSize") && xml_doc.at_xpath("./totalItems")
25
- end
26
-
27
- end
28
- end
1
+ module Sevendigital
2
+
3
+ #@private
4
+ class PagerDigestor < Digestor # :nodoc:
5
+
6
+ def default_element_name; :results end
7
+ def default_list_element_name; nil end
8
+
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
+
14
+ pager = Pager.new
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
21
+ end
22
+
23
+ def paging_info_available?(xml_doc)
24
+ xml_doc.at_xpath("./page") && xml_doc.at_xpath("./pageSize") && xml_doc.at_xpath("./totalItems")
25
+ end
26
+
27
+ end
28
+ end
@@ -1,29 +1,29 @@
1
- require 'rational'
2
- module Sevendigital
3
-
4
- #@private
5
- class PriceDigestor < Digestor # :nodoc:
6
-
7
- def default_element_name; :price end
8
- def default_list_element_name; nil end
9
-
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}
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
-
26
-
27
- end
28
-
1
+ require 'rational'
2
+ module Sevendigital
3
+
4
+ #@private
5
+ class PriceDigestor < Digestor # :nodoc:
6
+
7
+ def default_element_name; :price end
8
+ def default_list_element_name; nil end
9
+
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}
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
+
26
+
27
+ end
28
+
29
29
  end
@@ -1,45 +1,45 @@
1
- module Sevendigital
2
-
3
- require 'date'
4
-
5
- #@private
6
- class ReleaseDigestor < Digestor # :nodoc:
7
-
8
- def default_element_name; :release end
9
- def default_list_element_name; :releases end
10
-
11
- def from_xml_doc(xml_node)
12
- make_sure_eating_nokogiri_node(xml_node)
13
-
14
- release = Release.new(@api_client)
15
-
16
- populate_required_properties(release, xml_node)
17
- populate_optional_properties(release, xml_node)
18
-
19
- release
20
- end
21
-
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) }
26
- end
27
-
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
42
-
43
- end
44
-
45
- end
1
+ module Sevendigital
2
+
3
+ require 'date'
4
+
5
+ #@private
6
+ class ReleaseDigestor < Digestor # :nodoc:
7
+
8
+ def default_element_name; :release end
9
+ def default_list_element_name; :releases end
10
+
11
+ def from_xml_doc(xml_node)
12
+ make_sure_eating_nokogiri_node(xml_node)
13
+
14
+ release = Release.new(@api_client)
15
+
16
+ populate_required_properties(release, xml_node)
17
+ populate_optional_properties(release, xml_node)
18
+
19
+ release
20
+ end
21
+
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) }
26
+ end
27
+
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
42
+
43
+ end
44
+
45
+ end
@@ -1,24 +1,24 @@
1
- module Sevendigital
2
-
3
- #@private
4
- class TagDigestor < Digestor # :nodoc:
5
-
6
- def default_element_name; :tag end
7
- def default_list_element_name; :tags end
8
-
9
- def from_xml_doc(xml_node)
10
- make_sure_eating_nokogiri_node(xml_node)
11
-
12
- tag = Tag.new()
13
-
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
20
- end
21
-
22
- end
23
-
1
+ module Sevendigital
2
+
3
+ #@private
4
+ class TagDigestor < Digestor # :nodoc:
5
+
6
+ def default_element_name; :tag end
7
+ def default_list_element_name; :tags end
8
+
9
+ def from_xml_doc(xml_node)
10
+ make_sure_eating_nokogiri_node(xml_node)
11
+
12
+ tag = Tag.new()
13
+
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
20
+ end
21
+
22
+ end
23
+
24
24
  end
@@ -1,37 +1,38 @@
1
- module Sevendigital
2
-
3
- #@private
4
- class TrackDigestor < Digestor # :nodoc:
5
-
6
- def default_element_name; :track end
7
- def default_list_element_name; :tracks end
8
-
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
36
- end
37
- end
1
+ module Sevendigital
2
+
3
+ #@private
4
+ class TrackDigestor < Digestor # :nodoc:
5
+
6
+ def default_element_name; :track end
7
+ def default_list_element_name; :tracks end
8
+
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
+ track.type = get_optional_value(xml_node, "type") {|v| v.to_s.downcase.to_sym}
36
+ end
37
+ end
38
+ end
@@ -1,25 +1,25 @@
1
- module Sevendigital
2
-
3
- #@private
4
- class UserCardDigestor < Digestor # :nodoc:
5
-
6
- def default_element_name; :card end
7
- def default_list_element_name; :cards end
8
-
9
- def from_xml_doc(xml_node)
10
- make_sure_eating_nokogiri_node(xml_node)
11
-
12
- card = Sevendigital::Card.new(@api_client)
13
-
14
- card.id = get_optional_attribute(xml_node,"id").to_i
15
- card.type = get_required_value(xml_node, "type")
16
- card.last_4_digits = get_required_value(xml_node, "last4digits")
17
- card.card_holder_name = get_optional_value(xml_node, "cardHolderName")
18
- card.expiry_date = get_optional_value(xml_node, "expiryDate")
19
-
20
- card
21
- end
22
-
23
- end
24
-
1
+ module Sevendigital
2
+
3
+ #@private
4
+ class UserCardDigestor < Digestor # :nodoc:
5
+
6
+ def default_element_name; :card end
7
+ def default_list_element_name; :cards end
8
+
9
+ def from_xml_doc(xml_node)
10
+ make_sure_eating_nokogiri_node(xml_node)
11
+
12
+ card = Sevendigital::Card.new(@api_client)
13
+
14
+ card.id = get_optional_attribute(xml_node,"id").to_i
15
+ card.type = get_required_value(xml_node, "type")
16
+ card.last_4_digits = get_required_value(xml_node, "last4digits")
17
+ card.card_holder_name = get_optional_value(xml_node, "cardHolderName")
18
+ card.expiry_date = get_optional_value(xml_node, "expiryDate")
19
+
20
+ card
21
+ end
22
+
23
+ end
24
+
25
25
  end
@@ -1,22 +1,22 @@
1
- module Sevendigital
2
-
3
- #@private
4
- class UserDigestor < Digestor # :nodoc:
5
-
6
- def default_element_name; :user end
7
-
8
- def from_xml_doc(xml_node)
9
- make_sure_eating_nokogiri_node(xml_node)
10
-
11
- user = User.new(@api_client)
12
-
13
- user.id = get_optional_attribute(xml_node, "id")
14
- user.type = get_optional_value(xml_node, "type") {|v| v.to_sym}
15
- user.email_address = get_optional_value(xml_node, "emailAddress")
16
-
17
- user
18
- end
19
-
20
- end
21
-
1
+ module Sevendigital
2
+
3
+ #@private
4
+ class UserDigestor < Digestor # :nodoc:
5
+
6
+ def default_element_name; :user end
7
+
8
+ def from_xml_doc(xml_node)
9
+ make_sure_eating_nokogiri_node(xml_node)
10
+
11
+ user = User.new(@api_client)
12
+
13
+ user.id = get_optional_attribute(xml_node, "id")
14
+ user.type = get_optional_value(xml_node, "type") {|v| v.to_sym}
15
+ user.email_address = get_optional_value(xml_node, "emailAddress")
16
+
17
+ user
18
+ end
19
+
20
+ end
21
+
22
22
  end
@@ -1,97 +1,97 @@
1
- module Sevendigital
2
-
3
- # provides access to Artist related API methods (artist/*)
4
- class ArtistManager < Manager
5
-
6
- # calls *artist/details* API method and returns Artist with populated details
7
- #
8
- # @param [Integer] artist_id
9
- # @param [Hash] options optional hash of additional API parameters, e.g. page_size => 50, etc
10
- # @return [Artist]
11
- def get_details(artist_id, options={})
12
- api_response = @api_client.make_api_request(:GET, "artist/details", {:artistId => artist_id}, options)
13
- @api_client.artist_digestor.from_xml_doc(api_response.item_xml("artist"))
14
- end
15
-
16
- # calls *artist/releases* API method and returns Release array
17
- #
18
- # @param [Integer] artist_id
19
- # @param [Hash] options optional hash of additional API parameters, e.g. page_size => 50, etc
20
- # @return [[Artist]]
21
- def get_releases(artist_id, options={})
22
- api_response = @api_client.make_api_request(:GET, "artist/releases", {:artistId => artist_id}, options)
23
- @api_client.release_digestor.list_from_xml_doc(api_response.item_xml("releases"))
24
- end
25
-
26
- # calls *artist/toptracks* API method and returns Track array
27
- #
28
- # @param [Integer] artist_id
29
- # @param [Hash] options optional hash of additional API parameters, e.g. page_size => 50, etc
30
- # @return [Array<Track>]
31
- def get_top_tracks(artist_id, options={})
32
- api_response = @api_client.make_api_request(:GET, "artist/topTracks", {:artistId => artist_id}, options)
33
- @api_client.track_digestor.list_from_xml_doc(api_response.item_xml("tracks"))
34
- end
35
-
36
- # calls *artist/similar* API method and returns Artist array
37
- #
38
- # @param [Integer] artist_id
39
- # @param [Hash] options optional hash of additional API parameters, e.g. page_size => 50, etc
40
- # @return [Array<Artist>]
41
- def get_similar(artist_id, options={})
42
- api_response = @api_client.make_api_request(:GET, "artist/similar", {:artistId => artist_id}, options)
43
- @api_client.artist_digestor.list_from_xml_doc(api_response.item_xml("artists"))
44
- end
45
-
46
- # calls *artist/byTag/top* API method and returns Artist array
47
- #
48
- # @param [String] tags tag or comma separated list of tags
49
- # @param [Hash] options optional hash of additional API parameters, e.g. page_size => 50, etc
50
- # @return [Array<Artist>]
51
- def get_top_by_tag(tags, options={})
52
- api_response = @api_client.make_api_request(:GET, "artist/byTag/top", {:tags => tags}, options)
53
- @api_client.artist_digestor.nested_list_from_xml_doc(api_response.item_xml("taggedResults"), :taggedItem, :artist)
54
- end
55
-
56
- # calls *artist/search* API method and returns Artist array
57
- #
58
- # @param [String] query search query
59
- # @param [Hash] options optional hash of additional API parameters, e.g. page_size => 50, etc
60
- # @return [Array<Artist>]
61
- def search(query, options={})
62
- api_response = @api_client.make_api_request(:GET, "artist/search", {:q => query}, options)
63
- @api_client.artist_digestor.nested_list_from_xml_doc(api_response.item_xml("searchResults"), :searchResult, :artist)
64
- end
65
-
66
- # calls *artist/browse* API method and returns Artist array
67
- #
68
- # @param [String] letter the letter(s) returned artist names should artists
69
- # @param [Hash] options optional hash of additional API parameters, e.g. page_size => 50, etc
70
- # @return [Array<Artist>]
71
- def browse(letter, options={})
72
- api_response = @api_client.make_api_request(:GET, "artist/browse", {:letter => letter}, options)
73
- @api_client.artist_digestor.list_from_xml_doc(api_response.item_xml("artists"))
74
- end
75
-
76
- # calls *artist/chart* API method and returns Artist array
77
- #
78
- # @param [Hash] options optional hash of additional API parameters, e.g. page_size => 50, etc
79
- def get_chart(options={})
80
- api_response = @api_client.make_api_request(:GET, "artist/chart", {}, options)
81
- @api_client.chart_item_digestor.list_from_xml_doc(api_response.item_xml("chart"))
82
- end
83
-
84
- # calls *artist/tags* API method and returns Tag array
85
- #
86
- # @param [Integer] artist_id
87
- # @param [Hash] options optional hash of additional API parameters, e.g. page_size => 50, etc
88
- # @return [Array<Tag>]
89
- def get_tags(artist_id, options={})
90
- api_response = @api_client.make_api_request(:GET, "artist/tags", {:artistId => artist_id}, options)
91
- @api_client.tag_digestor.list_from_xml_doc(api_response.item_xml("tags"))
92
- end
93
-
94
-
95
- end
96
-
97
- end
1
+ module Sevendigital
2
+
3
+ # provides access to Artist related API methods (artist/*)
4
+ class ArtistManager < Manager
5
+
6
+ # calls *artist/details* API method and returns Artist with populated details
7
+ #
8
+ # @param [Integer] artist_id
9
+ # @param [Hash] options optional hash of additional API parameters, e.g. page_size => 50, etc
10
+ # @return [Artist]
11
+ def get_details(artist_id, options={})
12
+ api_response = @api_client.make_api_request(:GET, "artist/details", {:artistId => artist_id}, options)
13
+ @api_client.artist_digestor.from_xml_doc(api_response.item_xml("artist"))
14
+ end
15
+
16
+ # calls *artist/releases* API method and returns Release array
17
+ #
18
+ # @param [Integer] artist_id
19
+ # @param [Hash] options optional hash of additional API parameters, e.g. page_size => 50, etc
20
+ # @return [[Artist]]
21
+ def get_releases(artist_id, options={})
22
+ api_response = @api_client.make_api_request(:GET, "artist/releases", {:artistId => artist_id}, options)
23
+ @api_client.release_digestor.list_from_xml_doc(api_response.item_xml("releases"))
24
+ end
25
+
26
+ # calls *artist/toptracks* API method and returns Track array
27
+ #
28
+ # @param [Integer] artist_id
29
+ # @param [Hash] options optional hash of additional API parameters, e.g. page_size => 50, etc
30
+ # @return [Array<Track>]
31
+ def get_top_tracks(artist_id, options={})
32
+ api_response = @api_client.make_api_request(:GET, "artist/topTracks", {:artistId => artist_id}, options)
33
+ @api_client.track_digestor.list_from_xml_doc(api_response.item_xml("tracks"))
34
+ end
35
+
36
+ # calls *artist/similar* API method and returns Artist array
37
+ #
38
+ # @param [Integer] artist_id
39
+ # @param [Hash] options optional hash of additional API parameters, e.g. page_size => 50, etc
40
+ # @return [Array<Artist>]
41
+ def get_similar(artist_id, options={})
42
+ api_response = @api_client.make_api_request(:GET, "artist/similar", {:artistId => artist_id}, options)
43
+ @api_client.artist_digestor.list_from_xml_doc(api_response.item_xml("artists"))
44
+ end
45
+
46
+ # calls *artist/byTag/top* API method and returns Artist array
47
+ #
48
+ # @param [String] tags tag or comma separated list of tags
49
+ # @param [Hash] options optional hash of additional API parameters, e.g. page_size => 50, etc
50
+ # @return [Array<Artist>]
51
+ def get_top_by_tag(tags, options={})
52
+ api_response = @api_client.make_api_request(:GET, "artist/byTag/top", {:tags => tags}, options)
53
+ @api_client.artist_digestor.nested_list_from_xml_doc(api_response.item_xml("taggedResults"), :taggedItem, :artist)
54
+ end
55
+
56
+ # calls *artist/search* API method and returns Artist array
57
+ #
58
+ # @param [String] query search query
59
+ # @param [Hash] options optional hash of additional API parameters, e.g. page_size => 50, etc
60
+ # @return [Array<Artist>]
61
+ def search(query, options={})
62
+ api_response = @api_client.make_api_request(:GET, "artist/search", {:q => query}, options)
63
+ @api_client.artist_digestor.nested_list_from_xml_doc(api_response.item_xml("searchResults"), :searchResult, :artist)
64
+ end
65
+
66
+ # calls *artist/browse* API method and returns Artist array
67
+ #
68
+ # @param [String] letter the letter(s) returned artist names should artists
69
+ # @param [Hash] options optional hash of additional API parameters, e.g. page_size => 50, etc
70
+ # @return [Array<Artist>]
71
+ def browse(letter, options={})
72
+ api_response = @api_client.make_api_request(:GET, "artist/browse", {:letter => letter}, options)
73
+ @api_client.artist_digestor.list_from_xml_doc(api_response.item_xml("artists"))
74
+ end
75
+
76
+ # calls *artist/chart* API method and returns Artist array
77
+ #
78
+ # @param [Hash] options optional hash of additional API parameters, e.g. page_size => 50, etc
79
+ def get_chart(options={})
80
+ api_response = @api_client.make_api_request(:GET, "artist/chart", {}, options)
81
+ @api_client.chart_item_digestor.list_from_xml_doc(api_response.item_xml("chart"))
82
+ end
83
+
84
+ # calls *artist/tags* API method and returns Tag array
85
+ #
86
+ # @param [Integer] artist_id
87
+ # @param [Hash] options optional hash of additional API parameters, e.g. page_size => 50, etc
88
+ # @return [Array<Tag>]
89
+ def get_tags(artist_id, options={})
90
+ api_response = @api_client.make_api_request(:GET, "artist/tags", {:artistId => artist_id}, options)
91
+ @api_client.tag_digestor.list_from_xml_doc(api_response.item_xml("tags"))
92
+ end
93
+
94
+
95
+ end
96
+
97
+ end