Class: BaseService::Matcher

Inherits:
Object
  • Object
show all
Defined in:
lib/base_service/matcher.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(service) ⇒ Matcher

Returns a new instance of Matcher.



3
4
5
# File 'lib/base_service/matcher.rb', line 3

def initialize(service)
  @service, @specific_failure_blocks = service, {}
end

Instance Attribute Details

#generic_failure_blockObject

Returns the value of attribute generic_failure_block.



25
26
27
# File 'lib/base_service/matcher.rb', line 25

def generic_failure_block
  @generic_failure_block
end

#generic_success_blockObject

Returns the value of attribute generic_success_block.



25
26
27
# File 'lib/base_service/matcher.rb', line 25

def generic_success_block
  @generic_success_block
end

#serviceObject (readonly)

Returns the value of attribute service.



24
25
26
# File 'lib/base_service/matcher.rb', line 24

def service
  @service
end

#specific_failure_blocksObject (readonly)

Returns the value of attribute specific_failure_blocks.



24
25
26
# File 'lib/base_service/matcher.rb', line 24

def specific_failure_blocks
  @specific_failure_blocks
end

Instance Method Details

#appropriate_failure_blockObject



32
33
34
# File 'lib/base_service/matcher.rb', line 32

def appropriate_failure_block
  specific_failure_blocks[failure_code] || generic_failure_block || raise_failure_not_handled
end

#failure(code = nil, &block) ⇒ Object



11
12
13
14
15
16
17
# File 'lib/base_service/matcher.rb', line 11

def failure(code = nil, &block)
  if code.nil?
    self.generic_failure_block = block
  else
    specific_failure_blocks[code] = block
  end
end

#failure_handled?Boolean

Returns:

  • (Boolean)


28
29
30
# File 'lib/base_service/matcher.rb', line 28

def failure_handled?
  generic_failure_block.present? || specific_failure_blocks[failure_code].present?
end

#raise_failure_not_handledObject

Raises:



36
37
38
# File 'lib/base_service/matcher.rb', line 36

def raise_failure_not_handled
  raise Failure.new(service, result, failure_code)
end

#resolveObject



19
20
21
22
# File 'lib/base_service/matcher.rb', line 19

def resolve
  return appropriate_failure_block.call result if !was_success?
  generic_success_block.call result if generic_success_block.present?
end

#success(&block) ⇒ Object



7
8
9
# File 'lib/base_service/matcher.rb', line 7

def success(&block)
  self.generic_success_block = block
end