package me.moodcat.database.bulkInsert; import org.apache.commons.io.IOUtils; import org.apache.http.HttpResponse; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.DefaultHttpClient; import java.io.IOException; import java.io.StringWriter; /** * Name generator that uses an online service to generate random names for rooms. */ public class NameGenerator { /** * The URL for th site. */ final static String URL = "http://www.clannames.net/name-generator-ajax?m=genName&c=&ts="; /** * The URL to obtain a token. */ final static String TOKEN_URL = "http://www.clannames.net/name-generator-ajax?m=token"; /** * The required cookie. */ private String cookie; /** * The timestamp along with the cookie. */ private String timestamp; /** * The HTTP client. */ private HttpClient client; /** * Creates a name generator, and initializes it. * * @throws IOException */ public NameGenerator() throws IOException { client = new DefaultHttpClient(); initialize(); } /** * Initialize the generator by requesting a token cookie and timestamp. * * @throws IOException */ private void initialize() throws IOException { HttpGet request = new HttpGet(TOKEN_URL); HttpResponse response = client.execute(request); cookie = response.getHeaders("Set-Cookie")[0].getValue(); StringWriter writer = new StringWriter(); IOUtils.copy(response.getEntity().getContent(), writer); timestamp = writer.toString(); } /** * Generate a random room name. * * @return the generated name. * @throws IOException */ public String generate() throws IOException { HttpGet request = new HttpGet(URL + timestamp); request.addHeader( "User-Agent", "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.125 Safari/537.36"); request.addHeader("X-Requested-With", "XMLHttpRequest"); request.addHeader("Content-Type", "application/x-www-form-urlencoded"); request.addHeader("Cookie", cookie); HttpResponse response = client.execute(request); StringWriter writer = new StringWriter(); IOUtils.copy(response.getEntity().getContent(), writer); String name = writer.getBuffer().toString(); if (name.contains("||")) { name = name.split("\\|\\|")[0]; } name = name.replaceAll("<br \\\\>", ""); return name; } }