Untitled

mail@pastecode.io avatar
unknown
java
a year ago
6.2 kB
4
Indexable
package ru.yandex.programmers_day;

import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;

//@SpringBootApplication
/*SpringApplication.run(ProgrammersDayApplication.class, args);*/
public class ProgrammersDayApplication {

	public static void main(String[] args) throws Exception {

//		Client client = new Client("http://ya.praktikum.fvds.ru:8080/dev-day");
//		System.out.println(client.decode("FYTC Y UMLBCPDSJ QOJ AMBGLE BYW", 24));
		String html = "<!DOCTYPE html>\n" +
				"<html>\n" +
				"<head>\n" +
				"    <meta charset=\"UTF-8\">\n" +
				"    <style>\n" +
				"        p {\n" +
				"            margin: 20px 0;\n" +
				"        }\n" +
				"\n" +
				"        .first_p {\n" +
				"            margin-top: 0;\n" +
				"        }\n" +
				"\n" +
				"        .container {\n" +
				"            position: relative;\n" +
				"            border: 1px solid black;\n" +
				"            background-color: white;\n" +
				"            box-shadow: 4px 4px 0px black;\n" +
				"            padding: 20px;\n" +
				"            margin-bottom: 20px;\n" +
				"        }\n" +
				"\n" +
				"        .num {\n" +
				"            position: absolute;\n" +
				"            top: 0;\n" +
				"            left: 0;\n" +
				"            padding: 2px 9px;\n" +
				"            border-right: 1px solid black;\n" +
				"            border-bottom: 1px solid black;\n" +
				"        }\n" +
				"\n" +
				"        .warn_notif {\n" +
				"            background-color: #FFE7D6;\n" +
				"            color: #FF5C00;\n" +
				"            padding: 20px;\n" +
				"            margin: 0 auto;\n" +
				"            margin-bottom: 40px;\n" +
				"        }\n" +
				"\n" +
				"        .code {\n" +
				"            font-weight: 600;\n" +
				"            background-color: #DEDEDE;\n" +
				"            padding: 10px 20px;\n" +
				"            width: max-content;\n" +
				"            margin: 0 auto;\n" +
				"        }\n" +
				"    </style>\n" +
				"</head>\n" +
				"<body style=\"font-family: Lucida Console, Monaco, Monospace; line-height: 150%;  text-align: center; font-size: 12px;\">\n" +
				"\n" +
				"<h2 style=\"margin-bottom: 40px; margin-top: 40px;\">День 2<br>\"Салатный\"</h2>\n" +
				"\n" +
				"<div class=\"warn_notif\">Внимательно прочитайте задание до конца <br> прежде чем приступить к выполнению</div>\n" +
				"\n" +
				"<div class=\"container\">\n" +
				"    <div class=\"num\">1</div>\n" +
				"    Давным-давно в Практикуме был студент, легенды о котором ходят и по сей день: он одновременно проходил курсы\n" +
				"    \"Java-разработчик\",\n" +
				"    \"React-разработчик\", а также \"Нагрузочное тестирование\" и \"Английский для IT\".<br>\n" +
				"    Как говорится, был <s>и швец, и жнец, и на дуде игрец</s> фулстек-разработчик.<br>\n" +
				"    Однажды он куда-то пропал, но оставил кучу непонятных записок.<br>Взгляните сами:\n" +
				"    <br>\n" +
				"    <code id=\"message\"><span>{&quot;encoded&quot;: &quot;VOJS O QCCZ XG QCRWBU ROM&quot;, &quot;offset&quot;: &quot;14&quot;}</span></code>\n" +
				"</div>\n" +
				"\n" +
				"<div class=\"container\">\n" +
				"    <div class=\"num\">2</div>\n" +
				"    Мы уже устали их хранить, поэтому каждые <span>7</span> секунд отправляем очередную записку в\n" +
				"    шредер.<br>\n" +
				"    Попробуйте обновить страницу - скорее всего старая записка уже уничтожена, а на ее месте новая.\n" +
				"</div>\n" +
				"\n" +
				"<div class=\"container\">\n" +
				"    <div class=\"num\">3</div>\n" +
				"\n" +
				"    <p>Помогите нам понять тайный смысл хотя бы одной из этих записок пока шредер не разобрался с ней \uD83D\uDDF3<br><br>Ответ\n" +
				"        присылайте сюда:</p>\n" +
				"    <div class=\"code\">POST http://ya.praktikum.fvds.ru:8080/dev-day/task/2</div>\n" +
				"    <p>В тело положите json:</p>\n" +
				"    <code>{\"decoded\": \"текст\"}</code>\n" +
				"    <p>А, да, вы должно быть заметили, что мы обновили протоколы безопасности.<br> Поэтому всегда кладите в HTTP-header\n" +
				"        AUTH_TOKEN\n" +
				"        токен вашей команды.</p>\n" +
				"\n" +
				"</div>\n" +
				"\n" +
				"<div class=\"container\">\n" +
				"    <div class=\"num\">4</div>\n" +
				"    В знак благодарности мы пришлем вам <b><span style=\"color: #21B409;\">200 OK</span></b> и json со ссылкой на\n" +
				"    следующее задание в таком виде:<br>\n" +
				"    <code>{\"nextTaskUrl\": \"http://...\", \"message\": \"...\", \"completed\": true}</code><br>\n" +
				"    Но вот если шредер опередит вас, то вы получите <b><span style=\"color: #d56109;\">400 BAD REQUEST</span></b>, а\n" +
				"    записку придется получить заново.\n" +
				"</div>\n" +
				"\n" +
				"<p style=\"margin: 40px 0;\"><b> Увидимся завтра! :)</b></p>\n" +
				"\n" +
				"</body>\n" +
				"</html>";
		Document doc = Jsoup.parse(html);

		Element codeElement = doc.select("code#message").first();
		String result = codeElement.text();


		ObjectMapper objectMapper = new ObjectMapper();
		JsonNode rootNode = objectMapper.readTree(result);
		String encoded = rootNode.get("encoded").asText();
		String offset = rootNode.get("offset").asText();

		System.out.println(encoded + " " + offset);

	}
}