2003年05月07日
_ [tDiary][Becky] tDiaryをBeckyで更新するPluginを微調整。
エラーを適当にrescueしてあげたり、URIクラスを使うことでX-tDiary-Hogeの数を減らしたりするようにした。なんか使うライブラリが増えて遅くなってしまった気がするが気のせいということにしておこう。
class CallbackTDiary
# tDiaryメールのアドレス
TDiaryAddres = 'tDiary'
def on_send(msg)
begin
# tDiaryメールを取得
require 'tmail'
mail = TMail::Mail.parse(msg)
return 0 if !mail.to.include?(TDiaryAddres)
# パラメータの解釈
require 'uri'
time = parse_date(mail.subject.untaint)
uri = get_header(mail, 'X-tDiary-URI')
raise "X-tDiary-URI ヘッダを指定していない。" if uri.nil?
uri = URI::parse(uri)
proxy_host = get_header(mail, 'X-tDiary-Proxy')
proxy_host, proxy_port, = proxy_host.split(':') unless proxy_host.nil?
# 送信データ作成
require 'kconv'
require 'cgi'
body = mail.body.tosjis.untaint
data = "year=#{time.year}&month=#{time.month}&day=#{time.day}&title=&body=#{CGI::escape(mail.body.tosjis)}&append=#{CGI::escape(' 追加 ')}"
# 送信
begin
require 'net/http'
Net::HTTP.start( uri.host, uri.port, proxy_host, proxy_port ) do |http|
response = http.post( uri.request_uri, data, 'Authorization' => 'Basic ' + ["#{uri.user}:#{uri.password}"].pack('m').strip )
end
rescue Exception
raise "送信できない:#{$!}"
end
return Becky::ONSEND_PROCESSED
rescue
messageBox($!.to_s, "tDiary失敗")
return Becky::ONSEND_ERROR
end
end
private
# Timeオブジェクトを生成
def parse_date(d)
case d.downcase
when 'now', 'today'
time = Time::now
else
require 'parsedate'
time = Time::local *(ParseDate::parsedate(d))[0..-3]
end
end
# TMail::Mailよりuntaintしたヘッダを取得
def get_header(mail, header)
h = mail[header]
h = h.to_s.untaint unless h.nil?
return h
end
# メッセージボックス表示
def messageBox(msg, title)
require 'Win32API'
messagebox = Win32API.new('user32', 'MessageBox', %w(p p p i), 'i')
messagebox.call(0, msg, title, 0)
end
end
Becky.add_callback CallbackTDiary.new
_ [V友] ふとももを久しぶりに使ってみた。
めちゃくちゃ久しぶりに、ふとももを使ってみたんだけど。結構ちゃんと作りこんでいたんだねぇ。我ながらちょっと感心。データもまっさらだから速いし。
で。なんか、「スレッド表示するとROOTの投稿以外は未読の*が太字にならない」とか「Alt+TabしたときのアイコンがVBのデフォルトのまま」とか「クエリー検索ダイアログで右側のリストからD&Dしたときは[Table名].[Field名]の方がいいかも」とか「クエリー検索ダイアログが出てるときはAlt+Tabのリストに出てこない」とかなんか細かい問題(?)をいろいろ見つけてしまった。
・・・修正したほうが良い?(汗)
_ [TTBase] オープンソース化。
された。原作者(既にそんな呼び方でいいのか?(汗))であるK2さんは、TTBaseに時間を割けなくなってしまっているようで、それならば、とオープンソース化を提案してくださった。そんでまー、一応プラグインを(多分)一番大量に公開してしまっている身としては、役に立たねばならんだろうとゆーことで、Delphi書けないくせにsourceforge.jpのプロジェクト管理者に名乗りをあげてしまったのであった。
まぁ、TTBaseに実装して欲しかった機能があったりしていたので、願ったりかなったりなのかもしれない。まずは、Delphiになれないといけないのかな。
とりあえずはわかるところから、ということでプロジェクトホームページにPukiWikiを立ててみたんだけど、やっぱりWiKiは便利だね。でも、プラグインのアップ場所として使うって利用法は思いつかなかった。いい案かもしれない。UPできる体裁を整えてみようか。