package handlers;

import com.github.masahitojp.botan.Robot;
import com.github.masahitojp.botan.handler.BotanMessageHandlers;
import org.apache.http.client.utils.URIBuilder;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.io.IOException;
import java.net.URISyntaxException;

@SuppressWarnings("unused")
public class BizwdHandlers implements BotanMessageHandlers {
	private static Logger log = LoggerFactory.getLogger(BizwdHandlers.class);
	private static String BASE_SCHEME = "http";
	private static String BASE_HOST = "bizwd.net";
	private static String BASE_PATH = "/";
	private static String ERROR_PREFIX = "bizwd request failed : ";

	@Override
	public void register(Robot robot) {
		robot.respond(
				"(bizwd|b) (?<body>.+)",
				"brush up your text by bizwd",
				message -> {
					final String word = message.getMatcher().group("body");
					try {
						final String bizwdWord = bizwd(word);
						log.info("bizwd : ", bizwdWord);
						message.reply(bizwdWord);
					} catch (final URISyntaxException e) {
						log.warn("URISyntax exception.", e);
						message.reply(ERROR_PREFIX + e.getMessage());
					} catch (final IOException e) {
						log.warn("IOException.", e);
						message.reply(ERROR_PREFIX + e.getMessage());
					}
				}
		);
	}

	/**
	 * 入力された言葉をビジネッシュ化して返す
	 * @param word word
	 * @return bizwd
	 * @throws URISyntaxException URISyntaxException
	 * @throws IOException IOException
	 */
	private static String bizwd(final String word) throws URISyntaxException, IOException {
		final String url = new URIBuilder()
				.setScheme(BASE_SCHEME)
				.setHost(BASE_HOST)
				.setPath(BASE_PATH).build().toString();

		final Document document = Jsoup.connect(url)
				.data("before", word)
				.data("after", word)
				.data("level", "2")
				.data("transbtn", "翻訳")
				.post();
		log.info(document.toString());
		return document.select("[name=after]").text();
	}
}

improve #129 ビジネッシュ機能