Class: Payloop::Sentinel

Inherits:
Object
  • Object
show all
Defined in:
lib/payloop/sentinel.rb

Instance Method Summary collapse

Constructor Details

#initialize(config) ⇒ Sentinel

Returns a new instance of Sentinel.



5
6
7
# File 'lib/payloop/sentinel.rb', line 5

def initialize(config)
  @config = config
end

Instance Method Details

#raise_if_irrelevant(enabled: true) ⇒ Object

Raises:

  • (TypeError)


9
10
11
12
13
14
# File 'lib/payloop/sentinel.rb', line 9

def raise_if_irrelevant(enabled: true)
  raise TypeError, "enabled must be a bool" unless [true, false].include?(enabled)

  @config.raise_if_irrelevant = enabled
  self
end

#raise_if_irrelevant!(title:, request:, provider: nil, version: nil) ⇒ Object



27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/payloop/sentinel.rb', line 27

def raise_if_irrelevant!(title:, request:, provider: nil, version: nil)
  return unless @config.raise_if_irrelevant

  begin
    relevant, reason = make_relevance_intercept_request(
      title: title,
      request: request,
      provider: provider,
      version: version
    )
  rescue StandardError
    return nil
  end

  raise PayloopRequestInterceptedError, (reason || "Irrelevant request blocked.") unless relevant
end

#set_secs_irrelevant_request_timeout(timeout) ⇒ Object

Intentional explicit ‘set_*` verb prefix — matches JS/Python SDK naming so callers porting code between SDKs see the same surface. See CLAUDE.md “Python SDK is the source of truth” / known divergences.

Raises:

  • (TypeError)


19
20
21
22
23
24
25
# File 'lib/payloop/sentinel.rb', line 19

def set_secs_irrelevant_request_timeout(timeout) # rubocop:disable Naming/AccessorMethodName
  raise TypeError, "timeout must be a Numeric" unless timeout.is_a?(Numeric)
  raise ArgumentError, "timeout must be greater than 0" unless timeout.positive?

  @config.secs_irrelevant_request_timeout = timeout
  self
end