モバイルサイト用のヘッダ出力を Python で書いてみた - Tosshi Note
モバイルサイトを3キャリアでほぼ共通化して作りたい - http://d.hatena.ne.jp/tilfin/20080530/1212376626
上記のエントリで DoCoMo, au, SoftBank 用のモバイルサイトを XHTML で作成する場合のそれぞれの書き方を調べた。
その書き方に従って HTTP ヘッダと XHTML 宣言部分を出力する CGI サンプルを Python で書いてみた。
で書いたスクリプトを今度は Ruby で書いてみました。
require 'kconv' class UserAgent def initialize(ua) if ua.nil? @kind = 0 elsif ua.match(/^DoCoMo/) @kind = 1 elsif ua.match(/^KDDI/) @kind = 2 elsif ua.match(/^SoftBank|Vodafone|MOT/) @kind = 3 else @kind = 0 end end def is_mobile return @kind > 0 end def is_docomo return @kind == 1 end def is_au return @kind == 2 end def is_softbank return @kind == 3 end def get_content_type if @kind > 0 return "Content-Type:application/xhtml+xml; charset=Shift_JIS" else return "Content-Type:text/html; charset=UTF-8" end end def get_declare if @kind == 1 return <<EOF <?xml version="1.0" encoding="Shift_JIS"?> <!DOCTYPE html PUBLIC "-//i-mode group (ja)//DTD XHTML i-XHTML(Locale/Ver.=ja/1.0) 1.0//EN" "i-xhtml_4ja_10.dtd"> EOF elsif @kind == 2 return <<EOF <?xml version="1.0" encoding="Shift_JIS"?> <!DOCTYPE html PUBLIC "-//OPENWAVE//DTD XHTML 1.0//EN" "http://www.openwave.com/DTD/xhtml-basic.dtd"> EOF elsif @kind == 3 return <<EOF <?xml version="1.0" encoding="Shift_JIS"?> <!DOCTYPE html PUBLIC "-//J-PHONE//DTD XHTML Basic 1.0 Plus//EN" "xhtml-basic10-plus.dtd"> EOF else return <<EOF <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> EOF end end end agent = UserAgent.new(ENV['HTTP_USER_AGENT']) print agent.get_content_type() + "\r\n\r\n" + agent.get_declare() print '<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">' print "<body>" file = "content.html" if agent.is_mobile() print Kconv.kconv(File.read(file), Kconv::SJIS) else print File.read(file) end print "</body></html>"