summaryrefslogtreecommitdiff
path: root/tools/server.rb
diff options
context:
space:
mode:
authorFlorian Frank <flori@ping.de>2009-08-24 16:20:32 +0200
committerFlorian Frank <flori@ping.de>2009-08-24 16:20:32 +0200
commit10f03df1f6a54edaae86e87e1fd7d9a6a6a319f1 (patch)
treed7133d6f5ba8bc2f195ee6e070b34331bd4f5d04 /tools/server.rb
downloadjson-10f03df1f6a54edaae86e87e1fd7d9a6a6a319f1.tar.gz
initial commit
Diffstat (limited to 'tools/server.rb')
-rwxr-xr-xtools/server.rb61
1 files changed, 61 insertions, 0 deletions
diff --git a/tools/server.rb b/tools/server.rb
new file mode 100755
index 0000000..084377f
--- /dev/null
+++ b/tools/server.rb
@@ -0,0 +1,61 @@
+#!/usr/bin/env ruby
+
+require 'webrick'
+include WEBrick
+$:.unshift 'ext'
+$:.unshift 'lib'
+require 'json'
+
+class JSONServlet < HTTPServlet::AbstractServlet
+ @@count = 1
+
+ def do_GET(req, res)
+ obj = {
+ "TIME" => Time.now.strftime("%FT%T"),
+ "foo" => "Bär",
+ "bar" => "© ≠ €!",
+ 'a' => 2,
+ 'b' => 3.141,
+ 'COUNT' => @@count += 1,
+ 'c' => 'c',
+ 'd' => [ 1, "b", 3.14 ],
+ 'e' => { 'foo' => 'bar' },
+ 'g' => "松本行弘",
+ 'h' => 1000.0,
+ 'i' => 0.001,
+ 'j' => "\xf0\xa0\x80\x81",
+ }
+ res.body = JSON.generate obj
+ res['Content-Type'] = "application/json"
+ end
+end
+
+def create_server(err, dir, port)
+ dir = File.expand_path(dir)
+ err.puts "Surf to:", "http://#{Socket.gethostname}:#{port}"
+
+ s = HTTPServer.new(
+ :Port => port,
+ :DocumentRoot => dir,
+ :Logger => WEBrick::Log.new(err),
+ :AccessLog => [
+ [ err, WEBrick::AccessLog::COMMON_LOG_FORMAT ],
+ [ err, WEBrick::AccessLog::REFERER_LOG_FORMAT ],
+ [ err, WEBrick::AccessLog::AGENT_LOG_FORMAT ]
+ ]
+ )
+ s.mount("/json", JSONServlet)
+ s
+end
+
+default_dir = File.expand_path(File.join(File.dirname(__FILE__), '..', 'data'))
+dir = ARGV.shift || default_dir
+port = (ARGV.shift || 6666).to_i
+s = create_server(STDERR, dir, 6666)
+t = Thread.new { s.start }
+trap(:INT) do
+ s.shutdown
+ t.join
+ exit
+end
+sleep