package org.hindusingles.thf.server;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.gargoylesoftware.htmlunit.BrowserVersion;
import com.gargoylesoftware.htmlunit.WebClient;
import com.gargoylesoftware.htmlunit.html.HtmlCenter;
import com.gargoylesoftware.htmlunit.html.HtmlForm;
import com.gargoylesoftware.htmlunit.html.HtmlInput;
import com.gargoylesoftware.htmlunit.html.HtmlPage;
import com.gargoylesoftware.htmlunit.html.HtmlPasswordInput;
import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
import com.gargoylesoftware.htmlunit.html.HtmlTable;
import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
@SuppressWarnings("serial")
public class InsultServlet extends HttpServlet
{
static WebClient client = new WebClient(BrowserVersion.FIREFOX_3_6);
static
{
client.setCssEnabled(false);
client.setJavaScriptEnabled(false);
}
private static Logger logger = Logger.getLogger("org.hindusingles.thf.server.InsultServlet");
private static void logIn( )
{
try
{
String userName = null;
String password = null;
HtmlForm form = client.<HtmlPage>getPage("http://www.thehaloforum.com").getForms( ).get(0);
form.<HtmlTextInput>getInputByName("vb_login_username").setText(userName);
form.<HtmlPasswordInput>getInputByName("vb_login_password").setText(password);
form.<HtmlSubmitInput>getInputByValue("Log in").<HtmlPage>click( );
}
catch (Exception e)
{
logger.log
(
Level.WARNING,
"Login failed.",
e
);
}
}
/*static
{
logIn( );
}*/
@SuppressWarnings("unused")
private static void post(int threadID, String message) throws Exception
{
if (client.getPage("http://www.thehaloforum.com/login.php").getUrl( ).toString( ) != "http://www.thehaloforum.com/index.php")
{
client.closeAllWindows( );
logIn( );
}
HtmlPage page;
HtmlForm form;
HtmlInput submit;
page =
(
client.<HtmlPage>getPage
(
String.format
(
"http://www.thehaloforum.com/newreply.php?t=%d",
threadID
)
)
);
form = page.getFormByName("vbform");
form.getTextAreaByName("message").setText(message);
submit = form.getInputByName("sbutton");
form.getSelectByName("emailupdate").getOptionByValue("9999").setSelected(true);
submit.click( );
}
@SuppressWarnings("unused")
private static String getInsult( ) throws Exception
{
String insult =
(
client.<HtmlPage>getPage("http://www.insultgenerator.org")
.getBody( ).getHtmlElementsByTagName(HtmlCenter.TAG_NAME).get(0)
.<HtmlTable>getHtmlElementsByTagName(HtmlTable.TAG_NAME).get(0)
.getCellAt(0, 0).asText( )
);
if (insult == null || insult.isEmpty( ) || insult.startsWith("Error"))
{
throw new RuntimeException("Error getting insult.");
}
else
{
return insult;
}
}
public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException
{
try
{
response.setContentType("text/plain");
response.getWriter( ).println("Getting and posting insults.");
//post(208561, getInsult( ));
}
catch (Exception e)
{
logger.log
(
Level.WARNING,
"Couldn't post insult.",
e
);
}
}
}