Class: Sevendigital::ApiRequest

Inherits:
Object
  • Object
show all
Defined in:
lib/sevendigital/api_request.rb

Overview

Abstraction of a HTTP API request, ApiOperator uses this ApiRequest to build a real HTTP requests

Constant Summary collapse

WRAPPER_PARAMETERS =
[:cache_max_age]

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(http_method, api_method, parameters, options = nil) ⇒ ApiRequest

Returns a new instance of ApiRequest.



13
14
15
16
17
18
19
20
21
# File 'lib/sevendigital/api_request.rb', line 13

def initialize(http_method, api_method, parameters, options=nil)
  @api_method = api_method
  @parameters = parameters
  @options = options || Hash.new
  @signature_scheme = :header
  @http_method = http_method
  comb_parameters(parameters)
  @form_parameters = Hash.new
end

Instance Attribute Details

#api_methodObject (readonly)

:nodoc:



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

def api_method
  @api_method
end

#api_serviceObject

Returns the value of attribute api_service.



7
8
9
# File 'lib/sevendigital/api_request.rb', line 7

def api_service
  @api_service
end

#form_parametersObject



23
24
25
# File 'lib/sevendigital/api_request.rb', line 23

def form_parameters
  comb_parameters(@form_parameters)
end

#http_methodObject

Returns the value of attribute http_method.



7
8
9
# File 'lib/sevendigital/api_request.rb', line 7

def http_method
  @http_method
end

#optionsObject (readonly)

:nodoc:



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

def options
  @options
end

#parametersObject (readonly)

:nodoc:



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

def parameters
  @parameters
end

#signature_schemeObject

Returns the value of attribute signature_scheme.



8
9
10
# File 'lib/sevendigital/api_request.rb', line 8

def signature_scheme
  @signature_scheme
end

#signedObject (readonly)

:nodoc:



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

def signed
  @signed
end

#tokenObject

Returns the value of attribute token.



7
8
9
# File 'lib/sevendigital/api_request.rb', line 7

def token
  @token
end

Instance Method Details

#comb_parameter(parameters, correct_name, alternative_names) ⇒ Object



52
53
54
55
56
57
58
59
60
# File 'lib/sevendigital/api_request.rb', line 52

def comb_parameter(parameters, correct_name, alternative_names)
  param_value = nil
  alternative_names = [alternative_names] unless alternative_names.is_a?(Array)
  alternative_names.each do |alternative_name|
    param_value ||= parameters[alternative_name]
    parameters.delete(alternative_name)
  end
  parameters[correct_name] ||= param_value if param_value
end

#comb_parameters(params) ⇒ Object



43
44
45
46
47
48
49
50
# File 'lib/sevendigital/api_request.rb', line 43

def comb_parameters(params)
  comb_parameter(params, :pageSize, [:page_size, :per_page])
  comb_parameter(params, :shopId, :shop_id)
  comb_parameter(params, :imageSize, :image_size)
  remove_empty_parameters(params)
  remove_wrapper_options(params)
  params
end

#remove_empty_parameters(parameters) ⇒ Object



62
63
64
# File 'lib/sevendigital/api_request.rb', line 62

def remove_empty_parameters(parameters)
  parameters.delete_if { |key, value| value.nil? }
end

#remove_wrapper_options(parameters) ⇒ Object



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

def remove_wrapper_options(parameters)
  @options.merge!(parameters.select{|key, value| WRAPPER_PARAMETERS.include?(key) })
  parameters.delete_if { |key| WRAPPER_PARAMETERS.include?(key) }
end

#require_secure_connectionObject



39
40
41
# File 'lib/sevendigital/api_request.rb', line 39

def require_secure_connection
  @secure = true
end

#require_signatureObject



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

def require_signature
  @signed = true
end

#requires_secure_connection?Boolean

Returns:

  • (Boolean)


35
36
37
# File 'lib/sevendigital/api_request.rb', line 35

def requires_secure_connection?
  @secure == true
end

#requires_signature?Boolean

Returns:

  • (Boolean)


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

def requires_signature?
  @signed == true
end