Untitled
unknown
java
a year ago
6.2 kB
3
Indexable
Never
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>{"encoded": "VOJS O QCCZ XG QCRWBU ROM", "offset": "14"}</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); } }