RSSのアドレス入れたらすぐにparseして使えるかどうか判断するPerlのコード
スポンサードリンク
M.C.P.C.: RSSのアドレス入れたらすぐにparseして使えるかどうか判断しておくべき
で書いていたのにどうやってFeedが正しいかどうか判断するかっていうのを書くの忘れていました。
# feed が正しいかテスト use URI; use XML::Feed; my $feedurl = 'http://feeds.feedburner.com/MCPC'; my $err; my $feed = XML::Feed->parse( URI->new( $feedurl ) ) # feed Parserで解析 or $err = XML::Feed->errstr; print "$err\n" if $err;
でいいんじゃないかなー。
んで、CGI::Application::Plugin::ValidateRM用のバリデータとしてはこんな感じ。
# ValidateRM用feedバリデータ
use Encode;
use utf8;
use URI;
use XML::Feed;
sub _varidate_feed {
return {
optional => [qw( feed )],
filters => [qw( trim )],
constraints => {
feed => [
{
name => 'reserved_feed',
constraint => sub {
# feed が正しいかテスト
my $feedurl = shift;
my $err;
my $feed = XML::Feed->parse( URI->new( $feedurl ) ) # feed Parserで解析
or $err = XML::Feed->errstr;
return !$err;
},
},
],
},
msgs => {
invalid => encode('utf8', '入力が不正です'),
missing => encode('utf8', '入力がありません'),
any_errors => 'some_errors',
prefix => 'err_',
constraints => {
'reserved_feed' => encode('utf8', 'RSSフィードではないようです。'),
},
},
};
}
いつまでCGI::Application使うんだ、ていう話はほっといてください。
スポンサードリンク
トラックバック(0)
トラックバックURL: http://blog.dtpwiki.jp/MTOS/mt-tb.cgi/3682





![: Amazon.co.jp: プラスティック・メモリーズ 1【完全生産限定版】(イベントチケット優先販売申込券付) [Blu-ray]](/lists/_9/B00VWX66E8.jpg)
![: Amazon.co.jp: プラスティック・メモリーズ 2【完全生産限定版】[Blu-ray]](/lists/_9/B00VWX66K2.jpg)
![: Amazon.co.jp: プラスティック・メモリーズ 3【完全生産限定版】[Blu-ray]](/lists/_9/B00VWX6MV0.jpg)
![: Amazon.co.jp: プラスティック・メモリーズ 4【完全生産限定版】[Blu-ray]](/lists/_9/B00VWX66IO.jpg)
![: Amazon.co.jp: プラスティック・メモリーズ 5【完全生産限定版】[Blu-ray]](/lists/_9/B00VWX6Y0E.jpg)
![: Amazon.co.jp: プラスティック・メモリーズ 6【完全生産限定版】[Blu-ray]](/lists/_9/B00VWX69D6.jpg)

コメントする