7digital 0.0.2 → 0.0.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.
- data/README.rdoc +132 -5
- data/lib/sevendigital.rb +1 -2
- data/lib/sevendigital/api_operator.rb +103 -12
- data/lib/sevendigital/api_operator_cached.rb +14 -8
- data/lib/sevendigital/api_request.rb +50 -9
- data/lib/sevendigital/client.rb +51 -89
- data/lib/sevendigital/client_configuration.rb +86 -0
- data/lib/sevendigital/client_digestors.rb +79 -0
- data/lib/sevendigital/client_managers.rb +34 -0
- data/lib/sevendigital/digestion_tract/api_response_digestor.rb +8 -3
- data/lib/sevendigital/digestion_tract/artist_digestor.rb +1 -1
- data/lib/sevendigital/digestion_tract/basket_digestor.rb +18 -0
- data/lib/sevendigital/digestion_tract/basket_item_digestor.rb +25 -0
- data/lib/sevendigital/digestion_tract/chart_item_digestor.rb +1 -1
- data/lib/sevendigital/digestion_tract/digestor.rb +7 -3
- data/lib/sevendigital/digestion_tract/download_url_digestor.rb +19 -0
- data/lib/sevendigital/digestion_tract/format_digestor.rb +1 -1
- data/lib/sevendigital/digestion_tract/label_digestor.rb +1 -1
- data/lib/sevendigital/digestion_tract/locker_digestor.rb +17 -0
- data/lib/sevendigital/digestion_tract/locker_release_digestor.rb +19 -0
- data/lib/sevendigital/digestion_tract/locker_track_digestor.rb +21 -0
- data/lib/sevendigital/digestion_tract/oauth_access_token_digestor.rb +14 -0
- data/lib/sevendigital/digestion_tract/oauth_request_token_digestor.rb +14 -0
- data/lib/sevendigital/digestion_tract/pager_digestor.rb +1 -1
- data/lib/sevendigital/digestion_tract/price_digestor.rb +3 -3
- data/lib/sevendigital/digestion_tract/release_digestor.rb +1 -1
- data/lib/sevendigital/digestion_tract/tag_digestor.rb +22 -0
- data/lib/sevendigital/digestion_tract/track_digestor.rb +1 -1
- data/lib/sevendigital/management/artist_manager.rb +71 -34
- data/lib/sevendigital/management/basket_manager.rb +29 -0
- data/lib/sevendigital/management/manager.rb +1 -1
- data/lib/sevendigital/management/oauth_manager.rb +23 -0
- data/lib/sevendigital/management/release_manager.rb +7 -14
- data/lib/sevendigital/management/tag_manager.rb +11 -0
- data/lib/sevendigital/management/track_manager.rb +9 -9
- data/lib/sevendigital/management/user_manager.rb +51 -0
- data/lib/sevendigital/model/api_response.rb +19 -3
- data/lib/sevendigital/model/artist.rb +27 -9
- data/lib/sevendigital/model/basket.rb +16 -0
- data/lib/sevendigital/model/basket_item.rb +15 -0
- data/lib/sevendigital/model/download_url.rb +7 -0
- data/lib/sevendigital/model/format.rb +0 -2
- data/lib/sevendigital/model/label.rb +1 -3
- data/lib/sevendigital/model/locker.rb +5 -0
- data/lib/sevendigital/model/locker_release.rb +9 -0
- data/lib/sevendigital/model/locker_track.rb +9 -0
- data/lib/sevendigital/model/price.rb +0 -2
- data/lib/sevendigital/model/release.rb +22 -8
- data/lib/sevendigital/model/sevendigital_error.rb +9 -1
- data/lib/sevendigital/model/sevendigital_object.rb +16 -11
- data/lib/sevendigital/model/tag.rb +7 -0
- data/lib/sevendigital/model/track.rb +4 -4
- data/lib/sevendigital/model/user.rb +34 -0
- data/lib/sevendigital/pager.rb +8 -2
- data/lib/sevendigital/proxy_police.rb +5 -1
- data/lib/sevendigital/version.rb +5 -0
- data/spec/api_operator_cached_spec.rb +62 -7
- data/spec/api_operator_spec.rb +245 -21
- data/spec/api_request_spec.rb +20 -15
- data/spec/client_configuration_spec.rb +75 -0
- data/spec/client_spec.rb +126 -48
- 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 +43412 -0
- data/spec/coverage/resultset.yml +3251 -0
- data/spec/data/configuration_override.yml +2 -1
- data/spec/digestion_tract/api_response_digestor_spec.rb +15 -1
- data/spec/digestion_tract/artist_digestor_spec.rb +3 -3
- data/spec/digestion_tract/basket_digestor_spec.rb +32 -0
- data/spec/digestion_tract/basket_item_digestor_spec.rb +58 -0
- data/spec/digestion_tract/chart_digestor_spec.rb +2 -2
- data/spec/digestion_tract/download_url_digestor_spec.rb +41 -0
- data/spec/digestion_tract/format_digestor_spec.rb +2 -2
- data/spec/digestion_tract/label_digestor_spec.rb +2 -2
- data/spec/digestion_tract/locker_digestor_spec.rb +31 -0
- data/spec/digestion_tract/locker_release_digestor_spec.rb +71 -0
- data/spec/digestion_tract/locker_track_digestor_spec.rb +56 -0
- data/spec/digestion_tract/oauth_access_token_digestor_spec.rb +35 -0
- data/spec/digestion_tract/oauth_request_token_digestor_spec.rb +35 -0
- data/spec/digestion_tract/pager_digestor_spec.rb +2 -2
- data/spec/digestion_tract/price_digestor_spec.rb +21 -5
- data/spec/digestion_tract/release_digestor_spec.rb +2 -2
- data/spec/digestion_tract/tag_digestor_spec.rb +46 -0
- data/spec/digestion_tract/track_digestor_spec.rb +1 -1
- data/spec/management/artist_manager_spec.rb +46 -41
- data/spec/management/basket_manager_spec.rb +78 -0
- data/spec/management/oauth_manager_spec.rb +73 -0
- data/spec/management/release_manager_spec.rb +33 -74
- data/spec/management/tag_manager_spec.rb +34 -0
- data/spec/management/track_manager_spec.rb +42 -25
- data/spec/management/user_manager_spec.rb +163 -0
- data/spec/model/api_response_spec.rb +69 -2
- data/spec/model/artist_spec.rb +1 -26
- data/spec/model/basket_spec.rb +63 -0
- 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 +15 -14
- data/spec/model/sevendigital_object_spec.rb +74 -0
- data/spec/model/track_spec.rb +8 -4
- data/spec/model/user_spec.rb +98 -0
- data/spec/pager_spec.rb +2 -2
- data/spec/proxy_police_spec.rb +1 -1
- data/spec/spec_helper.rb +11 -3
- data/spec/test-xml/methods/artist/browse.xml +22 -0
- data/spec/test-xml/methods/artist/chart.xml +31 -0
- data/spec/test-xml/methods/basket/additem.xml +24 -0
- data/spec/test-xml/methods/basket/create.xml +11 -0
- data/spec/test-xml/methods/basket/index.xml +24 -0
- data/spec/test-xml/methods/basket/removeitem.xml +11 -0
- data/spec/test-xml/methods/oauth/accesstoken.xml +6 -0
- data/spec/test-xml/methods/oauth/requesttoken.xml +6 -0
- data/spec/test-xml/methods/tag/index.xml +17 -0
- data/spec/test-xml/methods/user/locker.xml +50 -0
- data/spec/test-xml/methods/user/purchase/item.xml +49 -0
- data/spec/test-xml/objects/basket.xml +22 -0
- data/spec/test-xml/objects/basket_item.xml +12 -0
- data/spec/test-xml/objects/basket_item_list.xml +26 -0
- data/spec/test-xml/objects/basket_item_list_empty.xml +2 -0
- data/spec/test-xml/objects/download_url.xml +8 -0
- data/spec/test-xml/objects/locker.xml +48 -0
- data/spec/test-xml/objects/locker_release.xml +41 -0
- data/spec/test-xml/objects/locker_release_list.xml +87 -0
- data/spec/test-xml/objects/locker_release_list_empty.xml +5 -0
- data/spec/test-xml/objects/locker_release_one_item_list.xml +43 -0
- data/spec/test-xml/objects/locker_track.xml +25 -0
- data/spec/test-xml/objects/locker_track_list.xml +26 -0
- data/spec/test-xml/objects/locker_track_list_empty.xml +2 -0
- data/spec/test-xml/objects/oauth_access_token.xml +4 -0
- data/spec/test-xml/objects/oauth_request_token.xml +4 -0
- data/spec/test-xml/objects/tag.xml +5 -0
- metadata +395 -13
- data/lib/sevendigital/peachy_patch.rb +0 -19
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
require 'ostruct'
|
|
2
|
+
require 'yaml'
|
|
3
|
+
|
|
4
|
+
module Sevendigital
|
|
5
|
+
|
|
6
|
+
DEFAULT_CONFIGURATION = {
|
|
7
|
+
:api_url => "api.7digital.com",
|
|
8
|
+
:api_version => "1.2",
|
|
9
|
+
:media_api_url => "media-eu.7digital.com",
|
|
10
|
+
:media_api_version => "media",
|
|
11
|
+
:account_api_url => "account.7digital.com",
|
|
12
|
+
:account_api_version => "web"
|
|
13
|
+
}.freeze
|
|
14
|
+
|
|
15
|
+
class ClientConfiguration < OpenStruct
|
|
16
|
+
|
|
17
|
+
def initialize(*args)
|
|
18
|
+
|
|
19
|
+
super()
|
|
20
|
+
|
|
21
|
+
self.override_with(Sevendigital::DEFAULT_CONFIGURATION)
|
|
22
|
+
|
|
23
|
+
self.override_with(default_configuration_file)
|
|
24
|
+
|
|
25
|
+
args.each do |configuration_argument|
|
|
26
|
+
self.override_with(configuration_argument)
|
|
27
|
+
end
|
|
28
|
+
puts "Now: #{self.inspect}"
|
|
29
|
+
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def override_with(configuration)
|
|
33
|
+
puts "Now: #{self.inspect}"
|
|
34
|
+
puts "Overriding with #{configuration.class}: #{configuration.inspect}"
|
|
35
|
+
return self unless configuration
|
|
36
|
+
if configuration.kind_of? Hash then
|
|
37
|
+
table.merge!(configuration)
|
|
38
|
+
return self
|
|
39
|
+
end
|
|
40
|
+
if configuration.kind_of? OpenStruct then
|
|
41
|
+
table.merge!(configuration.marshal_dump)
|
|
42
|
+
return self
|
|
43
|
+
end
|
|
44
|
+
if (configuration.kind_of? String) && is_it_yml_file?(configuration) then
|
|
45
|
+
table.merge!(load_configuration_from_yml(configuration, current_environment))
|
|
46
|
+
return self
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def default_configuration_file
|
|
52
|
+
return nil unless defined?(RAILS_ROOT)
|
|
53
|
+
"#{RAILS_ROOT}/config/sevendigital.yml"
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
def current_environment
|
|
57
|
+
defined?(RAILS_ENV) ? RAILS_ENV : nil
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
def load_configuration_from_yml(file_name, environment=nil)
|
|
61
|
+
plain_settings = transform_keys_to_symbols(YAML.load_file(file_name))
|
|
62
|
+
if (plain_settings[:common] || (environment && plain_settings[environment.to_sym])) then
|
|
63
|
+
environment_settings = plain_settings[:common] || {}
|
|
64
|
+
environment_settings.update(plain_settings[environment.to_sym]) if environment
|
|
65
|
+
environment_settings
|
|
66
|
+
else
|
|
67
|
+
plain_settings
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
private
|
|
72
|
+
|
|
73
|
+
def is_it_yml_file?(file_name)
|
|
74
|
+
file_name.include?('.yml')
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
def transform_keys_to_symbols(hash)
|
|
78
|
+
return hash if not hash.is_a?(Hash)
|
|
79
|
+
new_hash = hash.inject({}){|memo,(k,v)| memo[k.to_sym] = transform_keys_to_symbols(v); memo}
|
|
80
|
+
return new_hash
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
end
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
module Sevendigital
|
|
2
|
+
|
|
3
|
+
class Client
|
|
4
|
+
|
|
5
|
+
def api_response_digestor
|
|
6
|
+
@api_response_digestor ||= ApiResponseDigestor.new(self)
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def artist_digestor
|
|
10
|
+
@artist_digestor ||= ArtistDigestor.new(self)
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def basket_digestor
|
|
14
|
+
@basket_digestor ||= BasketDigestor.new(self)
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def basket_item_digestor
|
|
18
|
+
@basket_item_digestor ||= BasketItemDigestor.new(self)
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def chart_item_digestor
|
|
22
|
+
@chart_item_digestor ||= ChartItemDigestor.new(self)
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def download_url_digestor
|
|
26
|
+
@download_url_digestor ||= DownloadUrlDigestor.new(self)
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def format_digestor
|
|
30
|
+
@format_digestor ||= FormatDigestor.new(self)
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def label_digestor
|
|
34
|
+
@label_digestor ||= LabelDigestor.new(self)
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def locker_digestor
|
|
38
|
+
@locker_digestor ||= LockerDigestor.new(self)
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def locker_release_digestor
|
|
42
|
+
@locker_release_digestor ||= LockerReleaseDigestor.new(self)
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def locker_track_digestor
|
|
46
|
+
@locker_track_digestor ||= LockerTrackDigestor.new(self)
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def oauth_request_token_digestor
|
|
50
|
+
@oauth_request_token_digestor ||= OAuthRequestTokenDigestor.new(self)
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def oauth_access_token_digestor
|
|
54
|
+
@oauth_access_token_digestor ||= OAuthAccessTokenDigestor.new(self)
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def pager_digestor
|
|
58
|
+
@pager_digestor ||= PagerDigestor.new(self)
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
def price_digestor
|
|
62
|
+
@price_digestor ||= PriceDigestor.new(self)
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
def release_digestor
|
|
66
|
+
@release_digestor ||= ReleaseDigestor.new(self)
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
def track_digestor
|
|
70
|
+
@track_digestor ||= TrackDigestor.new(self)
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
def tag_digestor
|
|
74
|
+
@tag_digestor ||= TagDigestor.new(self)
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
end
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
module Sevendigital
|
|
2
|
+
|
|
3
|
+
class Client
|
|
4
|
+
|
|
5
|
+
def artist
|
|
6
|
+
@artist_manager ||= ArtistManager.new(self)
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def basket
|
|
10
|
+
@basket_manager ||= BasketManager.new(self)
|
|
11
|
+
end
|
|
12
|
+
def release
|
|
13
|
+
@release_manager ||= ReleaseManager.new(self)
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def tag
|
|
17
|
+
@tag_manager ||= TagManager.new(self)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def track
|
|
21
|
+
@track_manager ||= TrackManager.new(self)
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def user
|
|
25
|
+
@user_manager ||= UserManager.new(self)
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def oauth
|
|
29
|
+
@oauth_manager ||= OAuthManager.new(self)
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
end
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
module Sevendigital
|
|
2
2
|
|
|
3
|
-
class ApiResponseDigestor < Digestor
|
|
3
|
+
class ApiResponseDigestor < Digestor # :nodoc:
|
|
4
4
|
|
|
5
5
|
def from_xml(xml_or_proxy, element_name = :response)
|
|
6
6
|
return from_proxy(ProxyPolice.ensure_is_proxy(xml_or_proxy, element_name))
|
|
@@ -36,8 +36,13 @@ module Sevendigital
|
|
|
36
36
|
end
|
|
37
37
|
|
|
38
38
|
def from_http_response(http_response)
|
|
39
|
-
|
|
40
|
-
|
|
39
|
+
if http_response.is_a?(Net::HTTPSuccess) then
|
|
40
|
+
response = from_xml(http_response.body.to_s)
|
|
41
|
+
else
|
|
42
|
+
response = from_invalid_http_response(http_response)
|
|
43
|
+
end
|
|
44
|
+
response.headers = http_response.header
|
|
45
|
+
response
|
|
41
46
|
end
|
|
42
47
|
|
|
43
48
|
def from_invalid_http_response(http_response)
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
module Sevendigital
|
|
2
|
+
|
|
3
|
+
class BasketDigestor < Digestor # :nodoc:
|
|
4
|
+
|
|
5
|
+
def default_element_name; :basket end
|
|
6
|
+
|
|
7
|
+
def from_proxy(basket_proxy)
|
|
8
|
+
make_sure_not_eating_nil (basket_proxy)
|
|
9
|
+
basket = Sevendigital::Basket.new(@api_client)
|
|
10
|
+
basket.id = basket_proxy.id.to_s
|
|
11
|
+
basket.basket_items = @api_client.basket_item_digestor.list_from_proxy(basket_proxy.basket_items)
|
|
12
|
+
|
|
13
|
+
return basket
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
end
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
module Sevendigital
|
|
2
|
+
|
|
3
|
+
class BasketItemDigestor < Digestor # :nodoc:
|
|
4
|
+
|
|
5
|
+
def default_element_name; :basket_item end
|
|
6
|
+
def default_list_element_name; :basket_items end
|
|
7
|
+
|
|
8
|
+
def from_proxy(basket_item_proxy)
|
|
9
|
+
make_sure_not_eating_nil(basket_item_proxy)
|
|
10
|
+
basket_item = BasketItem.new(@api_client)
|
|
11
|
+
|
|
12
|
+
basket_item.id = basket_item_proxy.id.to_i
|
|
13
|
+
basket_item.type = basket_item_proxy.type.value.downcase.to_sym
|
|
14
|
+
basket_item.artist_name = basket_item_proxy.artist_name.value.to_s
|
|
15
|
+
basket_item.item_name = basket_item_proxy.item_name.value.to_s
|
|
16
|
+
basket_item.release_id = basket_item_proxy.release_id.value.to_i
|
|
17
|
+
basket_item.track_id = basket_item_proxy.track_id.value.to_i
|
|
18
|
+
basket_item.price = @api_client.price_digestor.from_proxy(basket_item_proxy.price)
|
|
19
|
+
|
|
20
|
+
return basket_item
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
end
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
module Sevendigital
|
|
2
2
|
|
|
3
|
-
class
|
|
3
|
+
#internal generic class used for digesting XML responses from the API
|
|
4
|
+
class Digestor # :nodoc:
|
|
4
5
|
|
|
5
6
|
#TODO TEST THIS CRAP
|
|
6
7
|
|
|
@@ -19,10 +20,11 @@ module Sevendigital
|
|
|
19
20
|
def list_from_proxy(object_list_proxy)
|
|
20
21
|
make_sure_not_eating_nil(object_list_proxy)
|
|
21
22
|
list = []
|
|
23
|
+
return list if object_list_proxy.kind_of?(Peachy::SimpleContent)
|
|
22
24
|
if object_list_proxy.send(default_element_name) then
|
|
23
25
|
object_list_proxy.send(default_element_name).each { |object_proxy| list << from_proxy(object_proxy) }
|
|
24
26
|
end
|
|
25
|
-
|
|
27
|
+
paginate_results(object_list_proxy, list)
|
|
26
28
|
end
|
|
27
29
|
|
|
28
30
|
#nested parsing for api methods that return standard object inside containers with no additional (useful) information
|
|
@@ -44,7 +46,9 @@ module Sevendigital
|
|
|
44
46
|
end
|
|
45
47
|
|
|
46
48
|
def paginate_results(xml_results, list)
|
|
47
|
-
@api_client.pager_digestor.from_xml(xml_results)
|
|
49
|
+
pager = @api_client.pager_digestor.from_xml(xml_results)
|
|
50
|
+
return list if !pager
|
|
51
|
+
pager.paginate_list(list)
|
|
48
52
|
end
|
|
49
53
|
|
|
50
54
|
def make_sure_not_eating_nil(proxy)
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
module Sevendigital
|
|
2
|
+
|
|
3
|
+
class DownloadUrlDigestor < Digestor # :nodoc:
|
|
4
|
+
|
|
5
|
+
def default_element_name; :download_url end
|
|
6
|
+
def default_list_element_name; :download_urls end
|
|
7
|
+
|
|
8
|
+
def from_proxy(download_url_proxy)
|
|
9
|
+
make_sure_not_eating_nil (download_url_proxy)
|
|
10
|
+
download_url = DownloadUrl.new()
|
|
11
|
+
download_url.url = download_url_proxy.url.value.to_s
|
|
12
|
+
download_url.format = @api_client.format_digestor.from_proxy(download_url_proxy.format)
|
|
13
|
+
|
|
14
|
+
return download_url
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
module Sevendigital
|
|
2
|
+
|
|
3
|
+
class LockerDigestor < Digestor # :nodoc:
|
|
4
|
+
|
|
5
|
+
def default_element_name; :locker end
|
|
6
|
+
|
|
7
|
+
def from_proxy(locker_proxy)
|
|
8
|
+
make_sure_not_eating_nil (locker_proxy)
|
|
9
|
+
locker = Locker.new(@api_client)
|
|
10
|
+
locker.locker_releases = @api_client.locker_release_digestor.list_from_proxy(locker_proxy.locker_releases)
|
|
11
|
+
|
|
12
|
+
return locker
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
module Sevendigital
|
|
2
|
+
|
|
3
|
+
class LockerReleaseDigestor < Digestor # :nodoc:
|
|
4
|
+
|
|
5
|
+
def default_element_name; :locker_release end
|
|
6
|
+
def default_list_element_name; :locker_releases end
|
|
7
|
+
|
|
8
|
+
def from_proxy(locker_release_proxy)
|
|
9
|
+
make_sure_not_eating_nil(locker_release_proxy)
|
|
10
|
+
locker_release = Sevendigital::LockerRelease.new(@api_client)
|
|
11
|
+
locker_release.release = @api_client.release_digestor.from_xml(locker_release_proxy.release)
|
|
12
|
+
locker_release.locker_tracks = @api_client.locker_track_digestor.list_from_xml(locker_release_proxy.locker_tracks, :locker_tracks)
|
|
13
|
+
|
|
14
|
+
return locker_release
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
module Sevendigital
|
|
2
|
+
|
|
3
|
+
class LockerTrackDigestor < Digestor # :nodoc:
|
|
4
|
+
|
|
5
|
+
def default_element_name; :locker_track end
|
|
6
|
+
def default_list_element_name; :locker_tracks end
|
|
7
|
+
|
|
8
|
+
def from_proxy(locker_track_proxy)
|
|
9
|
+
make_sure_not_eating_nil(locker_track_proxy)
|
|
10
|
+
locker_track = Sevendigital::LockerTrack.new(@api_client)
|
|
11
|
+
locker_track.track = @api_client.track_digestor.from_xml(locker_track_proxy.track)
|
|
12
|
+
locker_track.remaining_downloads = locker_track_proxy.remaining_downloads.value.to_i
|
|
13
|
+
locker_track.purchase_date = DateTime.parse(locker_track_proxy.purchase_date.value.to_s)
|
|
14
|
+
locker_track.download_urls = @api_client.download_url_digestor.list_from_xml(locker_track_proxy.download_urls)
|
|
15
|
+
|
|
16
|
+
return locker_track
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
end
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
module Sevendigital
|
|
2
|
+
|
|
3
|
+
class OAuthAccessTokenDigestor < Digestor # :nodoc:
|
|
4
|
+
|
|
5
|
+
def default_element_name; :oauth_access_token end
|
|
6
|
+
|
|
7
|
+
def from_proxy(token_proxy)
|
|
8
|
+
make_sure_not_eating_nil(token_proxy)
|
|
9
|
+
OAuth::AccessToken.new(@api_client.oauth_consumer, token_proxy.oauth_token.value, token_proxy.oauth_token_secret.value)
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
end
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
module Sevendigital
|
|
2
|
+
|
|
3
|
+
class OAuthRequestTokenDigestor < Digestor # :nodoc:
|
|
4
|
+
|
|
5
|
+
def default_element_name; :oauth_request_token end
|
|
6
|
+
|
|
7
|
+
def from_proxy(token_proxy)
|
|
8
|
+
make_sure_not_eating_nil(token_proxy)
|
|
9
|
+
OAuth::RequestToken.new(@api_client.oauth_consumer, token_proxy.oauth_token.value, token_proxy.oauth_token_secret.value)
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
end
|