public
Description: a modular Ruby webserver interface
Homepage: http://rack.rubyforge.org/
Clone URL: git://github.com/chneukirchen/rack.git
rack / lib / rack / lobster.rb
8a2cecc2 » chneukirchen 2007-02-16 Add a lobster 1 require 'zlib'
2
7ade69bd » chneukirchen 2007-03-03 Add some missing tests 3 require 'rack/request'
4 require 'rack/response'
5
8a2cecc2 » chneukirchen 2007-02-16 Add a lobster 6 module Rack
376fa1e3 » chneukirchen 2007-03-01 Add RDocs 7 # Paste has a Pony, Rack has a Lobster!
8 class Lobster
9 LobsterString = Zlib::Inflate.inflate("eJx9kEEOwyAMBO99xd7MAcytUhPlJyj2
10 P6jy9i4k9EQyGAnBarEXeCBqSkntNXsi/ZCvC48zGQoZKikGrFMZvgS5ZHd+aGWVuWwhVF0
11 t1drVmiR42HcWNz5w3QanT+2gIvTVCiE1lm1Y0eU4JGmIIbaKwextKn8rvW+p5PIwFl8ZWJ
12 I8jyiTlhTcYXkekJAzTyYN6E08A+dk8voBkAVTJQ==".delete("\n ").unpack("m*")[0])
8a2cecc2 » chneukirchen 2007-02-16 Add a lobster 13
376fa1e3 » chneukirchen 2007-03-01 Add RDocs 14 LambdaLobster = lambda { |env|
15 if env["QUERY_STRING"].include?("flip")
16 lobster = LobsterString.split("\n").
17 map { |line| line.ljust(42).reverse }.
18 join("\n")
19 href = "?"
20 else
21 lobster = LobsterString
22 href = "?flip"
23 end
230d62c7 » chneukirchen 2007-05-16 Fix trailing whitespace. S... 24
4a04950f » chneukirchen 2008-08-28 Make Rack::Lobster set Cont... 25 content = ["<title>Lobstericious!</title>",
26 "<pre>", lobster, "</pre>",
27 "<a href='#{href}'>flip!</a>"]
28 length = content.inject(0) { |a,e| a+e.size }.to_s
29 [200, {"Content-Type" => "text/html", "Content-Length" => length}, content]
376fa1e3 » chneukirchen 2007-03-01 Add RDocs 30 }
230d62c7 » chneukirchen 2007-05-16 Fix trailing whitespace. S... 31
376fa1e3 » chneukirchen 2007-03-01 Add RDocs 32 def call(env)
33 req = Request.new(env)
34 if req.GET["flip"] == "left"
35 lobster = LobsterString.split("\n").
36 map { |line| line.ljust(42).reverse }.
37 join("\n")
38 href = "?flip=right"
39 elsif req.GET["flip"] == "crash"
40 raise "Lobster crashed"
41 else
42 lobster = LobsterString
43 href = "?flip=left"
44 end
230d62c7 » chneukirchen 2007-05-16 Fix trailing whitespace. S... 45
4a04950f » chneukirchen 2008-08-28 Make Rack::Lobster set Cont... 46 res = Response.new
47 res.write "<title>Lobstericious!</title>"
48 res.write "<pre>"
49 res.write lobster
50 res.write "</pre>"
51 res.write "<p><a href='#{href}'>flip!</a></p>"
52 res.write "<p><a href='?flip=crash'>crash!</a></p>"
53 res.finish
8a2cecc2 » chneukirchen 2007-02-16 Add a lobster 54 end
116f0ef5 » chneukirchen 2007-02-17 Remove trailing whitespace ... 55
376fa1e3 » chneukirchen 2007-03-01 Add RDocs 56 end
8a2cecc2 » chneukirchen 2007-02-16 Add a lobster 57 end
58
59 if $0 == __FILE__
60 require 'rack'
69f11f60 » chneukirchen 2007-02-17 Add Rack::ShowExceptions 61 require 'rack/showexceptions'
62 Rack::Handler::WEBrick.run \
376fa1e3 » chneukirchen 2007-03-01 Add RDocs 63 Rack::ShowExceptions.new(Rack::Lint.new(Rack::Lobster.new)),
ed4bba84 » chneukirchen 2007-03-03 Fix things that should have... 64 :Port => 9292
8a2cecc2 » chneukirchen 2007-02-16 Add a lobster 65 end