/* * Juick * Copyright (C) 2008-2013, ugnich * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program 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 Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . */ package com.juick.http.www; import com.juick.Message; import com.juick.server.MessagesQueries; import java.io.IOException; import java.io.PrintWriter; import java.sql.Connection; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Iterator; import java.util.List; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * * @author ugnich */ public class RSS { private static final SimpleDateFormat sdfSQL = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); private static final SimpleDateFormat sdfRSS = new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss Z"); protected void doGet(Connection sql, HttpServletRequest request, HttpServletResponse response, int uid, String uname) throws ServletException, IOException { List mids = MessagesQueries.getUserBlog(sql, uid, 0, 0); if (mids.isEmpty()) { response.sendError(404); return; } List msgs = MessagesQueries.getMessages(sql, mids); response.setContentType("application/rss+xml; charset=UTF-8"); try (PrintWriter out = response.getWriter()) { out.println(""); out.println(""); out.println(""); out.println(""); out.println("" + uname + " - Juick"); out.println("http://juick.com/" + uname + "/"); out.println("The latest messages by @" + uname + " at Juick"); out.println("http://i.juick.com/a/" + uid + ".png" + uname + " - Juickhttp://juick.com/" + uname + "/"); for (Message msg : msgs) { out.println(""); out.println("http://juick.com/" + msg.getUser().getUName() + "/" + msg.getMID() + ""); out.println("http://juick.com/" + msg.getUser().getUName() + "/" + msg.getMID() + ""); out.print("<![CDATA[@" + msg.getUser().getUName() + ":"); if (!msg.Tags.isEmpty()) { for (int n = 0; n < msg.Tags.size(); n++) { out.print(" *" + msg.Tags.get(n)); } } out.println("]]>"); out.println(""); synchronized (sdfSQL) { try { Date date = sdfSQL.parse(msg.TimestampString); out.println("" + sdfRSS.format(date) + ""); } catch (Exception e) { System.err.println("PARSE EXCEPTION: " + msg.TimestampString); } } out.println("http://juick.com/" + msg.getUser().getUName() + "/" + msg.getMID() + ""); if (!msg.Tags.isEmpty()) { for (int n = 0; n < msg.Tags.size(); n++) { out.println("" + msg.Tags.get(n) + ""); } } if (msg.AttachmentType != null) { if (msg.AttachmentType.equals("jpg")) { out.println(""); out.println(""); } else if (msg.AttachmentType.equals("png")) { out.println(""); out.println(""); } } out.println(""); out.println(""); } out.println(""); } } }