Class: Lightspeed::Request

Inherits:
Object
  • Object
show all
Defined in:
lib/lightspeed/request.rb

Constant Summary collapse

SECONDS_TO_WAIT_WHEN_THROTTLED =

API requirements.

60

Class Attribute Summary collapse

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(client, method:, path:, params: nil, body: nil) ⇒ Request

Returns a new instance of Request.



26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/lightspeed/request.rb', line 26

def initialize(client, method:, path:, params: nil, body: nil)
  @method = method
  @params = params
  @path = path
  @bucket_max = Float::INFINITY
  @bucket_level = 0
  @http = Net::HTTP.new(self.class.base_host, 443)
  @http.use_ssl = true
  @raw_request = request_class.new(uri)
  @raw_request.body = body if body
  @raw_request.set_form_data(@params) if @params && @method != :get
  @client = client
  set_authorization_header
end

Class Attribute Details

.verbose=(value) ⇒ Object (writeonly)

Sets the attribute verbose

Parameters:

  • value

    the value to set the attribute verbose to.



11
12
13
# File 'lib/lightspeed/request.rb', line 11

def verbose=(value)
  @verbose = value
end

Instance Attribute Details

#bucket_levelObject

Returns the value of attribute bucket_level.



6
7
8
# File 'lib/lightspeed/request.rb', line 6

def bucket_level
  @bucket_level
end

#bucket_maxObject

Returns the value of attribute bucket_max.



6
7
8
# File 'lib/lightspeed/request.rb', line 6

def bucket_max
  @bucket_max
end

#raw_requestObject

Returns the value of attribute raw_request.



6
7
8
# File 'lib/lightspeed/request.rb', line 6

def raw_request
  @raw_request
end

Class Method Details

.base_hostObject



18
19
20
# File 'lib/lightspeed/request.rb', line 18

def self.base_host
  "api.merchantos.com"
end

.base_pathObject



22
23
24
# File 'lib/lightspeed/request.rb', line 22

def self.base_path
  "/API"
end

.verbose?Boolean

Returns:

  • (Boolean)


14
15
16
# File 'lib/lightspeed/request.rb', line 14

def self.verbose?
  !! @verbose
end

Instance Method Details

#performObject



55
56
57
58
59
60
61
62
63
64
65
# File 'lib/lightspeed/request.rb', line 55

def perform
  perform_raw
rescue Lightspeed::Error::Throttled
  retry_throttled_request
rescue Lightspeed::Error::Unauthorized => e
  raise e if @attempted_oauth_token_refresh
  @client.refresh_oauth_token
  set_authorization_header
  @attempted_oauth_token_refresh = true
  perform
end

#perform_rawObject



45
46
47
48
49
50
51
52
53
# File 'lib/lightspeed/request.rb', line 45

def perform_raw
  response = @http.request(raw_request)
  extract_rate_limits(response)
  if response.code == "200"
    handle_success(response)
  else
    handle_error(response)
  end
end

#set_authorization_headerObject



41
42
43
# File 'lib/lightspeed/request.rb', line 41

def set_authorization_header
  @raw_request["Authorization"] = "Bearer #{@client.oauth_token}" if @client.oauth_token
end