7digital 0.1.2 → 0.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/README.rdoc +143 -143
- data/lib/sevendigital.rb +55 -55
- data/lib/sevendigital/api_operator.rb +127 -127
- data/lib/sevendigital/api_operator_cached.rb +91 -62
- data/lib/sevendigital/api_request.rb +72 -62
- data/lib/sevendigital/client.rb +122 -122
- data/lib/sevendigital/client_configuration.rb +85 -83
- data/lib/sevendigital/client_digestors.rb +122 -122
- data/lib/sevendigital/client_managers.rb +57 -57
- data/lib/sevendigital/digestion_tract/api_response_digestor.rb +48 -48
- data/lib/sevendigital/digestion_tract/artist_digestor.rb +35 -35
- data/lib/sevendigital/digestion_tract/basket_digestor.rb +19 -19
- data/lib/sevendigital/digestion_tract/basket_item_digestor.rb +26 -26
- data/lib/sevendigital/digestion_tract/chart_item_digestor.rb +34 -34
- data/lib/sevendigital/digestion_tract/country_digestor.rb +15 -15
- data/lib/sevendigital/digestion_tract/digestor.rb +122 -122
- data/lib/sevendigital/digestion_tract/download_url_digestor.rb +23 -23
- data/lib/sevendigital/digestion_tract/format_digestor.rb +24 -24
- data/lib/sevendigital/digestion_tract/label_digestor.rb +21 -21
- data/lib/sevendigital/digestion_tract/list_digestor.rb +24 -24
- data/lib/sevendigital/digestion_tract/list_item_digestor.rb +26 -26
- data/lib/sevendigital/digestion_tract/locker_digestor.rb +22 -22
- data/lib/sevendigital/digestion_tract/locker_release_digestor.rb +26 -26
- data/lib/sevendigital/digestion_tract/locker_track_digestor.rb +26 -26
- data/lib/sevendigital/digestion_tract/oauth_access_token_digestor.rb +18 -18
- data/lib/sevendigital/digestion_tract/oauth_request_token_digestor.rb +18 -18
- data/lib/sevendigital/digestion_tract/pager_digestor.rb +28 -28
- data/lib/sevendigital/digestion_tract/price_digestor.rb +28 -28
- data/lib/sevendigital/digestion_tract/release_digestor.rb +45 -45
- data/lib/sevendigital/digestion_tract/tag_digestor.rb +23 -23
- data/lib/sevendigital/digestion_tract/track_digestor.rb +38 -37
- data/lib/sevendigital/digestion_tract/user_card_digestor.rb +24 -24
- data/lib/sevendigital/digestion_tract/user_digestor.rb +21 -21
- data/lib/sevendigital/management/artist_manager.rb +97 -97
- data/lib/sevendigital/management/basket_manager.rb +29 -29
- data/lib/sevendigital/management/country_manager.rb +10 -10
- data/lib/sevendigital/management/list_manager.rb +18 -18
- data/lib/sevendigital/management/manager.rb +12 -12
- data/lib/sevendigital/management/oauth_manager.rb +23 -23
- data/lib/sevendigital/management/release_manager.rb +54 -54
- data/lib/sevendigital/management/tag_manager.rb +10 -10
- data/lib/sevendigital/management/track_manager.rb +29 -27
- data/lib/sevendigital/management/user_card_manager.rb +26 -26
- data/lib/sevendigital/management/user_manager.rb +76 -76
- data/lib/sevendigital/model/api_response.rb +32 -32
- data/lib/sevendigital/model/artist.rb +104 -104
- data/lib/sevendigital/model/basket.rb +15 -15
- data/lib/sevendigital/model/basket_item.rb +14 -14
- data/lib/sevendigital/model/card.rb +11 -11
- data/lib/sevendigital/model/chart_item.rb +9 -9
- data/lib/sevendigital/model/download_url.rb +7 -7
- data/lib/sevendigital/model/format.rb +7 -7
- data/lib/sevendigital/model/label.rb +7 -7
- data/lib/sevendigital/model/list.rb +4 -4
- data/lib/sevendigital/model/list_item.rb +8 -8
- data/lib/sevendigital/model/locker.rb +4 -4
- data/lib/sevendigital/model/locker_release.rb +9 -9
- data/lib/sevendigital/model/locker_track.rb +9 -9
- data/lib/sevendigital/model/price.rb +9 -9
- data/lib/sevendigital/model/release.rb +57 -57
- data/lib/sevendigital/model/sevendigital_error.rb +11 -11
- data/lib/sevendigital/model/sevendigital_object.rb +57 -57
- data/lib/sevendigital/model/tag.rb +7 -7
- data/lib/sevendigital/model/track.rb +87 -83
- data/lib/sevendigital/model/user.rb +74 -74
- data/lib/sevendigital/pager.rb +20 -20
- data/lib/sevendigital/version.rb +5 -5
- data/spec/api_operator_cached_spec.rb +233 -178
- data/spec/api_operator_spec.rb +320 -320
- data/spec/api_request_spec.rb +46 -31
- data/spec/client_configuration_spec.rb +78 -78
- data/spec/client_spec.rb +161 -161
- data/spec/data/config/sevendigital.yml +5 -5
- data/spec/data/configuration_env_override.yml +5 -5
- data/spec/data/configuration_override.yml +1 -1
- data/spec/digestion_tract/api_response_digestor_spec.rb +93 -93
- data/spec/digestion_tract/artist_digestor_spec.rb +81 -81
- data/spec/digestion_tract/basket_digestor_spec.rb +31 -31
- data/spec/digestion_tract/basket_item_digestor_spec.rb +58 -58
- data/spec/digestion_tract/chart_digestor_spec.rb +52 -52
- data/spec/digestion_tract/country_digestor_spec.rb +33 -33
- data/spec/digestion_tract/digestor_spec.rb +33 -33
- data/spec/digestion_tract/download_url_digestor_spec.rb +40 -40
- data/spec/digestion_tract/format_digestor_spec.rb +38 -38
- data/spec/digestion_tract/label_digestor_spec.rb +33 -33
- data/spec/digestion_tract/list_digestor_spec.rb +31 -31
- data/spec/digestion_tract/list_item_digestor_spec.rb +80 -80
- data/spec/digestion_tract/locker_digestor_spec.rb +30 -30
- data/spec/digestion_tract/locker_release_digestor_spec.rb +70 -70
- data/spec/digestion_tract/locker_track_digestor_spec.rb +56 -56
- data/spec/digestion_tract/oauth_access_token_digestor_spec.rb +34 -34
- data/spec/digestion_tract/oauth_request_token_digestor_spec.rb +34 -34
- data/spec/digestion_tract/pager_digestor_spec.rb +50 -50
- data/spec/digestion_tract/price_digestor_spec.rb +73 -73
- data/spec/digestion_tract/release_digestor_spec.rb +115 -115
- data/spec/digestion_tract/tag_digestor_spec.rb +46 -46
- data/spec/digestion_tract/track_digestor_spec.rb +105 -104
- data/spec/digestion_tract/user_card_digestor_spec.rb +58 -58
- data/spec/digestion_tract/user_digestor_spec.rb +42 -42
- data/spec/integration/artist_spec.rb +99 -86
- data/spec/integration/country_spec.rb +18 -18
- data/spec/integration/list_spec.rb +22 -22
- data/spec/integration/purchasing_spec.rb +24 -24
- data/spec/integration/release_spec.rb +34 -34
- data/spec/integration/sevendigital_spec.yml +4 -4
- data/spec/integration/track_spec.rb +38 -23
- data/spec/integration/user_spec.rb +22 -22
- data/spec/management/artist_manager_spec.rb +172 -172
- data/spec/management/basket_manager_spec.rb +77 -77
- data/spec/management/country_manager_spec.rb +34 -34
- data/spec/management/list_manager_spec.rb +26 -26
- data/spec/management/oauth_manager_spec.rb +72 -72
- data/spec/management/release_manager_spec.rb +200 -200
- data/spec/management/tag_manager_spec.rb +34 -34
- data/spec/management/track_manager_spec.rb +111 -107
- data/spec/management/user_card_manager_spec.rb +78 -78
- data/spec/management/user_manager_spec.rb +218 -218
- data/spec/model/api_response_spec.rb +48 -48
- data/spec/model/artist_spec.rb +162 -162
- data/spec/model/basket_spec.rb +62 -62
- data/spec/model/release_spec.rb +133 -133
- data/spec/model/sevendigital_object_spec.rb +73 -73
- data/spec/model/track_spec.rb +146 -144
- data/spec/model/user_spec.rb +181 -181
- data/spec/spec_helper.rb +86 -84
- data/spec/test-xml/methods/artist/browse.xml +21 -21
- data/spec/test-xml/methods/artist/byTag/top.xml +50 -50
- data/spec/test-xml/methods/artist/chart.xml +30 -30
- data/spec/test-xml/methods/artist/details.xml +9 -9
- data/spec/test-xml/methods/artist/releases.xml +544 -544
- data/spec/test-xml/methods/artist/search.xml +18 -18
- data/spec/test-xml/methods/artist/similar.xml +39 -39
- data/spec/test-xml/methods/artist/tags.xml +11 -11
- data/spec/test-xml/methods/artist/toptracks.xml +279 -279
- data/spec/test-xml/methods/basket/additem.xml +23 -23
- data/spec/test-xml/methods/basket/create.xml +10 -10
- data/spec/test-xml/methods/basket/index.xml +23 -23
- data/spec/test-xml/methods/basket/removeitem.xml +10 -10
- data/spec/test-xml/methods/country/resolve.xml +6 -6
- data/spec/test-xml/methods/editorial/list.xml +170 -170
- data/spec/test-xml/methods/oauth/accesstoken.xml +5 -5
- data/spec/test-xml/methods/oauth/requesttoken.xml +5 -5
- data/spec/test-xml/methods/release/bydate.xml +173 -173
- data/spec/test-xml/methods/release/bytag/top.xml +150 -150
- data/spec/test-xml/methods/release/chart.xml +181 -181
- data/spec/test-xml/methods/release/details.xml +48 -48
- data/spec/test-xml/methods/release/recommend.xml +89 -89
- data/spec/test-xml/methods/release/search.xml +194 -194
- data/spec/test-xml/methods/release/tags.xml +27 -27
- data/spec/test-xml/methods/release/tracks.xml +28 -28
- data/spec/test-xml/methods/tag/index.xml +16 -16
- data/spec/test-xml/methods/track/chart.xml +149 -149
- data/spec/test-xml/methods/track/details.xml +30 -30
- data/spec/test-xml/methods/track/search.xml +159 -159
- data/spec/test-xml/methods/user/details.xml +4 -4
- data/spec/test-xml/methods/user/locker.xml +49 -49
- data/spec/test-xml/methods/user/payment/card/add.xml +7 -7
- data/spec/test-xml/methods/user/payment/card/index.xml +7 -7
- data/spec/test-xml/methods/user/purchase/basket.xml +48 -48
- data/spec/test-xml/methods/user/purchase/item.xml +48 -48
- data/spec/test-xml/methods/user/signUp.xml +5 -5
- data/spec/test-xml/objects/artist.xml +7 -7
- data/spec/test-xml/objects/artist_chart_item.xml +7 -7
- data/spec/test-xml/objects/artist_list.xml +22 -22
- data/spec/test-xml/objects/artist_list_empty.xml +4 -4
- data/spec/test-xml/objects/basket.xml +21 -21
- data/spec/test-xml/objects/basket_item.xml +11 -11
- data/spec/test-xml/objects/basket_item_list.xml +25 -25
- data/spec/test-xml/objects/basket_item_list_empty.xml +1 -1
- data/spec/test-xml/objects/download_url.xml +7 -7
- data/spec/test-xml/objects/list.xml +89 -89
- data/spec/test-xml/objects/list_item_list.xml +85 -85
- data/spec/test-xml/objects/list_item_release.xml +13 -13
- data/spec/test-xml/objects/locker.xml +47 -47
- data/spec/test-xml/objects/locker_release.xml +40 -40
- data/spec/test-xml/objects/locker_release_list.xml +87 -87
- data/spec/test-xml/objects/locker_release_list_empty.xml +4 -4
- data/spec/test-xml/objects/locker_release_one_item_list.xml +43 -43
- data/spec/test-xml/objects/locker_track.xml +25 -25
- data/spec/test-xml/objects/locker_track_list.xml +26 -26
- data/spec/test-xml/objects/locker_track_list_empty.xml +2 -2
- data/spec/test-xml/objects/nested_release_list.xml +22 -22
- data/spec/test-xml/objects/oauth_access_token.xml +3 -3
- data/spec/test-xml/objects/oauth_request_token.xml +3 -3
- data/spec/test-xml/objects/price.xml +7 -7
- data/spec/test-xml/objects/release.xml +40 -40
- data/spec/test-xml/objects/release_chart_item.xml +39 -39
- data/spec/test-xml/objects/release_list.xml +18 -18
- data/spec/test-xml/objects/release_list_empty.xml +4 -4
- data/spec/test-xml/objects/response.xml +38 -38
- data/spec/test-xml/objects/tag.xml +4 -4
- data/spec/test-xml/objects/track.xml +34 -33
- data/spec/test-xml/objects/track_chart_item.xml +27 -27
- data/spec/test-xml/objects/user.xml +4 -4
- data/spec/test-xml/objects/user_payment_card.xml +5 -5
- 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
|
-
|
36
|
-
|
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
|