Mercurial Hosting > nabble
diff src/global/web/UserSites.java @ 0:7ecd1a4ef557
add content
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Thu, 21 Mar 2019 19:15:52 -0600 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/global/web/UserSites.java Thu Mar 21 19:15:52 2019 -0600 @@ -0,0 +1,116 @@ + +package global.web; + +import java.io.IOException; +import java.io.PrintWriter; +import java.io.StringWriter; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import org.apache.lucene.index.Term; +import org.apache.lucene.search.IndexSearcher; +import org.apache.lucene.search.TopDocs; +import org.apache.lucene.search.Query; +import org.apache.lucene.search.ScoreDoc; +import org.apache.lucene.search.TermQuery; +import fschmidt.util.mail.Mail; +import fschmidt.util.mail.MailAddress; +import fschmidt.util.mail.MailHome; +import fschmidt.util.mail.PlainTextContent; +import global.Site; +import global.HtmlGlobalUtils; + + +public final class UserSites extends HttpServlet { + + protected void service(HttpServletRequest request,HttpServletResponse response) + throws IOException + { + PrintWriter out = response.getWriter(); + boolean isValid = true; + boolean isSent = false; + String email = request.getParameter("email"); + if( email == null ) { + email = ""; + } else { + email = email.trim(); + MailAddress to = new MailAddress(email); + isValid = to.isValid(); + if( isValid ) { + Mail mail = MailHome.newMail(); + mail.setTo(to); + mail.setFrom( new MailAddress("no-reply@nabble.com","Nabble") ); + mail.setSubject("Your Nabble Apps"); + mail.setContent(new PlainTextContent(text(email))); + MailHome.getDefaultSmtpServer().send(mail); + isSent = true; + } + } + + out.print( "\r\n<!DOCTYPE html>\r\n<html lang=\"en\">\r\n <head>\r\n " ); + HtmlGlobalUtils.head(request, response, "Your Apps"); + out.print( "\r\n </head>\r\n <body lato>\r\n " ); + HtmlGlobalUtils.header(request,response); + out.print( "\r\n <div content center paddingTop>\r\n <h1 oswald>Your Nabble Apps</h1>\r\n <p>\r\n Nabble can send you a list with all apps that you currently own.\r\n </p>\r\n " ); + + if (!isSent) { + + out.print( "\r\n<form action=\"UserSites.jtp\">\r\n <p>\r\n <input name=\"email\" type=\"text\" value=\"" ); + out.print( (email) ); + out.print( "\" size=\"30\" placeholder=\"Email address\"/>\r\n <input type=\"submit\" value=\"Submit\"/>\r\n </p>\r\n</form>\r\n" ); + + if( !isValid ) { + + out.print( "<p>invalid email address</p>" ); + + } + } else { + + out.print( "<div class=\"info-message\" style=\"padding:.5em\">An email has been sent to you.</div>" ); + + } + + out.print( "\r\n</div>\r\n" ); + HtmlGlobalUtils.footer(request,response); + out.print( "\r\n</body>\r\n</html>\r\n" ); + + } + + private static String text(String email) { + try { + IndexSearcher searcher = new IndexSearcher(Site.dir()); + Query q = new TermQuery(new Term(Site.OWNER_EMAIL_FLD,email)); + TopDocs hits = searcher.search( q, 500 ); + try { + StringWriter buf = new StringWriter(); + PrintWriter out = new PrintWriter(buf); + + out.print( "\r\nDear Nabble user,\r\n" ); + if( hits.totalHits == 0 ){ + out.print( "\r\nYou don't have any sites on Nabble.\r\n" ); + } else { + out.print( "\r\nHere are your Nabble apps:\r\n" ); + for( ScoreDoc sd : hits.scoreDocs ) { +Site site = new Site( searcher.doc(sd.doc) ); + + out.print( "\r\n" ); + out.print( (site.url()) ); + out.print( "\r\n" ); + +} +} + + out.print( "\r\nRegards,\r\nThe Nabble team\r\n" ); + + out.flush(); + return buf.toString(); + } finally { + searcher.close(); + } + } catch(IOException e) { + throw new RuntimeException(e); + } + } + +} +