Module: WS

Defined in:
lib/ws.rb

Class Method Summary collapse

Class Method Details

.start_server(options) ⇒ Object



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/ws.rb', line 4

def self.start_server(options)
  server = TCPServer.new("127.0.0.1", options[:port])
  loop do
    Thread.start(server.accept) do |conn|
      file = conn.gets.scan(/(?<=\/).*(?=\sHTTP)/)[0].split("/")
      file_path = File.join(options[:directory], file)
      file_path = File.join(file_path, options[:index]) if File.directory? file_path
      mime_type = get_mime_type file_path
      begin
        file_handle = File.open(file_path, "r")
        puts "#{Time.now.inspect}: Sending #{file_path} to client." if options[:verbose]
        conn.print get_header("200/OK", mime_type)
        conn.print file_handle.read()
        file_handle.close
      rescue Errno::ENOENT
        puts "#{Time.now.inspect}: Not Found: #{file_path}" if options[:verbose]
        conn.print get_header("404/NOT FOUND", "text/html")
        conn.print "404: File not found."
      end
      conn.close
    end
  end
end