/usr/share/tdiary/tdiary/dispatcher.rb is in tdiary 3.2.2-6.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 | # -*- coding: utf-8; -*-
require 'stringio'
module TDiary
class Dispatcher
autoload :IndexMain, 'tdiary/dispatcher/index_main'
autoload :UpdateMain, 'tdiary/dispatcher/update_main'
TARGET = {
:index => IndexMain,
:update => UpdateMain
}
def initialize( target )
@target = TARGET[target]
end
# FIXME rename method name to more suitable one.
def dispatch_cgi( request, cgi = CGI.new )
result = @target.run( request, cgi )
result.headers.reject!{|k,v| k.to_s.downcase == "status" }
result.to_a
end
class << self
# stolen from Rack::Handler::CGI.send_headers
def send_headers( status, headers )
begin
$stdout.print CGI.new.header( {'Status'=>status}.merge(headers) )
rescue EOFError
charset = headers.delete( 'charset' )
headers['Content-Type'] ||= headers.delete( 'type' )
headers['Content-Type'] += "; charset=#{charset}" if charset
$stdout.print headers.map{|k,v| "#{k}: #{v}\r\n"}.join << "\r\n"
end
$stdout.flush
end
# stolen from Rack::Handler::CGI.send_body
def send_body( body )
body.lines.each { |part|
$stdout.print part
$stdout.flush
}
end
# FIXME temporary method during (scratch) refactoring
def extract_status_for_legacy_tdiary( head )
status_str = head.delete('status')
return 200 if !status_str || status_str.empty?
if m = status_str.match(/(\d+)\s(.+)\Z/)
m[1].to_i
else
200
end
end
def index
new( :index )
end
def update
new( :update )
end
private :new
end
end
end
# Local Variables:
# mode: ruby
# indent-tabs-mode: t
# tab-width: 3
# ruby-indent-level: 3
# End:
|