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,7 +1,7 @@
|
|
1
|
-
module Sevendigital
|
2
|
-
|
3
|
-
class Tag
|
4
|
-
attr_accessor :id, :text, :url, :count
|
5
|
-
end
|
6
|
-
|
7
|
-
end
|
1
|
+
module Sevendigital
|
2
|
+
|
3
|
+
class Tag
|
4
|
+
attr_accessor :id, :text, :url, :count
|
5
|
+
end
|
6
|
+
|
7
|
+
end
|
@@ -1,84 +1,84 @@
|
|
1
|
-
module Sevendigital
|
2
|
-
|
3
|
-
class Track < SevendigitalObject
|
4
|
-
|
5
|
-
#track id
|
6
|
-
#@return [Integer]
|
7
|
-
attr_accessor :id
|
8
|
-
|
9
|
-
#title of the track
|
10
|
-
#@return [String]
|
11
|
-
attr_accessor :title
|
12
|
-
|
13
|
-
#version of the track (e.g. remix, radio edit)
|
14
|
-
#@return [String]
|
15
|
-
attr_accessor :version
|
16
|
-
|
17
|
-
#release the track appears on
|
18
|
-
#@return [Release]
|
19
|
-
attr_accessor :release
|
20
|
-
|
21
|
-
#Artist of the track
|
22
|
-
#@return [Artist]
|
23
|
-
attr_accessor :artist
|
24
|
-
|
25
|
-
#Number of the track as it appears on the release
|
26
|
-
#@return [Integer]
|
27
|
-
sevendigital_basic_property :track_number
|
28
|
-
|
29
|
-
#The length of the track in seconds
|
30
|
-
#@return [Integer]
|
31
|
-
sevendigital_basic_property :duration
|
32
|
-
|
33
|
-
#parental advisory - explicit content tag
|
34
|
-
#@return [Boolean]
|
35
|
-
sevendigital_basic_property :explicit_content
|
36
|
-
|
37
|
-
#ISRC code
|
38
|
-
#@return [String]
|
39
|
-
sevendigital_basic_property :isrc
|
40
|
-
|
41
|
-
#URL link to 7digital page where this track can be purchased
|
42
|
-
#@return [String]
|
43
|
-
sevendigital_basic_property :url
|
44
|
-
|
45
|
-
#Pricing information of the track
|
46
|
-
#@return [Price]
|
47
|
-
sevendigital_basic_property :price
|
48
|
-
|
49
|
-
#Retrieves and populates all track properties
|
50
|
-
#
|
51
|
-
#useful with lazy loading turned off
|
52
|
-
#@param [Hash] options optional hash of additional API parameters, e.g. image_size => 75, etc
|
53
|
-
#@return [Track]
|
54
|
-
def get_details(options={})
|
55
|
-
track_with_details = @api_client.track.get_details_from_release(@id, @release.id, options)
|
56
|
-
copy_basic_properties_from(track_with_details)
|
57
|
-
self
|
58
|
-
end
|
59
|
-
|
60
|
-
#Title of the track stripped out of any version information if it's included the title of the track rather than version property
|
61
|
-
#e.g. if title is "Some Song (Radio Edit)" it will return "Some Song"
|
62
|
-
#@return [String]
|
63
|
-
def short_title
|
64
|
-
# return title.gsub(/\s+[\(\[](album|lp|single|short|edit|radio)\s+version[\)\]]/ , "")
|
65
|
-
return title.gsub(/\s+\(.*\s?(version|mix|remix|edit|edition|live|feat|explicit|original|remaster)\s?.*\)/i, "")
|
66
|
-
end
|
67
|
-
|
68
|
-
#Compares 2 songs whether they're just different versions of the same song by the same artist
|
69
|
-
#e.g. track "Some Song (Radio Edit)" is alternate version of "Some Song (Remastered)"
|
70
|
-
#returns true also if the 2 songs are the same
|
71
|
-
#@return [Boolean]
|
72
|
-
def alternate_version_of?(another_track)
|
73
|
-
return another_track && short_title.downcase == another_track.short_title.downcase \
|
74
|
-
&& another_track.artist && artist.name.downcase == another_track.artist.name.downcase
|
75
|
-
end
|
76
|
-
|
77
|
-
#URL of mp3 preview for this track
|
78
|
-
#@return [String]
|
79
|
-
def preview_url(options={})
|
80
|
-
@api_client.track.build_preview_url(@id, options)
|
81
|
-
end
|
82
|
-
|
83
|
-
end
|
1
|
+
module Sevendigital
|
2
|
+
|
3
|
+
class Track < SevendigitalObject
|
4
|
+
|
5
|
+
#track id
|
6
|
+
#@return [Integer]
|
7
|
+
attr_accessor :id
|
8
|
+
|
9
|
+
#title of the track
|
10
|
+
#@return [String]
|
11
|
+
attr_accessor :title
|
12
|
+
|
13
|
+
#version of the track (e.g. remix, radio edit)
|
14
|
+
#@return [String]
|
15
|
+
attr_accessor :version
|
16
|
+
|
17
|
+
#release the track appears on
|
18
|
+
#@return [Release]
|
19
|
+
attr_accessor :release
|
20
|
+
|
21
|
+
#Artist of the track
|
22
|
+
#@return [Artist]
|
23
|
+
attr_accessor :artist
|
24
|
+
|
25
|
+
#Number of the track as it appears on the release
|
26
|
+
#@return [Integer]
|
27
|
+
sevendigital_basic_property :track_number
|
28
|
+
|
29
|
+
#The length of the track in seconds
|
30
|
+
#@return [Integer]
|
31
|
+
sevendigital_basic_property :duration
|
32
|
+
|
33
|
+
#parental advisory - explicit content tag
|
34
|
+
#@return [Boolean]
|
35
|
+
sevendigital_basic_property :explicit_content
|
36
|
+
|
37
|
+
#ISRC code
|
38
|
+
#@return [String]
|
39
|
+
sevendigital_basic_property :isrc
|
40
|
+
|
41
|
+
#URL link to 7digital page where this track can be purchased
|
42
|
+
#@return [String]
|
43
|
+
sevendigital_basic_property :url
|
44
|
+
|
45
|
+
#Pricing information of the track
|
46
|
+
#@return [Price]
|
47
|
+
sevendigital_basic_property :price
|
48
|
+
|
49
|
+
#Retrieves and populates all track properties
|
50
|
+
#
|
51
|
+
#useful with lazy loading turned off
|
52
|
+
#@param [Hash] options optional hash of additional API parameters, e.g. image_size => 75, etc
|
53
|
+
#@return [Track]
|
54
|
+
def get_details(options={})
|
55
|
+
track_with_details = @api_client.track.get_details_from_release(@id, @release.id, options)
|
56
|
+
copy_basic_properties_from(track_with_details)
|
57
|
+
self
|
58
|
+
end
|
59
|
+
|
60
|
+
#Title of the track stripped out of any version information if it's included the title of the track rather than version property
|
61
|
+
#e.g. if title is "Some Song (Radio Edit)" it will return "Some Song"
|
62
|
+
#@return [String]
|
63
|
+
def short_title
|
64
|
+
# return title.gsub(/\s+[\(\[](album|lp|single|short|edit|radio)\s+version[\)\]]/ , "")
|
65
|
+
return title.gsub(/\s+\(.*\s?(version|mix|remix|edit|edition|live|feat|explicit|original|remaster)\s?.*\)/i, "")
|
66
|
+
end
|
67
|
+
|
68
|
+
#Compares 2 songs whether they're just different versions of the same song by the same artist
|
69
|
+
#e.g. track "Some Song (Radio Edit)" is alternate version of "Some Song (Remastered)"
|
70
|
+
#returns true also if the 2 songs are the same
|
71
|
+
#@return [Boolean]
|
72
|
+
def alternate_version_of?(another_track)
|
73
|
+
return another_track && short_title.downcase == another_track.short_title.downcase \
|
74
|
+
&& another_track.artist && artist.name.downcase == another_track.artist.name.downcase
|
75
|
+
end
|
76
|
+
|
77
|
+
#URL of mp3 preview for this track
|
78
|
+
#@return [String]
|
79
|
+
def preview_url(options={})
|
80
|
+
@api_client.track.build_preview_url(@id, options)
|
81
|
+
end
|
82
|
+
|
83
|
+
end
|
84
84
|
end
|
@@ -1,64 +1,64 @@
|
|
1
|
-
module Sevendigital
|
2
|
-
|
3
|
-
class User < SevendigitalObject
|
4
|
-
|
5
|
-
attr_accessor :oauth_access_token, :id, :type, :email_address
|
6
|
-
|
7
|
-
sevendigital_extended_property :locker
|
8
|
-
|
9
|
-
sevendigital_extended_property :cards
|
10
|
-
|
11
|
-
def authenticated?
|
12
|
-
return !@oauth_access_token.nil?
|
13
|
-
end
|
14
|
-
|
15
|
-
def get_locker(options={})
|
16
|
-
raise Sevendigital::SevendigitalError if !authenticated?
|
17
|
-
@api_client.user.get_locker(@oauth_access_token, options)
|
18
|
-
end
|
19
|
-
|
20
|
-
def get_cards(options={})
|
21
|
-
raise Sevendigital::SevendigitalError if !authenticated?
|
22
|
-
@api_client.user_payment_card.get_card_list(@oauth_access_token, options)
|
23
|
-
end
|
24
|
-
|
25
|
-
def add_card(card_number, card_type, card_holder_name, card_start_date, card_expiry_date, card_issue_number,
|
26
|
-
card_verification_code, card_post_code, card_country, options={})
|
27
|
-
raise Sevendigital::SevendigitalError if !authenticated?
|
28
|
-
@api_client.user_payment_card.add_card(card_number, card_type, card_holder_name, card_start_date, card_expiry_date, card_issue_number,
|
29
|
-
card_verification_code, card_post_code, card_country, @oauth_access_token, options)
|
30
|
-
end
|
31
|
-
|
32
|
-
def select_card(card_id, options={})
|
33
|
-
raise Sevendigital::SevendigitalError if !authenticated?
|
34
|
-
@api_client.user_payment_card.select_card(card_id, @oauth_access_token, options)
|
35
|
-
end
|
36
|
-
|
37
|
-
# <b>DEPRECATED:</b> Please use <tt>purchase_item!</tt> instead.
|
38
|
-
def purchase!(release_id, track_id, price, token, options={})
|
39
|
-
warn "[DEPRECATION] `purchase!` is deprecated. Please use 'purchase_item!' instead."
|
40
|
-
purchase_item!(release_id, track_id, price, options={})
|
41
|
-
end
|
42
|
-
|
43
|
-
def purchase_item!(release_id, track_id, price, options={})
|
44
|
-
raise Sevendigital::SevendigitalError if !authenticated?
|
45
|
-
@api_client.user.purchase_item(release_id, track_id, price, @oauth_access_token, options)
|
46
|
-
end
|
47
|
-
|
48
|
-
def purchase_basket!(basket_id, options={})
|
49
|
-
raise Sevendigital::SevendigitalError if !authenticated?
|
50
|
-
@api_client.user.purchase_basket(basket_id, @oauth_access_token, options)
|
51
|
-
end
|
52
|
-
|
53
|
-
def stream_track_url(release_id, track_id, options={})
|
54
|
-
raise Sevendigital::SevendigitalError if !authenticated?
|
55
|
-
@api_client.user.get_stream_track_url(release_id, track_id, @oauth_access_token, options)
|
56
|
-
end
|
57
|
-
|
58
|
-
def add_card_url(return_url, options={})
|
59
|
-
raise Sevendigital::SevendigitalError if !authenticated?
|
60
|
-
@api_client.user.get_add_card_url(return_url, @oauth_access_token, options)
|
61
|
-
end
|
62
|
-
|
63
|
-
end
|
1
|
+
module Sevendigital
|
2
|
+
|
3
|
+
class User < SevendigitalObject
|
4
|
+
|
5
|
+
attr_accessor :oauth_access_token, :id, :type, :email_address
|
6
|
+
|
7
|
+
sevendigital_extended_property :locker
|
8
|
+
|
9
|
+
sevendigital_extended_property :cards
|
10
|
+
|
11
|
+
def authenticated?
|
12
|
+
return !@oauth_access_token.nil?
|
13
|
+
end
|
14
|
+
|
15
|
+
def get_locker(options={})
|
16
|
+
raise Sevendigital::SevendigitalError if !authenticated?
|
17
|
+
@api_client.user.get_locker(@oauth_access_token, options)
|
18
|
+
end
|
19
|
+
|
20
|
+
def get_cards(options={})
|
21
|
+
raise Sevendigital::SevendigitalError if !authenticated?
|
22
|
+
@api_client.user_payment_card.get_card_list(@oauth_access_token, options)
|
23
|
+
end
|
24
|
+
|
25
|
+
def add_card(card_number, card_type, card_holder_name, card_start_date, card_expiry_date, card_issue_number,
|
26
|
+
card_verification_code, card_post_code, card_country, options={})
|
27
|
+
raise Sevendigital::SevendigitalError if !authenticated?
|
28
|
+
@api_client.user_payment_card.add_card(card_number, card_type, card_holder_name, card_start_date, card_expiry_date, card_issue_number,
|
29
|
+
card_verification_code, card_post_code, card_country, @oauth_access_token, options)
|
30
|
+
end
|
31
|
+
|
32
|
+
def select_card(card_id, options={})
|
33
|
+
raise Sevendigital::SevendigitalError if !authenticated?
|
34
|
+
@api_client.user_payment_card.select_card(card_id, @oauth_access_token, options)
|
35
|
+
end
|
36
|
+
|
37
|
+
# <b>DEPRECATED:</b> Please use <tt>purchase_item!</tt> instead.
|
38
|
+
def purchase!(release_id, track_id, price, token, options={})
|
39
|
+
warn "[DEPRECATION] `purchase!` is deprecated. Please use 'purchase_item!' instead."
|
40
|
+
purchase_item!(release_id, track_id, price, options={})
|
41
|
+
end
|
42
|
+
|
43
|
+
def purchase_item!(release_id, track_id, price, options={})
|
44
|
+
raise Sevendigital::SevendigitalError if !authenticated?
|
45
|
+
@api_client.user.purchase_item(release_id, track_id, price, @oauth_access_token, options)
|
46
|
+
end
|
47
|
+
|
48
|
+
def purchase_basket!(basket_id, options={})
|
49
|
+
raise Sevendigital::SevendigitalError if !authenticated?
|
50
|
+
@api_client.user.purchase_basket(basket_id, @oauth_access_token, options)
|
51
|
+
end
|
52
|
+
|
53
|
+
def stream_track_url(release_id, track_id, options={})
|
54
|
+
raise Sevendigital::SevendigitalError if !authenticated?
|
55
|
+
@api_client.user.get_stream_track_url(release_id, track_id, @oauth_access_token, options)
|
56
|
+
end
|
57
|
+
|
58
|
+
def add_card_url(return_url, options={})
|
59
|
+
raise Sevendigital::SevendigitalError if !authenticated?
|
60
|
+
@api_client.user.get_add_card_url(return_url, @oauth_access_token, options)
|
61
|
+
end
|
62
|
+
|
63
|
+
end
|
64
64
|
end
|
data/lib/sevendigital/pager.rb
CHANGED
@@ -1,24 +1,24 @@
|
|
1
|
-
begin
|
2
|
-
require "will_paginate/collection"
|
3
|
-
rescue LoadError
|
4
|
-
end
|
5
|
-
|
6
|
-
module Sevendigital
|
7
|
-
|
8
|
-
#@private
|
9
|
-
#internal class used to page array results if will_paginate is available
|
10
|
-
class Pager # :nodoc:
|
11
|
-
|
12
|
-
attr_accessor :page, :page_size, :total_items
|
13
|
-
|
14
|
-
def paginate_list(list)
|
15
|
-
return list unless defined?(WillPaginate)
|
16
|
-
paged_list = WillPaginate::Collection.create(@page, @page_size, @total_items) do |pager|
|
17
|
-
pager.replace(list)
|
18
|
-
end
|
19
|
-
return paged_list
|
20
|
-
end
|
21
|
-
|
22
|
-
end
|
23
|
-
|
1
|
+
begin
|
2
|
+
require "will_paginate/collection"
|
3
|
+
rescue LoadError
|
4
|
+
end
|
5
|
+
|
6
|
+
module Sevendigital
|
7
|
+
|
8
|
+
#@private
|
9
|
+
#internal class used to page array results if will_paginate is available
|
10
|
+
class Pager # :nodoc:
|
11
|
+
|
12
|
+
attr_accessor :page, :page_size, :total_items
|
13
|
+
|
14
|
+
def paginate_list(list)
|
15
|
+
return list unless defined?(WillPaginate)
|
16
|
+
paged_list = WillPaginate::Collection.create(@page, @page_size, @total_items) do |pager|
|
17
|
+
pager.replace(list)
|
18
|
+
end
|
19
|
+
return paged_list
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
23
|
+
|
24
24
|
end
|
@@ -1,9 +1,9 @@
|
|
1
|
-
module Peachy
|
2
|
-
class MethodName
|
3
|
-
|
4
|
-
# let's also allow numbers and trailing underscores in element(method) names
|
5
|
-
def matches_convention?
|
6
|
-
@method_name =~ /^[a-z0-9]+(?:[_a-z0-9]+)*(?:NS[a-z0-9]+(?:[_a-z0-9]+)*)?$/
|
7
|
-
end
|
8
|
-
end
|
9
|
-
end
|
1
|
+
module Peachy
|
2
|
+
class MethodName
|
3
|
+
|
4
|
+
# let's also allow numbers and trailing underscores in element(method) names
|
5
|
+
def matches_convention?
|
6
|
+
@method_name =~ /^[a-z0-9]+(?:[_a-z0-9]+)*(?:NS[a-z0-9]+(?:[_a-z0-9]+)*)?$/
|
7
|
+
end
|
8
|
+
end
|
9
|
+
end
|
@@ -1,28 +1,28 @@
|
|
1
|
-
module Sevendigital
|
2
|
-
|
3
|
-
#@private
|
4
|
-
#internal class used to ensure the XML being processed is a Peachy::Proxy object
|
5
|
-
#if not it checks the expected element name matches the supplied XML string and converts it to Peachy::Proxy
|
6
|
-
class ProxyPolice # :nodoc:
|
7
|
-
|
8
|
-
def ProxyPolice.ensure_is_proxy(xml_or_proxy, element_name)
|
9
|
-
if xml_or_proxy.kind_of?(Peachy::Proxy) || xml_or_proxy.kind_of?(Peachy::SimpleContent) then
|
10
|
-
return xml_or_proxy
|
11
|
-
else
|
12
|
-
return ProxyPolice.create_release_proxy(xml_or_proxy, element_name)
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|
16
|
-
def ProxyPolice.create_release_proxy(xml, element_name)
|
17
|
-
#TODO don't use eval
|
18
|
-
parent_proxy = Peachy::Proxy.new(xml)
|
19
|
-
if element_name
|
20
|
-
# parent_proxy.send(element_name)
|
21
|
-
eval "parent_proxy.#{element_name.to_s}"
|
22
|
-
else
|
23
|
-
parent_proxy
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
27
|
-
end
|
1
|
+
module Sevendigital
|
2
|
+
|
3
|
+
#@private
|
4
|
+
#internal class used to ensure the XML being processed is a Peachy::Proxy object
|
5
|
+
#if not it checks the expected element name matches the supplied XML string and converts it to Peachy::Proxy
|
6
|
+
class ProxyPolice # :nodoc:
|
7
|
+
|
8
|
+
def ProxyPolice.ensure_is_proxy(xml_or_proxy, element_name)
|
9
|
+
if xml_or_proxy.kind_of?(Peachy::Proxy) || xml_or_proxy.kind_of?(Peachy::SimpleContent) then
|
10
|
+
return xml_or_proxy
|
11
|
+
else
|
12
|
+
return ProxyPolice.create_release_proxy(xml_or_proxy, element_name)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
def ProxyPolice.create_release_proxy(xml, element_name)
|
17
|
+
#TODO don't use eval
|
18
|
+
parent_proxy = Peachy::Proxy.new(xml)
|
19
|
+
if element_name
|
20
|
+
# parent_proxy.send(element_name)
|
21
|
+
eval "parent_proxy.#{element_name.to_s}"
|
22
|
+
else
|
23
|
+
parent_proxy
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
28
28
|
end
|
data/lib/sevendigital/version.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
|
-
module Sevendigital
|
2
|
-
# The version of the gem
|
3
|
-
NAME = "7digital"
|
4
|
-
VERSION = '0.0.
|
5
|
-
end
|
1
|
+
module Sevendigital
|
2
|
+
# The version of the gem
|
3
|
+
NAME = "7digital"
|
4
|
+
VERSION = '0.0.7'
|
5
|
+
end
|