トラックバック機能をRubyで実装(受信編)

送信がなんとかできそうなので、受信の方も。送信側がなんとかできたので単純にその逆を実装します。トラバの受け口となるコントローラとアクションtb_controller/recvを用意して各記事のトラックバックURLをhttp://example.com/tb/recv/[記事ID]とします。これで準備完了。

def recv
 if url?(params[:url])
  @trackback = Trackback.new
  @trackback.blog_id = params[:id]
  :
  @trackback.save	
  @error = 0
  @massage = 'OK.'
 else
  @error = 1
  @massage = 'Missing TrackBack url.'
 end
end

こんな感じになります。もちろん、受信した後どんな処理を行うかは自由ですので必ずしもシリアライズする必要はないのかも知れません。url?の部分ははURLの形式をチェックするメソッドです実際にはもう少し色々チェックしたりすることがあるかと思います。また、http://example.com/tb/recv/[記事ID]の記事IDの部分はparams[:id]で取得できました。このあたりがRailsの楽チンなところですね。返すxmlは

xml.instruct! :xml, :version=>"1.0", :encoding=>"UTF-8"
xml.response do
 xml.error do
  xml.text! "#{@error}"
 end
 xml.message do
  xml.text! "#{@message}"
 end
end

この記事のトラックバックURL:

http://hippos-lab.com/blog/trackback/56

Comments