2009年12月24日木曜日

フィード表示のサンプル(GAE/J)

スズキです。

"http://www.suz-lab.com/"でブログの記事のタイトル一覧を表示するようにしました。
下記のサンプルって感じです。
http://blog.suz-lab.com/2009/12/geajrome.html

Pageクラスでこんな処理をして、

--------【Java】--------
...
MemcacheService memcacheService = MemcacheServiceFactory.getMemcacheService();
SyndFeed feed = (SyndFeed)memcacheService.get("feed");
if(feed == null) {
  URLFetchService fetchService = URLFetchServiceFactory.getURLFetchService();
  HTTPRequest httpRequest = new HTTPRequest(
    new URL("http://feeds.feedburner.com/suz-lab-blog"),
    HTTPMethod.GET,
    disallowTruncate().followRedirects()
  );
  HTTPResponse httpResponse = fetchService.fetch(httpRequest);
  SyndFeedInput feedInput = new SyndFeedInput();
  feed = feedInput.build(
    new InputStreamReader(
      new ByteArrayInputStream(httpResponse.getContent()),
      "UTF-8"
    )
  );
  memcacheService.put("feed", feed, Expiration.byDeltaSeconds(3600));
}
request.setAttribute("feed", feed);
...
--------
http://code.google.com/p/suz-lab-gae/source/browse/trunk/suz-lab-apps/src/suz/lab/apps/page/other/IndexPage.java?r=53

以下のようなVelocityテンプレートを表示すると、

--------【Velocity】--------
...
<dl class="news">
  #foreach($entry in $feed.entries)
  <dt>$date.format("yyyy/MM/dd", $entry.publishedDate)</dt>
  <dd><a href="$entry.link">$entry.title</a></dd>
  #end
</dl>
...
--------
http://code.google.com/p/suz-lab-gae/source/browse/trunk/suz-lab-apps/war/WEB-INF/vm/page/other/index.html?r=53

次のようにタイトル一覧が表示されます。

http://www.suz-lab.com/

年末年始休みにフィードを扱ったサービスでもつくろう。

0 コメント: