class Bolt::HTTPServer

Public Class Methods

new(options={}) click to toggle source
# File lib/bolt/serve.rb, line 117
def initialize(options={})
  options[:host] ||= '127.0.0.1'
  options[:port] ||= '2658'

  @server = TCPServer.new(options[:host], options[:port])
  puts "## Starting BoltServe on http://#{options[:host]}:#{options[:port]} ## \n\n"
end

Public Instance Methods

listen() click to toggle source
# File lib/bolt/serve.rb, line 125
def listen()
  @session = @server.accept
  @request = {}
  @request['headers'] = {}

  while(header = @session.gets)
    if(header == "\r\n")
      break
    elsif(!header.scan(/GET .* HTTP.*/).empty?)
      @request['GET'] = header.gsub(/GET /, '').gsub(/ HTTP.*/, '').strip
    else
      h = header.split(':')
      @request['headers'][h[0]] = h[1].strip unless h[1].nil?
    end
  end

  puts "Request from: #{@session.addr[2]} \n\tfor: #{@request['GET']}\n\n"
  @request
end
reply(body, status = '200', headers={}) click to toggle source
# File lib/bolt/serve.rb, line 145
def reply(body, status = '200', headers={})
  headers['Content-Length'] ||= body.length
  headers['Connection'] ||= 'close'
  headers['Date'] ||= Time.now.getgm
  headers['Last-Modified'] ||= headers['Date']    
  headers['Content-Type'] ||= 'text/html; charset=UTF-8'

  headers['Server'] = 'Bolt Development Server'

  @session.print("HTTP/1.1 #{status}\n")
  headers.each do |header, value|
    @session.print("#{header}: #{value}\n")
  end

  @session.print("\n")    
  @session.print(body)
  @session.print("\r\n")

  @session.close()
end