class AppHttp

Public Class Methods

new(app, host: '0.0.0.0', port: '9232', filepath: '.', headings: true, debug: false) click to toggle source
# File lib/apphttp.rb, line 14
def initialize(app, host: '0.0.0.0', port: '9232', filepath: '.', 
               headings: true, debug: false)
  
  @app, @host, @port, @debug = app, host, port, debug
  @filepath, @headings = filepath, headings
  @ah = AppHtmlLayer.new(app, filepath: filepath, headings: headings, 
                    debug: debug)
  
end

Public Instance Methods

start() click to toggle source
# File lib/apphttp.rb, line 24
def start

  server = TCPServer.new(@host, @port)

  while (session = server.accept)


    raw_request = session.gets
    request = raw_request[/.[^\s]+(?= HTTP\/1\.\d)/].strip

    puts ('request: ' + request.inspect).debug if @debug
    result, content_type = get(request)
    puts ('content_type: ' + content_type.inspect).debug if @debug

    if result then
      response = result
    else
      response = "404: page not found"
      content_type = 'text/plain'
    end

    session.print "HTTP/1.1 200 OK\r\nContent-type: #{content_type}\r\n" + 
              "Content-Length: #{response.bytesize}\r\n" +
              "Connection: close\r\n"
    session.print "\r\n"
    session.print response
    session.close

  end
end

Private Instance Methods

get(s) click to toggle source
# File lib/apphttp.rb, line 57
def get(s)
  @ah.lookup s
end