Class: ServerlessRedirector::Applicator

Inherits:
Object
  • Object
show all
Defined in:
lib/serverless_redirector/applicator.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(destination, logger) ⇒ Applicator

Returns a new instance of Applicator.



8
9
10
11
12
# File 'lib/serverless_redirector/applicator.rb', line 8

def initialize(destination, logger)
  @destination = destination
  @logger = logger
  @logger_mutex = Mutex.new
end

Instance Attribute Details

#destinationObject (readonly)

Returns the value of attribute destination.



6
7
8
# File 'lib/serverless_redirector/applicator.rb', line 6

def destination
  @destination
end

#loggerObject (readonly)

Returns the value of attribute logger.



6
7
8
# File 'lib/serverless_redirector/applicator.rb', line 6

def logger
  @logger
end

#logger_mutexObject (readonly)

Returns the value of attribute logger_mutex.



6
7
8
# File 'lib/serverless_redirector/applicator.rb', line 6

def logger_mutex
  @logger_mutex
end

Instance Method Details

#apply(operation) ⇒ Object



14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/serverless_redirector/applicator.rb', line 14

def apply(operation)
  case operation
  when ServerlessRedirector::Operations::RemoveRedirect
    destination.remove_key operation.redirect.path
  when ServerlessRedirector::Operations::CreateRedirect, ServerlessRedirector::Operations::UpdateDestination
    rendered = ServerlessRedirector::Renderer.new('redirect.erb').render(url: operation.redirect.url)
    destination.write_key operation.redirect.path, operation.redirect.url, rendered
  end
  logger_mutex.synchronize { logger.info "=> Applied #{operation.summarize}" }
rescue => e
  p e
  raise
end