/***
**
** This library is free software; you can redistribute it and/or
** modify it under the terms of the GNU Lesser General Public
** License as published by the Free Software Foundation; either
** version 2.1 of the License, or (at your option) any later version.
**
** This library is distributed in the hope that it will be useful,
** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
** Lesser General Public License for more details.
**
** You should have received a copy of the GNU Lesser General Public
** License along with this library; if not, write to the Free Software
** Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
**
**/
package com.partydj.io.servlet;
import java.io.*;
import java.net.*;
import javax.servlet.http.*;
import com.partydj.util.*;
/**
* @author mrappazz
*
*
**/
public class RssServlet extends BaseServlet {
private static final String RSS_TEMPLATE = //ARGS: url, items
"<?xml version=\"1.0\"?> " +
"<rss version=\"2.0\"> " +
" <channel> " +
" <title>Soundboard</title> " +
" <link>%s</link> " +
" <description>Soundboard command history.</description> " +
" <language>en-us</language> " +
" <pubDate>2010-09-28</pubDate> " +
" <lastBuildDate>2010-09-28</lastBuildDate> " +
" %s " +
" </channel> " +
"</rss> " +
"";
public RssServlet() {
}
@Override public boolean accept(HttpServletRequest servletRequest, Socket httpConnection) {
if (servletRequest != null ) {
String uri = servletRequest.getRequestURI();
return uri != null && uri.length() >= 4 && uri.substring(uri.length() - 4).equalsIgnoreCase(".xml");
}
return false;
}
@Override public void handle(HttpServletRequest servletRequest, PrintStream outStream, Socket httpConnection) {
ChunkedCharBuffer rssItems = new ChunkedCharBuffer();
//$MR TODO
// for (History.HistoryEntry history : History.getHistory()) {
// rssItems.append(history.toRssItem());
// }
try {
if (rssItems.length() > 0) {
ChunkedByteBuffer feed = new ChunkedByteBuffer();
feed.append(String.format(RSS_TEMPLATE, "http://soundboard/", rssItems.toString()).getBytes());
createResponseHeader(servletRequest, feed.length()).writeTo(outStream);
feed.writeTo(outStream);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}