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