7digital 0.0.7 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/README.rdoc +8 -1
- data/lib/sevendigital.rb +4 -2
- data/lib/sevendigital/api_operator.rb +92 -94
- data/lib/sevendigital/api_operator_cached.rb +55 -33
- data/lib/sevendigital/api_request.rb +50 -54
- data/lib/sevendigital/client.rb +15 -6
- data/lib/sevendigital/client_configuration.rb +0 -3
- data/lib/sevendigital/client_digestors.rb +15 -0
- data/lib/sevendigital/client_managers.rb +11 -1
- data/lib/sevendigital/digestion_tract/api_response_digestor.rb +31 -40
- data/lib/sevendigital/digestion_tract/artist_digestor.rb +16 -13
- data/lib/sevendigital/digestion_tract/basket_digestor.rb +5 -5
- data/lib/sevendigital/digestion_tract/basket_item_digestor.rb +12 -12
- data/lib/sevendigital/digestion_tract/chart_item_digestor.rb +17 -11
- data/lib/sevendigital/digestion_tract/country_digestor.rb +16 -0
- data/lib/sevendigital/digestion_tract/digestor.rb +82 -28
- data/lib/sevendigital/digestion_tract/download_url_digestor.rb +10 -7
- data/lib/sevendigital/digestion_tract/format_digestor.rb +11 -9
- data/lib/sevendigital/digestion_tract/label_digestor.rb +8 -7
- data/lib/sevendigital/digestion_tract/list_digestor.rb +24 -0
- data/lib/sevendigital/digestion_tract/list_item_digestor.rb +26 -0
- data/lib/sevendigital/digestion_tract/locker_digestor.rb +9 -5
- data/lib/sevendigital/digestion_tract/locker_release_digestor.rb +13 -7
- data/lib/sevendigital/digestion_tract/locker_track_digestor.rb +13 -9
- data/lib/sevendigital/digestion_tract/oauth_access_token_digestor.rb +7 -3
- data/lib/sevendigital/digestion_tract/oauth_request_token_digestor.rb +7 -3
- data/lib/sevendigital/digestion_tract/pager_digestor.rb +13 -9
- data/lib/sevendigital/digestion_tract/price_digestor.rb +15 -12
- data/lib/sevendigital/digestion_tract/release_digestor.rb +26 -34
- data/lib/sevendigital/digestion_tract/tag_digestor.rb +8 -7
- data/lib/sevendigital/digestion_tract/track_digestor.rb +27 -28
- data/lib/sevendigital/digestion_tract/user_card_digestor.rb +9 -8
- data/lib/sevendigital/digestion_tract/user_digestor.rb +8 -7
- data/lib/sevendigital/management/artist_manager.rb +9 -11
- data/lib/sevendigital/management/basket_manager.rb +4 -4
- data/lib/sevendigital/management/country_manager.rb +11 -0
- data/lib/sevendigital/management/list_manager.rb +18 -0
- data/lib/sevendigital/management/oauth_manager.rb +2 -2
- data/lib/sevendigital/management/release_manager.rb +9 -11
- data/lib/sevendigital/management/tag_manager.rb +1 -1
- data/lib/sevendigital/management/track_manager.rb +4 -5
- data/lib/sevendigital/management/user_card_manager.rb +2 -2
- data/lib/sevendigital/management/user_manager.rb +9 -4
- data/lib/sevendigital/model/api_response.rb +12 -4
- data/lib/sevendigital/model/artist.rb +5 -0
- data/lib/sevendigital/model/list.rb +5 -0
- data/lib/sevendigital/model/list_item.rb +9 -0
- data/lib/sevendigital/model/release.rb +2 -2
- data/lib/sevendigital/model/sevendigital_object.rb +1 -1
- data/lib/sevendigital/model/user.rb +12 -1
- data/lib/sevendigital/pager.rb +2 -6
- data/lib/sevendigital/version.rb +1 -1
- data/spec/api_operator_cached_spec.rb +14 -14
- data/spec/api_operator_spec.rb +18 -34
- data/spec/digestion_tract/api_response_digestor_spec.rb +26 -25
- data/spec/digestion_tract/artist_digestor_spec.rb +9 -9
- data/spec/digestion_tract/basket_digestor_spec.rb +2 -2
- data/spec/digestion_tract/basket_item_digestor_spec.rb +4 -4
- data/spec/digestion_tract/chart_digestor_spec.rb +4 -4
- data/spec/digestion_tract/country_digestor_spec.rb +33 -0
- data/spec/digestion_tract/digestor_spec.rb +34 -0
- data/spec/digestion_tract/download_url_digestor_spec.rb +2 -2
- data/spec/digestion_tract/format_digestor_spec.rb +2 -2
- data/spec/digestion_tract/label_digestor_spec.rb +2 -2
- data/spec/digestion_tract/list_digestor_spec.rb +32 -0
- data/spec/digestion_tract/list_item_digestor_spec.rb +80 -0
- data/spec/digestion_tract/locker_digestor_spec.rb +2 -2
- data/spec/digestion_tract/locker_release_digestor_spec.rb +5 -5
- data/spec/digestion_tract/locker_track_digestor_spec.rb +4 -4
- data/spec/digestion_tract/oauth_access_token_digestor_spec.rb +2 -2
- data/spec/digestion_tract/oauth_request_token_digestor_spec.rb +2 -2
- data/spec/digestion_tract/pager_digestor_spec.rb +3 -3
- data/spec/digestion_tract/price_digestor_spec.rb +4 -4
- data/spec/digestion_tract/release_digestor_spec.rb +19 -5
- data/spec/digestion_tract/tag_digestor_spec.rb +3 -3
- data/spec/digestion_tract/track_digestor_spec.rb +4 -4
- data/spec/digestion_tract/user_card_digestor_spec.rb +5 -5
- data/spec/digestion_tract/user_digestor_spec.rb +4 -6
- data/spec/integration/artist_spec.rb +86 -0
- data/spec/integration/country_spec.rb +18 -0
- data/spec/integration/list_spec.rb +22 -0
- data/spec/integration/purchasing_spec.rb +24 -0
- data/spec/integration/release_spec.rb +34 -0
- data/spec/integration/sevendigital_spec.yml +5 -0
- data/spec/integration/track_spec.rb +23 -0
- data/spec/integration/user_spec.rb +22 -0
- data/spec/management/artist_manager_spec.rb +32 -11
- data/spec/management/basket_manager_spec.rb +4 -4
- data/spec/management/country_manager_spec.rb +34 -0
- data/spec/management/list_manager_spec.rb +27 -0
- data/spec/management/oauth_manager_spec.rb +4 -4
- data/spec/management/release_manager_spec.rb +13 -13
- data/spec/management/tag_manager_spec.rb +1 -1
- data/spec/management/track_manager_spec.rb +4 -4
- data/spec/management/user_card_manager_spec.rb +2 -2
- data/spec/management/user_manager_spec.rb +20 -4
- data/spec/model/api_response_spec.rb +3 -3
- data/spec/model/artist_spec.rb +2 -2
- data/spec/model/sevendigital_object_spec.rb +4 -4
- data/spec/model/user_spec.rb +21 -0
- data/spec/spec_helper.rb +31 -11
- data/spec/test-xml/methods/country/resolve.xml +7 -0
- data/spec/test-xml/methods/editorial/list.xml +171 -0
- data/spec/test-xml/methods/user/details.xml +5 -0
- data/spec/test-xml/objects/artist.xml +1 -0
- data/spec/test-xml/objects/list.xml +89 -0
- data/spec/test-xml/objects/list_item_list.xml +86 -0
- data/spec/test-xml/objects/list_item_release.xml +14 -0
- data/spec/test-xml/objects/nested_release_list.xml +23 -0
- metadata +126 -273
- data/lib/sevendigital/peachy_patchy.rb +0 -9
- data/lib/sevendigital/proxy_police.rb +0 -28
- data/spec/coverage/assets/0.3.9/app.js +0 -66
- data/spec/coverage/assets/0.3.9/fancybox/blank.gif +0 -0
- data/spec/coverage/assets/0.3.9/fancybox/fancy_close.png +0 -0
- data/spec/coverage/assets/0.3.9/fancybox/fancy_loading.png +0 -0
- data/spec/coverage/assets/0.3.9/fancybox/fancy_nav_left.png +0 -0
- data/spec/coverage/assets/0.3.9/fancybox/fancy_nav_right.png +0 -0
- data/spec/coverage/assets/0.3.9/fancybox/fancy_shadow_e.png +0 -0
- data/spec/coverage/assets/0.3.9/fancybox/fancy_shadow_n.png +0 -0
- data/spec/coverage/assets/0.3.9/fancybox/fancy_shadow_ne.png +0 -0
- data/spec/coverage/assets/0.3.9/fancybox/fancy_shadow_nw.png +0 -0
- data/spec/coverage/assets/0.3.9/fancybox/fancy_shadow_s.png +0 -0
- data/spec/coverage/assets/0.3.9/fancybox/fancy_shadow_se.png +0 -0
- data/spec/coverage/assets/0.3.9/fancybox/fancy_shadow_sw.png +0 -0
- data/spec/coverage/assets/0.3.9/fancybox/fancy_shadow_w.png +0 -0
- data/spec/coverage/assets/0.3.9/fancybox/fancy_title_left.png +0 -0
- data/spec/coverage/assets/0.3.9/fancybox/fancy_title_main.png +0 -0
- data/spec/coverage/assets/0.3.9/fancybox/fancy_title_over.png +0 -0
- data/spec/coverage/assets/0.3.9/fancybox/fancy_title_right.png +0 -0
- data/spec/coverage/assets/0.3.9/fancybox/fancybox-x.png +0 -0
- data/spec/coverage/assets/0.3.9/fancybox/fancybox-y.png +0 -0
- data/spec/coverage/assets/0.3.9/fancybox/fancybox.png +0 -0
- data/spec/coverage/assets/0.3.9/fancybox/jquery.fancybox-1.3.1.css +0 -363
- data/spec/coverage/assets/0.3.9/fancybox/jquery.fancybox-1.3.1.pack.js +0 -44
- data/spec/coverage/assets/0.3.9/favicon.png +0 -0
- data/spec/coverage/assets/0.3.9/jquery-1.4.2.min.js +0 -155
- data/spec/coverage/assets/0.3.9/jquery.dataTables.min.js +0 -152
- data/spec/coverage/assets/0.3.9/jquery.timeago.js +0 -141
- data/spec/coverage/assets/0.3.9/jquery.url.js +0 -174
- data/spec/coverage/assets/0.3.9/loading.gif +0 -0
- data/spec/coverage/assets/0.3.9/magnify.png +0 -0
- data/spec/coverage/assets/0.3.9/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
- data/spec/coverage/assets/0.3.9/smoothness/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
- data/spec/coverage/assets/0.3.9/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
- data/spec/coverage/assets/0.3.9/smoothness/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
- data/spec/coverage/assets/0.3.9/smoothness/images/ui-bg_glass_75_dadada_1x400.png +0 -0
- data/spec/coverage/assets/0.3.9/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
- data/spec/coverage/assets/0.3.9/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
- data/spec/coverage/assets/0.3.9/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
- data/spec/coverage/assets/0.3.9/smoothness/images/ui-icons_222222_256x240.png +0 -0
- data/spec/coverage/assets/0.3.9/smoothness/images/ui-icons_2e83ff_256x240.png +0 -0
- data/spec/coverage/assets/0.3.9/smoothness/images/ui-icons_454545_256x240.png +0 -0
- data/spec/coverage/assets/0.3.9/smoothness/images/ui-icons_888888_256x240.png +0 -0
- data/spec/coverage/assets/0.3.9/smoothness/images/ui-icons_cd0a0a_256x240.png +0 -0
- data/spec/coverage/assets/0.3.9/smoothness/jquery-ui-1.8.4.custom.css +0 -295
- data/spec/coverage/assets/0.3.9/stylesheet.css +0 -341
- data/spec/coverage/index.html +0 -47481
- data/spec/coverage/resultset.yml +0 -3556
- data/spec/model/coverage/assets/0.3.9/app.js +0 -66
- data/spec/model/coverage/assets/0.3.9/fancybox/blank.gif +0 -0
- data/spec/model/coverage/assets/0.3.9/fancybox/fancy_close.png +0 -0
- data/spec/model/coverage/assets/0.3.9/fancybox/fancy_loading.png +0 -0
- data/spec/model/coverage/assets/0.3.9/fancybox/fancy_nav_left.png +0 -0
- data/spec/model/coverage/assets/0.3.9/fancybox/fancy_nav_right.png +0 -0
- data/spec/model/coverage/assets/0.3.9/fancybox/fancy_shadow_e.png +0 -0
- data/spec/model/coverage/assets/0.3.9/fancybox/fancy_shadow_n.png +0 -0
- data/spec/model/coverage/assets/0.3.9/fancybox/fancy_shadow_ne.png +0 -0
- data/spec/model/coverage/assets/0.3.9/fancybox/fancy_shadow_nw.png +0 -0
- data/spec/model/coverage/assets/0.3.9/fancybox/fancy_shadow_s.png +0 -0
- data/spec/model/coverage/assets/0.3.9/fancybox/fancy_shadow_se.png +0 -0
- data/spec/model/coverage/assets/0.3.9/fancybox/fancy_shadow_sw.png +0 -0
- data/spec/model/coverage/assets/0.3.9/fancybox/fancy_shadow_w.png +0 -0
- data/spec/model/coverage/assets/0.3.9/fancybox/fancy_title_left.png +0 -0
- data/spec/model/coverage/assets/0.3.9/fancybox/fancy_title_main.png +0 -0
- data/spec/model/coverage/assets/0.3.9/fancybox/fancy_title_over.png +0 -0
- data/spec/model/coverage/assets/0.3.9/fancybox/fancy_title_right.png +0 -0
- data/spec/model/coverage/assets/0.3.9/fancybox/fancybox-x.png +0 -0
- data/spec/model/coverage/assets/0.3.9/fancybox/fancybox-y.png +0 -0
- data/spec/model/coverage/assets/0.3.9/fancybox/fancybox.png +0 -0
- data/spec/model/coverage/assets/0.3.9/fancybox/jquery.fancybox-1.3.1.css +0 -363
- data/spec/model/coverage/assets/0.3.9/fancybox/jquery.fancybox-1.3.1.pack.js +0 -44
- data/spec/model/coverage/assets/0.3.9/favicon.png +0 -0
- data/spec/model/coverage/assets/0.3.9/jquery-1.4.2.min.js +0 -155
- data/spec/model/coverage/assets/0.3.9/jquery.dataTables.min.js +0 -152
- data/spec/model/coverage/assets/0.3.9/jquery.timeago.js +0 -141
- data/spec/model/coverage/assets/0.3.9/jquery.url.js +0 -174
- data/spec/model/coverage/assets/0.3.9/loading.gif +0 -0
- data/spec/model/coverage/assets/0.3.9/magnify.png +0 -0
- data/spec/model/coverage/assets/0.3.9/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
- data/spec/model/coverage/assets/0.3.9/smoothness/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
- data/spec/model/coverage/assets/0.3.9/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
- data/spec/model/coverage/assets/0.3.9/smoothness/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
- data/spec/model/coverage/assets/0.3.9/smoothness/images/ui-bg_glass_75_dadada_1x400.png +0 -0
- data/spec/model/coverage/assets/0.3.9/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
- data/spec/model/coverage/assets/0.3.9/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
- data/spec/model/coverage/assets/0.3.9/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
- data/spec/model/coverage/assets/0.3.9/smoothness/images/ui-icons_222222_256x240.png +0 -0
- data/spec/model/coverage/assets/0.3.9/smoothness/images/ui-icons_2e83ff_256x240.png +0 -0
- data/spec/model/coverage/assets/0.3.9/smoothness/images/ui-icons_454545_256x240.png +0 -0
- data/spec/model/coverage/assets/0.3.9/smoothness/images/ui-icons_888888_256x240.png +0 -0
- data/spec/model/coverage/assets/0.3.9/smoothness/images/ui-icons_cd0a0a_256x240.png +0 -0
- data/spec/model/coverage/assets/0.3.9/smoothness/jquery-ui-1.8.4.custom.css +0 -295
- data/spec/model/coverage/assets/0.3.9/stylesheet.css +0 -341
- data/spec/model/coverage/index.html +0 -8637
- data/spec/model/coverage/resultset.yml +0 -642
- data/spec/pager_spec.rb +0 -7
- data/spec/peachy_spec_helper_patch.rb +0 -7
- data/spec/proxy_police_spec.rb +0 -70
- data/spec/sevendigital_spec.rb +0 -51
- 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; :
|
7
|
-
def default_list_element_name; :
|
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
|
-
|
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
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
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
|
10
|
-
|
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
|
-
|
17
|
-
|
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
|
9
|
-
|
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
|
-
|
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; :
|
7
|
-
def default_list_element_name; :
|
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
|
-
|
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; :
|
7
|
-
def default_list_element_name; :
|
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
|
-
|
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
|
9
|
-
|
10
|
-
OAuth::AccessToken.new(
|
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
|
9
|
-
|
10
|
-
OAuth::RequestToken.new(
|
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
|
10
|
-
|
11
|
-
|
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
|
-
|
14
|
-
pager.
|
15
|
-
pager.
|
16
|
-
|
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?(
|
20
|
-
|
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
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
price.
|
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
|
12
|
-
|
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,
|
16
|
-
populate_optional_properties(release,
|
17
|
-
|
16
|
+
populate_required_properties(release, xml_node)
|
17
|
+
populate_optional_properties(release, xml_node)
|
18
|
+
|
19
|
+
release
|
20
|
+
end
|
18
21
|
|
19
|
-
|
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
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
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
|
10
|
-
|
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
|
-
|
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
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
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
|