class Clickatell::Catcher::Rack::Middleware

Attributes

messages[R]

Public Class Methods

new(app, options = {}) click to toggle source
# File lib/clickatell/catcher/rack.rb, line 14
def initialize(app, options = {})
  @app = app
  @messages = Clickatell::Catcher::Rack::SharedArray.new
  @logger = options[:logger] || ::Rack::NullLogger.new(nil)
  @message_adder = MessageAdder.new(@messages)
  @messages_renderer = MessagesRenderer.new(@messages)
end

Public Instance Methods

add_message(request_body) click to toggle source
# File lib/clickatell/catcher/rack.rb, line 22
def add_message(request_body)
  @message_adder.add(request_body)
  @logger.debug("[#{Process.pid}] Messages: " + @messages.inspect)
  @message_adder.rack_response
end
call(env) click to toggle source
# File lib/clickatell/catcher/rack.rb, line 41
def call(env)
  request = ::Rack::Request.new(env)
  if request.path == '/rest/message'
    rest_message(request)
  else
    status, headers, body = @app.call(env)

    # return result
    [status, headers, body]
  end
end
render_messages() click to toggle source
# File lib/clickatell/catcher/rack.rb, line 28
def render_messages
  @logger.debug("[#{Process.pid}] Rendering Messages: " + @messages.inspect)
  @messages_renderer.rack_response
end
rest_message(request) click to toggle source
# File lib/clickatell/catcher/rack.rb, line 33
def rest_message(request)
  if request.get?
    render_messages
  else
    add_message(request.body.read)
  end
end