f63f419a494a959d31fdfd44be616e68aaccaa4c
[feedcatcher.git] / vendor / rails / actionpack / lib / action_controller / vendor / rack-1.0 / rack / lobster.rb
1 require 'zlib'
2
3 require 'rack/request'
4 require 'rack/response'
5
6 module Rack
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])
13
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
24
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]
30 }
31
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
45
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
54 end
55
56 end
57 end
58
59 if $0 == __FILE__
60 require 'rack'
61 require 'rack/showexceptions'
62 Rack::Handler::WEBrick.run \
63 Rack::ShowExceptions.new(Rack::Lint.new(Rack::Lobster.new)),
64 :Port => 9292
65 end