7digital 0.0.6 → 0.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.rdoc +136 -136
- data/lib/sevendigital.rb +53 -53
- data/lib/sevendigital/api_operator.rb +130 -130
- data/lib/sevendigital/api_operator_cached.rb +41 -41
- data/lib/sevendigital/api_request.rb +65 -65
- data/lib/sevendigital/client.rb +113 -113
- data/lib/sevendigital/client_configuration.rb +86 -86
- data/lib/sevendigital/client_digestors.rb +107 -107
- data/lib/sevendigital/client_managers.rb +47 -47
- data/lib/sevendigital/digestion_tract/api_response_digestor.rb +58 -58
- data/lib/sevendigital/digestion_tract/artist_digestor.rb +32 -32
- 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 +28 -28
- data/lib/sevendigital/digestion_tract/digestor.rb +71 -71
- data/lib/sevendigital/digestion_tract/download_url_digestor.rb +20 -20
- data/lib/sevendigital/digestion_tract/format_digestor.rb +22 -22
- data/lib/sevendigital/digestion_tract/label_digestor.rb +20 -20
- data/lib/sevendigital/digestion_tract/locker_digestor.rb +18 -18
- data/lib/sevendigital/digestion_tract/locker_release_digestor.rb +20 -20
- data/lib/sevendigital/digestion_tract/locker_track_digestor.rb +22 -22
- data/lib/sevendigital/digestion_tract/oauth_access_token_digestor.rb +14 -14
- data/lib/sevendigital/digestion_tract/oauth_request_token_digestor.rb +14 -14
- data/lib/sevendigital/digestion_tract/pager_digestor.rb +24 -24
- data/lib/sevendigital/digestion_tract/price_digestor.rb +25 -25
- data/lib/sevendigital/digestion_tract/release_digestor.rb +53 -53
- data/lib/sevendigital/digestion_tract/tag_digestor.rb +22 -22
- data/lib/sevendigital/digestion_tract/track_digestor.rb +38 -38
- data/lib/sevendigital/digestion_tract/user_card_digestor.rb +23 -23
- data/lib/sevendigital/digestion_tract/user_digestor.rb +20 -20
- data/lib/sevendigital/management/artist_manager.rb +99 -99
- data/lib/sevendigital/management/basket_manager.rb +29 -29
- data/lib/sevendigital/management/manager.rb +12 -12
- data/lib/sevendigital/management/oauth_manager.rb +23 -23
- data/lib/sevendigital/management/release_manager.rb +56 -56
- data/lib/sevendigital/management/tag_manager.rb +10 -10
- data/lib/sevendigital/management/track_manager.rb +28 -28
- data/lib/sevendigital/management/user_card_manager.rb +26 -26
- data/lib/sevendigital/management/user_manager.rb +71 -71
- data/lib/sevendigital/model/api_response.rb +25 -25
- data/lib/sevendigital/model/artist.rb +94 -94
- 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/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 +52 -52
- 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 +83 -83
- data/lib/sevendigital/model/user.rb +63 -63
- data/lib/sevendigital/pager.rb +23 -23
- data/lib/sevendigital/peachy_patchy.rb +9 -9
- data/lib/sevendigital/proxy_police.rb +27 -27
- data/lib/sevendigital/version.rb +5 -5
- data/spec/api_operator_cached_spec.rb +178 -178
- data/spec/api_operator_spec.rb +336 -336
- data/spec/api_request_spec.rb +31 -31
- data/spec/client_configuration_spec.rb +79 -74
- data/spec/client_spec.rb +162 -162
- data/spec/coverage/assets/0.3.9/app.js +66 -0
- 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 +363 -0
- data/spec/coverage/assets/0.3.9/fancybox/jquery.fancybox-1.3.1.pack.js +44 -0
- data/spec/coverage/assets/0.3.9/favicon.png +0 -0
- data/spec/coverage/assets/0.3.9/jquery-1.4.2.min.js +155 -0
- data/spec/coverage/assets/0.3.9/jquery.dataTables.min.js +152 -0
- data/spec/coverage/assets/0.3.9/jquery.timeago.js +141 -0
- data/spec/coverage/assets/0.3.9/jquery.url.js +174 -0
- 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 +295 -0
- data/spec/coverage/assets/0.3.9/stylesheet.css +341 -0
- data/spec/coverage/index.html +47481 -0
- data/spec/coverage/resultset.yml +3556 -0
- 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 +92 -92
- 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/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/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 +101 -101
- data/spec/digestion_tract/tag_digestor_spec.rb +46 -46
- data/spec/digestion_tract/track_digestor_spec.rb +104 -104
- data/spec/digestion_tract/user_card_digestor_spec.rb +58 -58
- data/spec/digestion_tract/user_digestor_spec.rb +44 -44
- data/spec/management/artist_manager_spec.rb +151 -151
- data/spec/management/basket_manager_spec.rb +77 -77
- 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 +107 -107
- data/spec/management/user_card_manager_spec.rb +78 -78
- data/spec/management/user_manager_spec.rb +202 -202
- data/spec/model/api_response_spec.rb +48 -48
- data/spec/model/artist_spec.rb +154 -154
- data/spec/model/basket_spec.rb +62 -62
- data/spec/model/coverage/assets/0.3.9/app.js +66 -0
- 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 +363 -0
- data/spec/model/coverage/assets/0.3.9/fancybox/jquery.fancybox-1.3.1.pack.js +44 -0
- 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 +155 -0
- data/spec/model/coverage/assets/0.3.9/jquery.dataTables.min.js +152 -0
- data/spec/model/coverage/assets/0.3.9/jquery.timeago.js +141 -0
- data/spec/model/coverage/assets/0.3.9/jquery.url.js +174 -0
- 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 +295 -0
- data/spec/model/coverage/assets/0.3.9/stylesheet.css +341 -0
- data/spec/model/coverage/index.html +8637 -0
- data/spec/model/coverage/resultset.yml +642 -0
- data/spec/model/release_spec.rb +122 -122
- data/spec/model/sevendigital_object_spec.rb +73 -73
- data/spec/model/track_spec.rb +144 -144
- data/spec/model/user_spec.rb +160 -160
- data/spec/pager_spec.rb +7 -7
- data/spec/peachy_spec_helper_patch.rb +6 -6
- data/spec/proxy_police_spec.rb +69 -69
- data/spec/sevendigital_spec.rb +51 -70
- data/spec/sevendigital_spec.yml +4 -4
- data/spec/spec_helper.rb +64 -64
- 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/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/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 +49 -0
- 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 +6 -6
- 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/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/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 +33 -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 +193 -3
@@ -1,11 +1,11 @@
|
|
1
|
-
module Sevendigital
|
2
|
-
|
3
|
-
class TagManager < Manager
|
4
|
-
|
5
|
-
def get_tag_list(options={})
|
6
|
-
api_response = @api_client.make_api_request(:GET, "tag", {}, options)
|
7
|
-
@api_client.tag_digestor.list_from_xml(api_response.content.tags)
|
8
|
-
end
|
9
|
-
|
10
|
-
end
|
1
|
+
module Sevendigital
|
2
|
+
|
3
|
+
class TagManager < Manager
|
4
|
+
|
5
|
+
def get_tag_list(options={})
|
6
|
+
api_response = @api_client.make_api_request(:GET, "tag", {}, options)
|
7
|
+
@api_client.tag_digestor.list_from_xml(api_response.content.tags)
|
8
|
+
end
|
9
|
+
|
10
|
+
end
|
11
11
|
end
|
@@ -1,29 +1,29 @@
|
|
1
|
-
module Sevendigital
|
2
|
-
|
3
|
-
class TrackManager < Manager
|
4
|
-
|
5
|
-
def get_details(id, options={})
|
6
|
-
api_response = @api_client.make_api_request(:GET, "track/details", {:trackId => id}, options)
|
7
|
-
@api_client.track_digestor.from_xml(api_response.content.track)
|
8
|
-
end
|
9
|
-
|
10
|
-
def get_details_from_release(track_id, release_id, options={})
|
11
|
-
@api_client.release.get_tracks(release_id, options).find {|track| track.id == track_id}
|
12
|
-
end
|
13
|
-
|
14
|
-
def get_chart(options={})
|
15
|
-
api_response = @api_client.make_api_request(:GET, "track/chart", {}, options)
|
16
|
-
@api_client.chart_item_digestor.list_from_xml(api_response.content.chart)
|
17
|
-
end
|
18
|
-
|
19
|
-
def build_preview_url(id, options={})
|
20
|
-
api_request = @api_client.create_api_request(:GET, "track/preview", {:trackId => id}, options)
|
21
|
-
@api_client.operator.get_request_uri(api_request)
|
22
|
-
end
|
23
|
-
|
24
|
-
def search(query, options={})
|
25
|
-
api_response = @api_client.make_api_request(:GET, "track/search", {:q => query}, options)
|
26
|
-
@api_client.track_digestor.nested_list_from_xml(api_response.content.search_results, :search_result, :search_results)
|
27
|
-
end
|
28
|
-
end
|
1
|
+
module Sevendigital
|
2
|
+
|
3
|
+
class TrackManager < Manager
|
4
|
+
|
5
|
+
def get_details(id, options={})
|
6
|
+
api_response = @api_client.make_api_request(:GET, "track/details", {:trackId => id}, options)
|
7
|
+
@api_client.track_digestor.from_xml(api_response.content.track)
|
8
|
+
end
|
9
|
+
|
10
|
+
def get_details_from_release(track_id, release_id, options={})
|
11
|
+
@api_client.release.get_tracks(release_id, options).find {|track| track.id == track_id}
|
12
|
+
end
|
13
|
+
|
14
|
+
def get_chart(options={})
|
15
|
+
api_response = @api_client.make_api_request(:GET, "track/chart", {}, options)
|
16
|
+
@api_client.chart_item_digestor.list_from_xml(api_response.content.chart)
|
17
|
+
end
|
18
|
+
|
19
|
+
def build_preview_url(id, options={})
|
20
|
+
api_request = @api_client.create_api_request(:GET, "track/preview", {:trackId => id}, options)
|
21
|
+
@api_client.operator.get_request_uri(api_request)
|
22
|
+
end
|
23
|
+
|
24
|
+
def search(query, options={})
|
25
|
+
api_response = @api_client.make_api_request(:GET, "track/search", {:q => query}, options)
|
26
|
+
@api_client.track_digestor.nested_list_from_xml(api_response.content.search_results, :search_result, :search_results)
|
27
|
+
end
|
28
|
+
end
|
29
29
|
end
|
@@ -1,27 +1,27 @@
|
|
1
|
-
module Sevendigital
|
2
|
-
|
3
|
-
class UserCardManager < Manager
|
4
|
-
|
5
|
-
def get_card_list(token, options={})
|
6
|
-
api_response = @api_client.make_signed_api_request(:GET, "user/payment/card", {}, options, token)
|
7
|
-
@api_client.user_card_digestor.list_from_xml(api_response.content.cards)
|
8
|
-
end
|
9
|
-
|
10
|
-
def add_card(card_number, card_type, card_holder_name, card_start_date, card_expiry_date, card_issue_number,
|
11
|
-
card_verification_code, card_post_code, card_country, token, options={})
|
12
|
-
api_response = @api_client.make_signed_api_request(:POST, "user/payment/card/add", {
|
13
|
-
:cardNumber => card_number, :cardType => card_type, :cardHolderName => card_holder_name,
|
14
|
-
:cardStartDate => card_start_date, :cardExpiryDate => card_expiry_date, :cardIssueNumber => card_issue_number,
|
15
|
-
:cardVerificationCode => card_verification_code, :cardPostCode => card_post_code, :cardCountry => card_country
|
16
|
-
}, options, token)
|
17
|
-
@api_client.user_card_digestor.from_xml(api_response.content.card)
|
18
|
-
end
|
19
|
-
|
20
|
-
def select_card(card_id, token, options={})
|
21
|
-
api_response = @api_client.make_signed_api_request(
|
22
|
-
:POST, "user/payment/card/select", {:cardId => card_id}, options, token)
|
23
|
-
api_response.ok?
|
24
|
-
end
|
25
|
-
|
26
|
-
end
|
1
|
+
module Sevendigital
|
2
|
+
|
3
|
+
class UserCardManager < Manager
|
4
|
+
|
5
|
+
def get_card_list(token, options={})
|
6
|
+
api_response = @api_client.make_signed_api_request(:GET, "user/payment/card", {}, options, token)
|
7
|
+
@api_client.user_card_digestor.list_from_xml(api_response.content.cards)
|
8
|
+
end
|
9
|
+
|
10
|
+
def add_card(card_number, card_type, card_holder_name, card_start_date, card_expiry_date, card_issue_number,
|
11
|
+
card_verification_code, card_post_code, card_country, token, options={})
|
12
|
+
api_response = @api_client.make_signed_api_request(:POST, "user/payment/card/add", {
|
13
|
+
:cardNumber => card_number, :cardType => card_type, :cardHolderName => card_holder_name,
|
14
|
+
:cardStartDate => card_start_date, :cardExpiryDate => card_expiry_date, :cardIssueNumber => card_issue_number,
|
15
|
+
:cardVerificationCode => card_verification_code, :cardPostCode => card_post_code, :cardCountry => card_country
|
16
|
+
}, options, token)
|
17
|
+
@api_client.user_card_digestor.from_xml(api_response.content.card)
|
18
|
+
end
|
19
|
+
|
20
|
+
def select_card(card_id, token, options={})
|
21
|
+
api_response = @api_client.make_signed_api_request(
|
22
|
+
:POST, "user/payment/card/select", {:cardId => card_id}, options, token)
|
23
|
+
api_response.ok?
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
27
27
|
end
|
@@ -1,71 +1,71 @@
|
|
1
|
-
module Sevendigital
|
2
|
-
|
3
|
-
class UserManager < Manager
|
4
|
-
|
5
|
-
def login(access_token)
|
6
|
-
raise Sevendigital::SevendigitalError if !access_token.kind_of? OAuth::AccessToken
|
7
|
-
user = Sevendigital::User.new(@api_client)
|
8
|
-
user.oauth_access_token = access_token
|
9
|
-
user
|
10
|
-
end
|
11
|
-
|
12
|
-
def authenticate(email, password)
|
13
|
-
request_token = @api_client.oauth.get_request_token
|
14
|
-
return nil unless @api_client.oauth.authorise_request_token(email, password, request_token)
|
15
|
-
user = Sevendigital::User.new(@api_client)
|
16
|
-
user.oauth_access_token = @api_client.oauth.get_access_token(request_token)
|
17
|
-
user
|
18
|
-
end
|
19
|
-
|
20
|
-
def sign_up(email, password, options={})
|
21
|
-
api_response = @api_client.make_signed_api_request(:POST, "user/signUp", \
|
22
|
-
{:emailAddress => email, :password=> password}, options)
|
23
|
-
user = @api_client.user_digestor.from_xml(api_response.content.user)
|
24
|
-
user.oauth_access_token = authenticate(email, password).oauth_access_token
|
25
|
-
user
|
26
|
-
end
|
27
|
-
|
28
|
-
def get_locker(token, options={})
|
29
|
-
api_response = @api_client.make_signed_api_request(:GET, "user/locker", {}, options, token)
|
30
|
-
@locker = @api_client.locker_digestor.from_xml(api_response.content.locker)
|
31
|
-
end
|
32
|
-
|
33
|
-
# <b>DEPRECATED:</b> Please use <tt>purchase_item</tt> instead.
|
34
|
-
def purchase(release_id, track_id, price, token, options={})
|
35
|
-
warn "[DEPRECATION] 'purchase' is deprecated. Please use 'purchase_item' instead."
|
36
|
-
purchase_item(release_id, track_id, price, token, options)
|
37
|
-
end
|
38
|
-
|
39
|
-
def purchase_item(release_id, track_id, price, token, options={})
|
40
|
-
api_response = @api_client.make_signed_api_request(:GET, "user/purchase/item", \
|
41
|
-
{:releaseId => release_id, :trackId => track_id, :price => price}, options, token)
|
42
|
-
@api_client.locker_digestor.from_xml(api_response.content.purchase)
|
43
|
-
end
|
44
|
-
|
45
|
-
def purchase_basket(basket_id, token, options={})
|
46
|
-
api_response = @api_client.make_signed_api_request(:GET, "user/purchase/basket", \
|
47
|
-
{:basketId => basket_id}, options, token)
|
48
|
-
@api_client.locker_digestor.from_xml(api_response.content.purchase)
|
49
|
-
end
|
50
|
-
|
51
|
-
def get_stream_track_url(release_id, track_id, token, options={})
|
52
|
-
api_request = @api_client.create_api_request(:GET, "user/streamtrack", {:releaseId => release_id, :trackId => track_id}, options)
|
53
|
-
api_request.api_service = :media
|
54
|
-
api_request.require_signature
|
55
|
-
api_request.token = token
|
56
|
-
@api_client.operator.get_request_uri(api_request)
|
57
|
-
end
|
58
|
-
|
59
|
-
def get_add_card_url(return_url, token, options={})
|
60
|
-
api_request = @api_client.create_api_request(:GET, "payment/addcard", {:returnUrl => return_url}, options)
|
61
|
-
api_request.api_service = :account
|
62
|
-
api_request.require_signature
|
63
|
-
api_request.require_secure_connection
|
64
|
-
api_request.token = token
|
65
|
-
@api_client.operator.get_request_uri(api_request)
|
66
|
-
end
|
67
|
-
|
68
|
-
|
69
|
-
end
|
70
|
-
|
71
|
-
end
|
1
|
+
module Sevendigital
|
2
|
+
|
3
|
+
class UserManager < Manager
|
4
|
+
|
5
|
+
def login(access_token)
|
6
|
+
raise Sevendigital::SevendigitalError if !access_token.kind_of? OAuth::AccessToken
|
7
|
+
user = Sevendigital::User.new(@api_client)
|
8
|
+
user.oauth_access_token = access_token
|
9
|
+
user
|
10
|
+
end
|
11
|
+
|
12
|
+
def authenticate(email, password)
|
13
|
+
request_token = @api_client.oauth.get_request_token
|
14
|
+
return nil unless @api_client.oauth.authorise_request_token(email, password, request_token)
|
15
|
+
user = Sevendigital::User.new(@api_client)
|
16
|
+
user.oauth_access_token = @api_client.oauth.get_access_token(request_token)
|
17
|
+
user
|
18
|
+
end
|
19
|
+
|
20
|
+
def sign_up(email, password, options={})
|
21
|
+
api_response = @api_client.make_signed_api_request(:POST, "user/signUp", \
|
22
|
+
{:emailAddress => email, :password=> password}, options)
|
23
|
+
user = @api_client.user_digestor.from_xml(api_response.content.user)
|
24
|
+
user.oauth_access_token = authenticate(email, password).oauth_access_token
|
25
|
+
user
|
26
|
+
end
|
27
|
+
|
28
|
+
def get_locker(token, options={})
|
29
|
+
api_response = @api_client.make_signed_api_request(:GET, "user/locker", {}, options, token)
|
30
|
+
@locker = @api_client.locker_digestor.from_xml(api_response.content.locker)
|
31
|
+
end
|
32
|
+
|
33
|
+
# <b>DEPRECATED:</b> Please use <tt>purchase_item</tt> instead.
|
34
|
+
def purchase(release_id, track_id, price, token, options={})
|
35
|
+
warn "[DEPRECATION] 'purchase' is deprecated. Please use 'purchase_item' instead."
|
36
|
+
purchase_item(release_id, track_id, price, token, options)
|
37
|
+
end
|
38
|
+
|
39
|
+
def purchase_item(release_id, track_id, price, token, options={})
|
40
|
+
api_response = @api_client.make_signed_api_request(:GET, "user/purchase/item", \
|
41
|
+
{:releaseId => release_id, :trackId => track_id, :price => price}, options, token)
|
42
|
+
@api_client.locker_digestor.from_xml(api_response.content.purchase)
|
43
|
+
end
|
44
|
+
|
45
|
+
def purchase_basket(basket_id, token, options={})
|
46
|
+
api_response = @api_client.make_signed_api_request(:GET, "user/purchase/basket", \
|
47
|
+
{:basketId => basket_id}, options, token)
|
48
|
+
@api_client.locker_digestor.from_xml(api_response.content.purchase)
|
49
|
+
end
|
50
|
+
|
51
|
+
def get_stream_track_url(release_id, track_id, token, options={})
|
52
|
+
api_request = @api_client.create_api_request(:GET, "user/streamtrack", {:releaseId => release_id, :trackId => track_id}, options)
|
53
|
+
api_request.api_service = :media
|
54
|
+
api_request.require_signature
|
55
|
+
api_request.token = token
|
56
|
+
@api_client.operator.get_request_uri(api_request)
|
57
|
+
end
|
58
|
+
|
59
|
+
def get_add_card_url(return_url, token, options={})
|
60
|
+
api_request = @api_client.create_api_request(:GET, "payment/addcard", {:returnUrl => return_url}, options)
|
61
|
+
api_request.api_service = :account
|
62
|
+
api_request.require_signature
|
63
|
+
api_request.require_secure_connection
|
64
|
+
api_request.token = token
|
65
|
+
@api_client.operator.get_request_uri(api_request)
|
66
|
+
end
|
67
|
+
|
68
|
+
|
69
|
+
end
|
70
|
+
|
71
|
+
end
|
@@ -1,26 +1,26 @@
|
|
1
|
-
module Sevendigital
|
2
|
-
|
3
|
-
#Holds the complete API response
|
4
|
-
class ApiResponse
|
5
|
-
|
6
|
-
attr_accessor :error_code, :error_message, :content, :headers
|
7
|
-
|
8
|
-
#True if no API error has been returned
|
9
|
-
def ok?
|
10
|
-
return (@error_code == 0 && !@content.nil?)
|
11
|
-
end
|
12
|
-
|
13
|
-
def _dump(depth)
|
14
|
-
Marshal.dump([@error_code, @error_message, @headers, @content.to_s])
|
15
|
-
end
|
16
|
-
|
17
|
-
def self._load(properties)
|
18
|
-
response = ApiResponse.new
|
19
|
-
response.error_code, response.error_message, response.headers, content_xml = Marshal.load(properties)
|
20
|
-
response.content = Peachy::Proxy.new(content_xml).response
|
21
|
-
response
|
22
|
-
end
|
23
|
-
|
24
|
-
end
|
25
|
-
|
1
|
+
module Sevendigital
|
2
|
+
|
3
|
+
#Holds the complete API response
|
4
|
+
class ApiResponse
|
5
|
+
|
6
|
+
attr_accessor :error_code, :error_message, :content, :headers
|
7
|
+
|
8
|
+
#True if no API error has been returned
|
9
|
+
def ok?
|
10
|
+
return (@error_code == 0 && !@content.nil?)
|
11
|
+
end
|
12
|
+
|
13
|
+
def _dump(depth)
|
14
|
+
Marshal.dump([@error_code, @error_message, @headers, @content.to_s])
|
15
|
+
end
|
16
|
+
|
17
|
+
def self._load(properties)
|
18
|
+
response = ApiResponse.new
|
19
|
+
response.error_code, response.error_message, response.headers, content_xml = Marshal.load(properties)
|
20
|
+
response.content = Peachy::Proxy.new(content_xml).response
|
21
|
+
response
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
25
|
+
|
26
26
|
end
|
@@ -1,95 +1,95 @@
|
|
1
|
-
module Sevendigital
|
2
|
-
|
3
|
-
#with lazy loading enabled these will be automatically populated by calling get_details
|
4
|
-
#==Extended properties
|
5
|
-
#with lazy loading enabled these will be automatically populated by calling the method in brackets
|
6
|
-
#additional options can be passed in when accessing lazy loaded properties, e.g.
|
7
|
-
# artist.releases({:page_size => 5, :image_size =>250})
|
8
|
-
|
9
|
-
class Artist < SevendigitalObject
|
10
|
-
|
11
|
-
#7digital artist ID
|
12
|
-
#@return [Integer]
|
13
|
-
attr_accessor :id
|
14
|
-
|
15
|
-
#artist's name
|
16
|
-
#@return [String]
|
17
|
-
attr_accessor :name
|
18
|
-
|
19
|
-
#Artist's name as it appears on the release or track (only available when artist is linked from release or track)
|
20
|
-
#@return [String]
|
21
|
-
attr_accessor :appears_as
|
22
|
-
|
23
|
-
#Artist name used for sorting, e.g. Beatles, The (optional lazy-loaded property)
|
24
|
-
#@return [String]
|
25
|
-
sevendigital_basic_property :sort_name
|
26
|
-
|
27
|
-
#Artist image URL (optional lazy-loaded property)
|
28
|
-
#@return [String]
|
29
|
-
sevendigital_basic_property :image
|
30
|
-
|
31
|
-
#Artist buy link URL (optional lazy-loaded property)
|
32
|
-
#@return [String]
|
33
|
-
sevendigital_basic_property :url
|
34
|
-
|
35
|
-
#artist's releases (lazy loaded using get_releases)
|
36
|
-
#@return [Array<Release>]
|
37
|
-
sevendigital_extended_property :releases
|
38
|
-
|
39
|
-
#artist's top tracks (lazy loaded using get_top_tracks)
|
40
|
-
#@return [Array<Track>]
|
41
|
-
sevendigital_extended_property :top_tracks
|
42
|
-
|
43
|
-
#list of artists similar to this artist (lazy loaded using {#get_similar})
|
44
|
-
#@return [Array<Artist>] similar
|
45
|
-
sevendigital_extended_property :similar
|
46
|
-
|
47
|
-
#list of tags associated with the artist (lazy loaded using #get_tags)
|
48
|
-
#@return [Array<Artist>] similar
|
49
|
-
sevendigital_extended_property :tags
|
50
|
-
|
51
|
-
#populates all available details on artist by calling *artist/details* API method
|
52
|
-
#@return [Artist]
|
53
|
-
def get_details(options={})
|
54
|
-
artist_with_details = @api_client.artist.get_details(@id, options)
|
55
|
-
copy_basic_properties_from(artist_with_details)
|
56
|
-
end
|
57
|
-
|
58
|
-
#releases by this artist retrieved by calling *artist/releases* API method
|
59
|
-
#@return [Array<Release>]
|
60
|
-
def get_releases(options={})
|
61
|
-
@api_client.artist.get_releases(@id, options)
|
62
|
-
end
|
63
|
-
|
64
|
-
#top tracks by this artist retrieved by calling *artist/topTracks* API method
|
65
|
-
#@return [Array<Track>]
|
66
|
-
def get_top_tracks(options={})
|
67
|
-
@api_client.artist.get_top_tracks(@id, options)
|
68
|
-
end
|
69
|
-
|
70
|
-
#artists similar to this artist retrieved by calling *artist/similar* API method
|
71
|
-
#@return [Array<Track>]
|
72
|
-
def get_similar(options={})
|
73
|
-
@similar = @api_client.artist.get_similar(@id, options)
|
74
|
-
end
|
75
|
-
|
76
|
-
#tags associated with this artist retrieved by calling *artist/tags* API method
|
77
|
-
#@return [Array<Tag>]
|
78
|
-
def get_tags(options={})
|
79
|
-
@api_client.artist.get_tags(@id, options)
|
80
|
-
end
|
81
|
-
|
82
|
-
#does this artist represents various artists?
|
83
|
-
#@return [Boolean]
|
84
|
-
def various?
|
85
|
-
joined_names = "#{name} #{appears_as}".downcase
|
86
|
-
|
87
|
-
various_variations = ["vario", "v???????????????rio", "v.a", "vaious", "varios" "vaious", "varoius", "variuos", \
|
88
|
-
"soundtrack", "karaoke", "original cast", "diverse artist"]
|
89
|
-
various_variations.each{|various_variation| return true if joined_names.include?(various_variation)}
|
90
|
-
return false
|
91
|
-
end
|
92
|
-
|
93
|
-
|
94
|
-
end
|
1
|
+
module Sevendigital
|
2
|
+
|
3
|
+
#with lazy loading enabled these will be automatically populated by calling get_details
|
4
|
+
#==Extended properties
|
5
|
+
#with lazy loading enabled these will be automatically populated by calling the method in brackets
|
6
|
+
#additional options can be passed in when accessing lazy loaded properties, e.g.
|
7
|
+
# artist.releases({:page_size => 5, :image_size =>250})
|
8
|
+
|
9
|
+
class Artist < SevendigitalObject
|
10
|
+
|
11
|
+
#7digital artist ID
|
12
|
+
#@return [Integer]
|
13
|
+
attr_accessor :id
|
14
|
+
|
15
|
+
#artist's name
|
16
|
+
#@return [String]
|
17
|
+
attr_accessor :name
|
18
|
+
|
19
|
+
#Artist's name as it appears on the release or track (only available when artist is linked from release or track)
|
20
|
+
#@return [String]
|
21
|
+
attr_accessor :appears_as
|
22
|
+
|
23
|
+
#Artist name used for sorting, e.g. Beatles, The (optional lazy-loaded property)
|
24
|
+
#@return [String]
|
25
|
+
sevendigital_basic_property :sort_name
|
26
|
+
|
27
|
+
#Artist image URL (optional lazy-loaded property)
|
28
|
+
#@return [String]
|
29
|
+
sevendigital_basic_property :image
|
30
|
+
|
31
|
+
#Artist buy link URL (optional lazy-loaded property)
|
32
|
+
#@return [String]
|
33
|
+
sevendigital_basic_property :url
|
34
|
+
|
35
|
+
#artist's releases (lazy loaded using get_releases)
|
36
|
+
#@return [Array<Release>]
|
37
|
+
sevendigital_extended_property :releases
|
38
|
+
|
39
|
+
#artist's top tracks (lazy loaded using get_top_tracks)
|
40
|
+
#@return [Array<Track>]
|
41
|
+
sevendigital_extended_property :top_tracks
|
42
|
+
|
43
|
+
#list of artists similar to this artist (lazy loaded using {#get_similar})
|
44
|
+
#@return [Array<Artist>] similar
|
45
|
+
sevendigital_extended_property :similar
|
46
|
+
|
47
|
+
#list of tags associated with the artist (lazy loaded using #get_tags)
|
48
|
+
#@return [Array<Artist>] similar
|
49
|
+
sevendigital_extended_property :tags
|
50
|
+
|
51
|
+
#populates all available details on artist by calling *artist/details* API method
|
52
|
+
#@return [Artist]
|
53
|
+
def get_details(options={})
|
54
|
+
artist_with_details = @api_client.artist.get_details(@id, options)
|
55
|
+
copy_basic_properties_from(artist_with_details)
|
56
|
+
end
|
57
|
+
|
58
|
+
#releases by this artist retrieved by calling *artist/releases* API method
|
59
|
+
#@return [Array<Release>]
|
60
|
+
def get_releases(options={})
|
61
|
+
@api_client.artist.get_releases(@id, options)
|
62
|
+
end
|
63
|
+
|
64
|
+
#top tracks by this artist retrieved by calling *artist/topTracks* API method
|
65
|
+
#@return [Array<Track>]
|
66
|
+
def get_top_tracks(options={})
|
67
|
+
@api_client.artist.get_top_tracks(@id, options)
|
68
|
+
end
|
69
|
+
|
70
|
+
#artists similar to this artist retrieved by calling *artist/similar* API method
|
71
|
+
#@return [Array<Track>]
|
72
|
+
def get_similar(options={})
|
73
|
+
@similar = @api_client.artist.get_similar(@id, options)
|
74
|
+
end
|
75
|
+
|
76
|
+
#tags associated with this artist retrieved by calling *artist/tags* API method
|
77
|
+
#@return [Array<Tag>]
|
78
|
+
def get_tags(options={})
|
79
|
+
@api_client.artist.get_tags(@id, options)
|
80
|
+
end
|
81
|
+
|
82
|
+
#does this artist represents various artists?
|
83
|
+
#@return [Boolean]
|
84
|
+
def various?
|
85
|
+
joined_names = "#{name} #{appears_as}".downcase
|
86
|
+
|
87
|
+
various_variations = ["vario", "v???????????????rio", "v.a", "vaious", "varios" "vaious", "varoius", "variuos", \
|
88
|
+
"soundtrack", "karaoke", "original cast", "diverse artist"]
|
89
|
+
various_variations.each{|various_variation| return true if joined_names.include?(various_variation)}
|
90
|
+
return false
|
91
|
+
end
|
92
|
+
|
93
|
+
|
94
|
+
end
|
95
95
|
end
|