Sha256: a329ded33a4ce6c7150f2823aa80bcabbded8846c4848ad0ed9508c89999afb5

Contents?: true

Size: 1.88 KB

Versions: 1

Compression:

Stored size: 1.88 KB

Contents

require 'reel'
require 'json'

# require 'ruby-prof'
#
# RubyProf.start
# RubyProf.pause

module Angelo

  GET =     'GET'
  POST =    'POST'
  PUT =     'PUT'
  DELETE =  'DELETE'
  OPTIONS = 'OPTIONS'

  ROUTABLE = [:get, :post, :put, :delete, :socket]
  HTTPABLE = [:get, :post, :put, :delete]
  STATICABLE = [:get, :head]

  CONTENT_TYPE_HEADER_KEY = 'Content-Type'
  CONTENT_DISPOSITION_HEADER_KEY = 'Content-Disposition'
  CONTENT_LENGTH_HEADER_KEY = 'Content-Length'
  DEFAULT_CONTENT_DISPOSITION = 'attachment'
  ETAG_HEADER_KEY = 'ETag'
  IF_NONE_MATCH_HEADER_KEY = 'If-None-Match'
  LOCATION_HEADER_KEY = 'Location'

  HTML_TYPE = 'text/html'
  JSON_TYPE = 'application/json'
  FORM_TYPE = 'application/x-www-form-urlencoded'
  FILE_TYPE = 'application/octet-stream'

  DEFAULT_ADDR = '127.0.0.1'
  DEFAULT_PORT = 4567

  DEFAULT_VIEW_DIR = 'views'
  DEFAULT_PUBLIC_DIR = 'public'

  DEFAULT_RESPONSE_HEADERS = {
    CONTENT_TYPE_HEADER_KEY => HTML_TYPE
  }

  NOT_FOUND = 'Not Found'

  LOG_FORMAT = '%s - - "%s %s%s HTTP/%s" %d %s'

  DEFAULT_PING_TIME = 30

  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.debug LOG_FORMAT % [
      remote_ip[],
      request.method,
      request.path,
      request.query_string.nil? ? nil : '?'+request.query_string,
      request.version,
      Symbol === status ? HTTP::Response::SYMBOL_TO_STATUS_CODE[status] : status,
      body_size
    ]

  end

end

require 'angelo/version'
require 'angelo/params_parser'
require 'angelo/server'
require 'angelo/base'
require 'angelo/responder'
require 'angelo/responder/websocket'

# trap "INT" do
#   result = RubyProf.stop
#   printer = RubyProf::MultiPrinter.new(result)
#   printer.print(path: './profiler', profile: 'foo')
#   exit
# end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
angelo-0.1.5 lib/angelo.rb