Module: Angelo

Defined in:
lib/angelo.rb,
lib/angelo/base.rb,
lib/angelo/stash.rb,
lib/angelo/server.rb,
lib/angelo/version.rb,
lib/angelo/tilt/erb.rb,
lib/angelo/responder.rb,
lib/angelo/mustermann.rb,
lib/angelo/params_parser.rb,
lib/angelo/minitest/helpers.rb,
lib/angelo/responder/websocket.rb,
lib/angelo/responder/eventsource.rb

Overview

require ‘ruby-prof’

RubyProf.start RubyProf.pause

Defined Under Namespace

Modules: Minitest, Mustermann, ParamsParser, Stash, Tilt Classes: Base, FormEncodingError, HALT_STRUCT, RequestError, Responder, Server

Constant Summary collapse

GET =
'GET'
POST =
'POST'
PUT =
'PUT'
DELETE =
'DELETE'
OPTIONS =
'OPTIONS'
ROUTABLE =
[:get, :post, :put, :delete, :options, :websocket]
HTTPABLE =
[:get, :post, :put, :delete, :options]
STATICABLE =
[:get, :head]
CONTENT_TYPE_HEADER_KEY =
'Content-Type'
CONTENT_DISPOSITION_HEADER_KEY =
'Content-Disposition'
CONTENT_LENGTH_HEADER_KEY =
'Content-Length'
ATTACHMENT_CONTENT_DISPOSITION =
'attachment; filename="%s"'
ETAG_HEADER_KEY =
'ETag'
IF_NONE_MATCH_HEADER_KEY =
'If-None-Match'
LOCATION_HEADER_KEY =
'Location'
SSE_HEADER =
{ CONTENT_TYPE_HEADER_KEY => 'text/event-stream' }
HTML_TYPE =
'text/html'
JSON_TYPE =
'application/json'
FORM_TYPE =
'application/x-www-form-urlencoded'
FILE_TYPE =
'application/octet-stream'
JS_TYPE =
'text/javascript'
DEFAULT_ADDR =
'127.0.0.1'
DEFAULT_PORT =
4567
DEFAULT_VIEWS_DIR =
'views'
DEFAULT_PUBLIC_DIR =
'public'
DEFAULT_LOG_LEVEL =
::Logger::INFO
DEFAULT_RESPONSE_LOG_LEVEL =
:info
DEFAULT_RESPONSE_HEADERS =
{
  CONTENT_TYPE_HEADER_KEY => HTML_TYPE
}
NOT_FOUND =
'Not Found'
LOG_FORMAT =
'%s - - "%s %s HTTP/%s" %d %s'
DEFAULT_PING_TIME =
30
UNDERSCORE =
'_'
DASH =
'-'
EMPTY_STRING =
''
NEWLINE =
"\n"
SSE_DATA_TEMPLATE =
"data: %s\n\n"
SSE_EVENT_TEMPLATE =
"event: %s\ndata: %s\n\n"
VERSION =
'0.3.1'

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.response_log_levelObject



69
70
71
# File 'lib/angelo.rb', line 69

def response_log_level
  @response_log_level ||= DEFAULT_RESPONSE_LOG_LEVEL
end

Class Method Details

.log(connection, request, socket, status, body_size = '-') ⇒ Object



75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
# File 'lib/angelo.rb', line 75

def self.log connection, request, socket, status, body_size = '-'

  remote_ip = ->{
    if socket.nil?
      connection.remote_ip rescue 'unknown'
    else
      socket.peeraddr(false)[3]
    end
  }

  Celluloid::Logger.__send__ Angelo.response_log_level, LOG_FORMAT % [
    remote_ip[],
    request.method,
    request.url,
    request.version,
    Symbol === status ? HTTP::Response::SYMBOL_TO_STATUS_CODE[status] : status,
    body_size
  ]

end