1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- #!/usr/bin/env ruby
- # encoding: utf-8
- 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
|