M.C.P.C.

―むり・くり―プラスコミュニケーション(更新終了)


| トップページ |

2011年8月18日 19:26

RSSのアドレス入れたらすぐにparseして使えるかどうか判断するPerlのコード

このエントリーをはてなブックマークに追加 mixiチェック

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使うんだ、ていう話はほっといてください。

投稿 大野 義貴 [Perl] | |

トラックバック(0)

トラックバックURL: http://blog.dtpwiki.jp/MTOS/mt-tb.cgi/3682

コメントする