From 009d5fff10796ec2a34a7a03eefd99e68427bacd Mon Sep 17 00:00:00 2001 From: Voomra Date: Wed, 23 Jul 2025 14:48:57 +0300 Subject: [PATCH] =?UTF-8?q?fix:=20=D0=BD=D0=B0=D1=86=D0=B8=D0=BE=D0=BD?= =?UTF-8?q?=D0=B0=D0=BB=D1=8C=D0=BD=D1=8B=D0=B5=20=D0=B4=D0=BE=D0=BC=D0=B5?= =?UTF-8?q?=D0=BD=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.gradle | 1 - src/main/java/ru/di9/ihc/Domain.java | 8 +++++++ src/main/java/ru/di9/ihc/IhcClient.java | 22 +++++++++++++------ .../java/ru/di9/ihc/GetDomainRecordsTest.java | 2 +- src/test/java/ru/di9/ihc/GetDomainsTest.java | 10 ++++----- src/test/resources/ihc-dns.html | 8 +++++++ 6 files changed, 37 insertions(+), 14 deletions(-) create mode 100644 src/main/java/ru/di9/ihc/Domain.java diff --git a/build.gradle b/build.gradle index 8c244fb..879fa1b 100644 --- a/build.gradle +++ b/build.gradle @@ -32,7 +32,6 @@ dependencies { compileOnly("org.projectlombok:lombok:$lombokVersion") implementation("org.apache.httpcomponents.client5:httpclient5:5.5") - implementation("org.apache.commons:commons-lang3:3.18.0") implementation("com.fasterxml.jackson.core:jackson-databind:$jacksonVersion") implementation("org.jsoup:jsoup:1.21.1") diff --git a/src/main/java/ru/di9/ihc/Domain.java b/src/main/java/ru/di9/ihc/Domain.java new file mode 100644 index 0000000..c2f51ea --- /dev/null +++ b/src/main/java/ru/di9/ihc/Domain.java @@ -0,0 +1,8 @@ +package ru.di9.ihc; + +public record Domain( + int id, + String name, + String punycode +) { +} diff --git a/src/main/java/ru/di9/ihc/IhcClient.java b/src/main/java/ru/di9/ihc/IhcClient.java index 213438f..fe72093 100644 --- a/src/main/java/ru/di9/ihc/IhcClient.java +++ b/src/main/java/ru/di9/ihc/IhcClient.java @@ -1,7 +1,6 @@ package ru.di9.ihc; import com.fasterxml.jackson.databind.ObjectMapper; -import org.apache.commons.lang3.tuple.Pair; import org.apache.hc.client5.http.classic.methods.HttpGet; import org.apache.hc.client5.http.classic.methods.HttpPost; import org.apache.hc.client5.http.entity.UrlEncodedFormEntity; @@ -16,7 +15,10 @@ import org.jsoup.select.Elements; import java.io.IOException; import java.net.URI; import java.nio.charset.StandardCharsets; -import java.util.*; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; +import java.util.List; public class IhcClient { private final String baseUrl; @@ -59,7 +61,7 @@ public class IhcClient { return isAuth; } - public List> getDomains() { + public List getDomains() { if (!isAuth) { throw new RuntimeException("IS NOT AUTH"); } @@ -73,13 +75,19 @@ public class IhcClient { return Collections.emptyList(); } - List> list = new ArrayList<>(); + List list = new ArrayList<>(); Document document = Jsoup.parse(resp.getEntity().getContent(), StandardCharsets.UTF_8.name(), baseUrl); Elements elements = document.select("li[class='zoneList__zone'] a"); for (Element element : elements) { - Integer id = Integer.valueOf(element.attr("href").substring(1).split("/")[2]); - String domain = element.text(); - list.add(Pair.of(domain, id)); + int id = Integer.parseInt(element.attr("href").substring(1).split("/")[2]); + String name = element.text(); + String punycode = null; + if (name.contains(" (")) { + String[] split = name.split(" \\(", 2); + name = split[0]; + punycode = split[1].substring(0, split[1].length() - 1); + } + list.add(new Domain(id, name, punycode)); } return list; diff --git a/src/test/java/ru/di9/ihc/GetDomainRecordsTest.java b/src/test/java/ru/di9/ihc/GetDomainRecordsTest.java index c4cfcdb..98b5434 100644 --- a/src/test/java/ru/di9/ihc/GetDomainRecordsTest.java +++ b/src/test/java/ru/di9/ihc/GetDomainRecordsTest.java @@ -51,7 +51,7 @@ class GetDomainRecordsTest { var ihc = new IhcClient("http://localhost:%d".formatted(port)); ihc.auth("user1", "passwd1"); - Integer domainId = ihc.getDomains().getFirst().getValue(); + int domainId = ihc.getDomains().getFirst().id(); List domainRecords = ihc.getDomainRecords(domainId); assertEquals(7, domainRecords.size()); diff --git a/src/test/java/ru/di9/ihc/GetDomainsTest.java b/src/test/java/ru/di9/ihc/GetDomainsTest.java index f49c6e4..d03e32c 100644 --- a/src/test/java/ru/di9/ihc/GetDomainsTest.java +++ b/src/test/java/ru/di9/ihc/GetDomainsTest.java @@ -4,7 +4,6 @@ import com.github.tomakehurst.wiremock.WireMockServer; import com.github.tomakehurst.wiremock.client.WireMock; import org.apache.commons.io.IOUtils; import org.apache.commons.lang3.RandomUtils; -import org.apache.commons.lang3.tuple.Pair; import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeAll; @@ -50,10 +49,11 @@ class GetDomainsTest { var ihc = new IhcClient("http://localhost:%d".formatted(port)); ihc.auth("user1", "passwd1"); - List> domains = ihc.getDomains(); + List domains = ihc.getDomains(); - assertEquals(2, domains.size()); - assertEquals(Pair.of("example-1.ru", 111111), domains.get(0)); - assertEquals(Pair.of("example-2.ru", 222222), domains.get(1)); + assertEquals(3, domains.size()); + assertEquals(new Domain(111111, "example-1.ru", null), domains.get(0)); + assertEquals(new Domain(222222, "example-2.ru", null), domains.get(1)); + assertEquals(new Domain(333333, "пример-3.рф", "xn---3-mlcluqhd.xn--p1ai"), domains.get(2)); } } diff --git a/src/test/resources/ihc-dns.html b/src/test/resources/ihc-dns.html index 961e337..53108e0 100644 --- a/src/test/resources/ihc-dns.html +++ b/src/test/resources/ihc-dns.html @@ -570,6 +570,14 @@ example-2.ru + +
  • + +