Class: Sevendigital::Client

Inherits:
Object
  • Object
show all
Defined in:
lib/sevendigital/client_digestors.rb,
lib/sevendigital/client.rb,
lib/sevendigital/client_managers.rb

Overview

:nodoc:

Constant Summary collapse

COMMON_REQUEST_PARAMETERS =

if default values for any of these parameters are set in configuration, they will be passed along with every single API request

[:shop_id, :country, :page, :page_size, :image_size]

Instance Method Summary collapse

Constructor Details

#initialize(*args) {|@configuration| ... } ⇒ Client

Returns a new instance of Client.

Yields:



8
9
10
11
12
# File 'lib/sevendigital/client.rb', line 8

def initialize(*args)
  @configuration = Sevendigital::ClientConfiguration.new(*args)
  yield @configuration if block_given?
  @api_operator = hire_api_operator
end

Instance Method Details

#api_host_and_version(api_service = nil) ⇒ Object



78
79
80
81
# File 'lib/sevendigital/client.rb', line 78

def api_host_and_version(api_service=nil)
   service = api_service && !api_service.to_s.empty? ? "#{api_service}_" : ""
   [configuration.send("#{service}api_url".to_sym), configuration.send("#{service}api_version".to_sym)]
end

#api_response_digestorObject



6
7
8
# File 'lib/sevendigital/client_digestors.rb', line 6

def api_response_digestor
  @api_response_digestor ||= ApiResponseDigestor.new(self)
end

#artistArtistManager

Returns:



6
7
8
# File 'lib/sevendigital/client_managers.rb', line 6

def artist
  @artist_manager ||= ArtistManager.new(self)
end

#artist_digestorObject



11
12
13
# File 'lib/sevendigital/client_digestors.rb', line 11

def artist_digestor
  @artist_digestor ||= ArtistDigestor.new(self)
end

#basketBasketManager

Returns:



11
12
13
# File 'lib/sevendigital/client_managers.rb', line 11

def basket
  @basket_manager ||= BasketManager.new(self)
end

#basket_digestorObject



16
17
18
# File 'lib/sevendigital/client_digestors.rb', line 16

def basket_digestor
  @basket_digestor ||= BasketDigestor.new(self)
end

#basket_item_digestorObject



21
22
23
# File 'lib/sevendigital/client_digestors.rb', line 21

def basket_item_digestor
  @basket_item_digestor ||= BasketItemDigestor.new(self)
end

#chart_item_digestorObject



26
27
28
# File 'lib/sevendigital/client_digestors.rb', line 26

def chart_item_digestor
  @chart_item_digestor ||= ChartItemDigestor.new(self)
end

#configurationObject



55
56
57
# File 'lib/sevendigital/client.rb', line 55

def configuration
  @configuration
end

#countryCountrytManager

Returns:

  • (CountrytManager)


16
17
18
# File 'lib/sevendigital/client_managers.rb', line 16

def country
  @country_manager ||= CountryManager.new(self)
end

#country_digestorObject



31
32
33
# File 'lib/sevendigital/client_digestors.rb', line 31

def country_digestor
  @country_digestor ||= CountryDigestor.new(self)
end

#create_api_request(http_method, api_method, parameters, options = {}) ⇒ Object



14
15
16
17
18
19
20
21
22
23
24
# File 'lib/sevendigital/client.rb', line 14

def create_api_request(http_method, api_method, parameters, options = {})
  parameters = options.merge(parameters)
  parameters = add_default_parameters(parameters)
  if http_method != :POST then
    request = ApiRequest.new(http_method, api_method, parameters)
  else
    request = ApiRequest.new(http_method, api_method, {})
    request.form_parameters = parameters
  end
  request
end

#download_url_digestorObject



36
37
38
# File 'lib/sevendigital/client_digestors.rb', line 36

def download_url_digestor
  @download_url_digestor ||= DownloadUrlDigestor.new(self)
end

#format_digestorObject



41
42
43
# File 'lib/sevendigital/client_digestors.rb', line 41

def format_digestor
  @format_digestor ||= FormatDigestor.new(self)
end

#label_digestorObject



46
47
48
# File 'lib/sevendigital/client_digestors.rb', line 46

def label_digestor
  @label_digestor ||= LabelDigestor.new(self)
end

#listListManager

Returns:



21
22
23
# File 'lib/sevendigital/client_managers.rb', line 21

def list
  @list_manager ||= ListManager.new(self)
end

#list_digestorObject



66
67
68
# File 'lib/sevendigital/client_digestors.rb', line 66

def list_digestor
  @list_digestor ||= ListDigestor.new(self)
end

#list_item_digestorObject



71
72
73
# File 'lib/sevendigital/client_digestors.rb', line 71

def list_item_digestor
  @list_item_digestor ||= ListItemDigestor.new(self)
end

#locker_digestorObject



51
52
53
# File 'lib/sevendigital/client_digestors.rb', line 51

def locker_digestor
  @locker_digestor ||= LockerDigestor.new(self)
end

#locker_release_digestorObject



56
57
58
# File 'lib/sevendigital/client_digestors.rb', line 56

def locker_release_digestor
  @locker_release_digestor ||= LockerReleaseDigestor.new(self)
end

#locker_track_digestorObject



61
62
63
# File 'lib/sevendigital/client_digestors.rb', line 61

def locker_track_digestor
  @locker_track_digestor ||= LockerTrackDigestor.new(self)
end

#log(severity, &block) ⇒ Object



59
60
61
62
63
# File 'lib/sevendigital/client.rb', line 59

def log(severity, &block)
  if self.send("#{severity}?")
    logger.info(yield) if block_given?
  end
end

#make_api_request(http_method, api_method, parameters, options = {}) ⇒ Object



26
27
28
29
# File 'lib/sevendigital/client.rb', line 26

def make_api_request(http_method, api_method, parameters, options = {})
  api_request = create_api_request(http_method, api_method, parameters, options)
  operator.call_api(api_request)
end

#make_signed_api_request(http_method, api_method, parameters, options = {}, token = nil) ⇒ Object



31
32
33
34
35
36
37
38
# File 'lib/sevendigital/client.rb', line 31

def make_signed_api_request(http_method, api_method, parameters, options = {}, token = nil)
  api_request = create_api_request(http_method, api_method, parameters, options)
  api_request.require_signature
  api_request.require_secure_connection
  api_request.token = token

  operator.call_api(api_request)
end

#oauthOAuthManager

Returns:



51
52
53
# File 'lib/sevendigital/client_managers.rb', line 51

def oauth
  @oauth_manager ||= OAuthManager.new(self)
end

#oauth_access_token_digestorObject



81
82
83
# File 'lib/sevendigital/client_digestors.rb', line 81

def oauth_access_token_digestor
  @oauth_access_token_digestor ||= OAuthAccessTokenDigestor.new(self)
end

#oauth_consumerObject



40
41
42
43
44
45
46
47
48
49
50
51
52
53
# File 'lib/sevendigital/client.rb', line 40

def oauth_consumer
  host, version = api_host_and_version(:account)

  consumer_options = {
    :authorize_path     => "https://#{host}/#{version}/oauth/authorise",
    :http_method   => :get
  }

  @oauth_consumer ||= OAuth::Consumer.new( \
          @configuration.oauth_consumer_key, \
          @configuration.oauth_consumer_secret, \
          consumer_options \
  )
end

#oauth_request_token_digestorObject



76
77
78
# File 'lib/sevendigital/client_digestors.rb', line 76

def oauth_request_token_digestor
  @oauth_request_token_digestor ||= OAuthRequestTokenDigestor.new(self)
end

#operatorObject



65
66
67
# File 'lib/sevendigital/client.rb', line 65

def operator
  @api_operator
end

#pager_digestorObject



86
87
88
# File 'lib/sevendigital/client_digestors.rb', line 86

def pager_digestor
  @pager_digestor ||= PagerDigestor.new(self)
end

#price_digestorObject



91
92
93
# File 'lib/sevendigital/client_digestors.rb', line 91

def price_digestor
  @price_digestor ||= PriceDigestor.new(self)
end

#releaseReleaseManager

Returns:



26
27
28
# File 'lib/sevendigital/client_managers.rb', line 26

def release
  @release_manager ||= ReleaseManager.new(self)
end

#release_digestorObject



96
97
98
# File 'lib/sevendigital/client_digestors.rb', line 96

def release_digestor
  @release_digestor ||= ReleaseDigestor.new(self)
end

#tagTagManager

Returns:



31
32
33
# File 'lib/sevendigital/client_managers.rb', line 31

def tag
  @tag_manager ||= TagManager.new(self)
end

#tag_digestorObject



106
107
108
# File 'lib/sevendigital/client_digestors.rb', line 106

def tag_digestor
  @tag_digestor ||= TagDigestor.new(self)
end

#trackTrackManager

Returns:



36
37
38
# File 'lib/sevendigital/client_managers.rb', line 36

def track
  @track_manager ||= TrackManager.new(self)
end

#track_digestorObject



101
102
103
# File 'lib/sevendigital/client_digestors.rb', line 101

def track_digestor
  @track_digestor ||= TrackDigestor.new(self)
end

#userUserManager

Returns:



41
42
43
# File 'lib/sevendigital/client_managers.rb', line 41

def user
  @user_manager ||= UserManager.new(self)
end

#user_agent_infoObject



84
85
86
87
88
# File 'lib/sevendigital/client.rb', line 84

def user_agent_info
  app_info = @configuration.app_name ? "/#{@configuration.app_name}" : nil
  app_info += " #{@configuration.app_version}" if app_info && @configuration.app_version
  "#{Sevendigital::NAME} Gem #{Sevendigital::VERSION}#{app_info}"
end

#user_card_digestorObject



111
112
113
# File 'lib/sevendigital/client_digestors.rb', line 111

def user_card_digestor
  @user_card_digestor ||= UserCardDigestor.new(self)
end

#user_digestorObject



116
117
118
# File 'lib/sevendigital/client_digestors.rb', line 116

def user_digestor
  @user_digestor ||= UserDigestor.new(self)
end

#user_payment_cardUserManager

Returns:



46
47
48
# File 'lib/sevendigital/client_managers.rb', line 46

def user_payment_card
  @user_card_manager ||= UserCardManager.new(self)
end

#verbose?Boolean

Returns:

  • (Boolean)


69
70
71
# File 'lib/sevendigital/client.rb', line 69

def verbose?
 very_verbose? || !!@verbose || !!@configuration.verbose
end

#very_verbose?Boolean

Returns:

  • (Boolean)


73
74
75
# File 'lib/sevendigital/client.rb', line 73

def very_verbose?
  @very_verbose || @configuration.verbose.to_s == "very_verbose"
end