Class: IdempotentRequest::RequestManager

Inherits:
Object
  • Object
show all
Defined in:
lib/idempotent-request/request_manager.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(request, config) ⇒ RequestManager

Returns a new instance of RequestManager.



5
6
7
8
9
# File 'lib/idempotent-request/request_manager.rb', line 5

def initialize(request, config)
  @request = request
  @storage = config.fetch(:storage)
  @callback = config[:callback]
end

Instance Attribute Details

#requestObject (readonly)

Returns the value of attribute request.



3
4
5
# File 'lib/idempotent-request/request_manager.rb', line 3

def request
  @request
end

#storageObject (readonly)

Returns the value of attribute storage.



3
4
5
# File 'lib/idempotent-request/request_manager.rb', line 3

def storage
  @storage
end

Instance Method Details

#lockObject



11
12
13
# File 'lib/idempotent-request/request_manager.rb', line 11

def lock
  storage.lock(key)
end

#readObject



19
20
21
22
23
24
25
# File 'lib/idempotent-request/request_manager.rb', line 19

def read
  status, headers, response = parse_data(storage.read(key)).values

  return unless status
  run_callback(:detected, key: request.key)
  [status, headers, response]
end

#unlockObject



15
16
17
# File 'lib/idempotent-request/request_manager.rb', line 15

def unlock
  storage.unlock(key)
end

#write(*data) ⇒ Object



27
28
29
30
31
32
33
34
35
36
# File 'lib/idempotent-request/request_manager.rb', line 27

def write(*data)
  status, headers, response = data
  response = response.body if response.respond_to?(:body)

  if (200..226).cover?(status)
    storage.write(key, payload(status, headers, response))
  end

  data
end