Class: SingleServing::Server

Inherits:
Object
  • Object
show all
Defined in:
lib/singleserving/server.rb

Instance Method Summary collapse

Instance Method Details

#get_ext(file) ⇒ Object



6
7
8
9
10
11
12
# File 'lib/singleserving/server.rb', line 6

def get_ext(file)
  # Not a great way to get the extension.
  # If there is no '.' character it will return the entire string
  # which is fine if we are looking it up in the DefaultMimeTypes
  # hash, because we probablly won't get a match.
  WEBrick::HTTPUtils::DefaultMimeTypes[file[/([^\.]+$)/]] || "application/octet-stream"
end

#serve(file, port = 9000) ⇒ Object



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/singleserving/server.rb', line 14

def serve(file, port=9000)
  server = TCPServer.open(port)  # Socket to listen on port 2000
  client, sock_addr = server.accept       # Wait for a client to connect
  # We don't care about the incoming headers, we return the file every time
  #puts client.readline
  #raw_header = ""
  #while line = client.readline
  #  break if /\A(\r\n|\n)\z/om =~ line
  #  raw_header << line
  #end

  client.puts "HTTP/100.0 200 OK\r"
  client.puts "Connection: Keep-Alive\r"
  client.puts "Content-Type: #{get_ext(file)}\r"
  client.puts "Server: SingleServe\r"
  client.puts "Content-Disposition: filename=#{File.basename file}\r"
  client.puts "Content-Length: #{File.size file}\r"
  client.puts "\r"
  client.print File.open(file, 'r').read
  client.close
end