«前の日記(2009-08-23(日)) 最新 次の日記(2009-09-12(土))» 編集
RSS feed

からっぽの日記


2009-08-30(日) [長年日記]

twitter_badge.rb をいじってみた

以前に導入した twiiter のプラグインを導入しましたが、API からの xml 取得で失敗?して、中身が以下のような内容になってることがあり、tDiary で 500 internal server error が発生してた。何故かはわかんない^^;

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/1999/REC-html401-19991224/strict.dtd">
<!-- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd"> -->
<HTML>
<HEAD>
<META HTTP-EQUIV="Refresh" CONTENT="0.1">
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Expires" CONTENT="-1">
<TITLE></TITLE>
</HEAD>
<BODY><P></BODY>
</HTML>

で、twitter_badge.rb の xml を読み込む処理時に例外補足を追加してみた。

*** twitter_badge.rb.orig	Sun May 20 17:47:34 2007
--- twitter_badge.rb	Sun Aug 30 17:44:41 2009
***************
*** 25,55 ****
  		end
  	end

! 	doc = REXML::Document::new( xml )
! 	if doc then
! 		html = '<div class="twitter-badge">'
! 		html << '<p class="twitter-badge-title">'
! 		html << %Q|<a href="http://twitter.com/#{id}">| << 'What am I doing...</a>'
! 		html << '</p>'
! 		html << '<ul class="twitter-badge-body">'
! 		doc.elements.each( 'statuses/status' ) do |status|
! 			created_at = Time.parse( status.elements.to_a( 'created_at' )[0].text )
! 			html << '<li class="twitter-badge-status">'
! 			text = status.elements.to_a( 'text' )[0].text
! 			if Time.now > created_at + 60*60*23 then
! 				time = created_at.localtime.strftime( '%b %d %H:%M' )
! 			else
! 				time = created_at.localtime.strftime( '%H:%M' )
  			end
! 			html << '<span class="twitter-badge-text">' << %Q|#{text}| << '</span> '
! 			html << '<span class="twitter-badge-time">(' << %Q|#{time}| << ')</span>'
! 			html << '</li>'
  		end
! 		html << '</ul></div>'
! 		@conf.to_native( html )
! 	else
! 		return '<div class="twitter-badge error">twitter_badge: Failed to open file</div>'
! 	end
  end

  def twitter_badge_call_api( id, count )
--- 25,59 ----
  		end
  	end

!   begin
! 		doc = REXML::Document::new( xml )
! 		if doc then
! 			html = '<div class="twitter-badge">'
! 			html << '<p class="twitter-badge-title">'
! 			html << %Q|<a href="http://twitter.com/#{id}">| << 'What am I doing...</a>'
! 			html << '</p>'
! 			html << '<ul class="twitter-badge-body">'
! 			doc.elements.each( 'statuses/status' ) do |status|
! 				created_at = Time.parse( status.elements.to_a( 'created_at' )[0].text )
! 				html << '<li class="twitter-badge-status">'
! 				text = status.elements.to_a( 'text' )[0].text
! 				if Time.now > created_at + 60*60*23 then
! 					time = created_at.localtime.strftime( '%b %d %H:%M' )
! 				else
! 					time = created_at.localtime.strftime( '%H:%M' )
! 				end
! 				html << '<span class="twitter-badge-text">' << %Q|#{text}| << '</span> '
! 				html << '<span class="twitter-badge-time">(' << %Q|#{time}| << ')</span>'
! 				html << '</li>'
  			end
! 			html << '</ul></div>'
! 			@conf.to_native( html )
! 		else
! 			return '<div class="twitter-badge error">twitter_badge: Failed to open file</div>'
  		end
!   rescue REXML::ParseException
! 			return '<div class="twitter-badge error">twitter_badge: Failed to Get Timeline</div>'
!   end
  end

  def twitter_badge_call_api( id, count )

久々に Ruby さわったなぁ。さわったうちに入らないか^^;


«前の日記(2009-08-23(日)) 最新 次の日記(2009-09-12(土))» 編集
RSS feed