Class: Aranea::Failure

Inherits:
Object
  • Object
show all
Defined in:
lib/aranea/failure_repository.rb

Overview

TODO: Look into moving whitelisting of consumer hostnames to here and allowing it to be configurable via the consuming application

Defined Under Namespace

Classes: Repository

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(params) ⇒ Failure

Returns a new instance of Failure.



33
34
35
36
# File 'lib/aranea/failure_repository.rb', line 33

def initialize(params)
  @pattern = Regexp.new(params[:pattern])
  @response = params[:failure]
end

Instance Attribute Details

#expiration_dateObject

Returns the value of attribute expiration_date.



31
32
33
# File 'lib/aranea/failure_repository.rb', line 31

def expiration_date
  @expiration_date
end

Class Method Details

.create(params) ⇒ Object



15
16
17
18
19
20
21
22
23
# File 'lib/aranea/failure_repository.rb', line 15

def create(params)
  if failure = retrieve_failure
    raise FailureFailure, "A failure is already in progress (#{failure})."
  else
    failure = new(params)
    Repository.store(failure, params[:minutes].minutes)
    failure
  end
end

.currentObject



11
12
13
# File 'lib/aranea/failure_repository.rb', line 11

def current
  retrieve_failure || NullFailure.new
end

.retrieve_failureObject



25
26
27
# File 'lib/aranea/failure_repository.rb', line 25

def retrieve_failure
  Repository.get
end

Instance Method Details

#respond!Object



42
43
44
45
46
47
48
# File 'lib/aranea/failure_repository.rb', line 42

def respond!
  if @response == 'timeout'
    raise ::Faraday::Error::TimeoutError, 'Fake failure from Aranea'
  else
    ::Faraday::Response.new(status: @response.to_i, body: 'Fake failure from Aranea', response_headers: {})
  end
end

#should_fail?(request_env, app) ⇒ Boolean

Returns:

  • (Boolean)


38
39
40
# File 'lib/aranea/failure_repository.rb', line 38

def should_fail?(request_env, app)
  @pattern.match(request_env[:url].to_s)
end

#to_sObject



50
51
52
# File 'lib/aranea/failure_repository.rb', line 50

def to_s
  "Failure on #{@pattern.inspect} ending at approximately #@expiration_date"
end