From ae6ed6ba95826b0dd217292b5c546a4e89082172 Mon Sep 17 00:00:00 2001 From: apeterlic Date: Thu, 19 May 2022 06:50:58 +0200 Subject: [PATCH 1/2] Get domain name from given URL --- .../domain_name/DomainNameClient.java | 34 +++++++++++++ .../domain_name/DomainNameClientUnitTest.java | 51 +++++++++++++++++++ 2 files changed, 85 insertions(+) create mode 100644 core-java-modules/core-java-networking/src/main/java/com/baeldung/networking/domain_name/DomainNameClient.java create mode 100644 core-java-modules/core-java-networking/src/test/java/com/baeldung/networking/domain_name/DomainNameClientUnitTest.java diff --git a/core-java-modules/core-java-networking/src/main/java/com/baeldung/networking/domain_name/DomainNameClient.java b/core-java-modules/core-java-networking/src/main/java/com/baeldung/networking/domain_name/DomainNameClient.java new file mode 100644 index 0000000000..f38b017f4d --- /dev/null +++ b/core-java-modules/core-java-networking/src/main/java/com/baeldung/networking/domain_name/DomainNameClient.java @@ -0,0 +1,34 @@ +package com.baeldung.networking.domain_name; + +import com.google.common.net.InternetDomainName; + +import java.net.URI; +import java.net.URISyntaxException; + +public class DomainNameClient { + + public String getHost(String url) throws URISyntaxException { + URI uri = new URI(url); + return uri.getHost(); + } + + public String getTopPrivateDomain(String url) { + InternetDomainName internetDomainName = InternetDomainName.from(url) + .topPrivateDomain(); + return internetDomainName.toString(); + } + + public String getName(String url) { + InternetDomainName internetDomainName = InternetDomainName.from(url) + .topPrivateDomain(); + String publicSuffix = internetDomainName.publicSuffix() + .toString(); + String domainName = internetDomainName.toString(); + return domainName.substring(0, domainName.lastIndexOf("." + publicSuffix)); + } + + public String getDomainName(String url) { + String regex = "http(s)?://|www\\.|/.*"; + return url.replaceAll(regex, ""); + } +} diff --git a/core-java-modules/core-java-networking/src/test/java/com/baeldung/networking/domain_name/DomainNameClientUnitTest.java b/core-java-modules/core-java-networking/src/test/java/com/baeldung/networking/domain_name/DomainNameClientUnitTest.java new file mode 100644 index 0000000000..c6f868621d --- /dev/null +++ b/core-java-modules/core-java-networking/src/test/java/com/baeldung/networking/domain_name/DomainNameClientUnitTest.java @@ -0,0 +1,51 @@ +package com.baeldung.networking.domain_name; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +class DomainNameClientUnitTest { + + DomainNameClient domainNameClient = new DomainNameClient(); + + @Test + void givenUrl_whenGetHost_thenReturnSubdomainAndDomainName() { + Assertions.assertAll(() -> { + assertEquals("www.baeldung.com", domainNameClient.getHost("https://www.baeldung.com/domain")); + assertEquals("www.google.co.uk", domainNameClient.getHost("https://www.google.co.uk/domain")); + assertEquals("jira.baeldung.com", domainNameClient.getHost("https://jira.baeldung.com/secure")); + }); + } + + @Test + void givenUrl_whenGetTopPrivateDomain_thenReturnDomainName() { + assertEquals("baeldung.com", domainNameClient.getTopPrivateDomain("www.baeldung.com")); + } + + @Test + void givenUrlWithPublicSuffix_whenGetTopPrivateDomain_thenReturnDomainName() { + assertEquals("google.co.uk", domainNameClient.getTopPrivateDomain("www.google.co.uk")); + assertEquals("baeldung.blogspot.com", domainNameClient.getTopPrivateDomain("www.baeldung.blogspot.com")); + } + + @Test + void givenUrlWithPublicSuffix_whenGetName_thenReturnSecondLevelDomain() { + assertEquals("baeldung", domainNameClient.getName("jira.baeldung.com")); + } + + @Test + void givenUrlWithPublicSuffix_whenGetName_thenReturnThirdLevelDomain() { + assertEquals("baeldung", domainNameClient.getName("www.baeldung.co.uk")); + assertEquals("google", domainNameClient.getName("www.google.co.uk")); + } + + @Test + void givenUrl_whenGetDomainNameRegex_thenReturnDomainName() { + assertEquals("google.com", domainNameClient.getDomainName("www.google.com")); + assertEquals("google.co.uk", domainNameClient.getDomainName("www.google.co.uk")); + assertEquals("jira.baeldung.com", domainNameClient.getDomainName("jira.baeldung.com")); + assertEquals("baeldung.com", domainNameClient.getDomainName("www.baeldung.com/test")); + } + +} From c3d957205a9a3a6f584fc05245966cf3e4b23250 Mon Sep 17 00:00:00 2001 From: apeterlic Date: Thu, 19 May 2022 07:03:06 +0200 Subject: [PATCH 2/2] Move code to different module --- core-java-modules/core-java-networking-3/pom.xml | 7 +++++++ .../java/com/baeldung}/domain_name/DomainNameClient.java | 2 +- .../baeldung}/domain_name/DomainNameClientUnitTest.java | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) rename core-java-modules/{core-java-networking/src/main/java/com/baeldung/networking => core-java-networking-3/src/main/java/com/baeldung}/domain_name/DomainNameClient.java (95%) rename core-java-modules/{core-java-networking/src/test/java/com/baeldung/networking => core-java-networking-3/src/test/java/com/baeldung}/domain_name/DomainNameClientUnitTest.java (97%) diff --git a/core-java-modules/core-java-networking-3/pom.xml b/core-java-modules/core-java-networking-3/pom.xml index 297d665544..63385c2334 100644 --- a/core-java-modules/core-java-networking-3/pom.xml +++ b/core-java-modules/core-java-networking-3/pom.xml @@ -52,6 +52,12 @@ java-ipv6 ${googlecode.ipv6.version} + + + com.google.guava + guava + ${guava.version} + @@ -84,6 +90,7 @@ 1.32 0.17 1.6.2 + 31.0-jre \ No newline at end of file diff --git a/core-java-modules/core-java-networking/src/main/java/com/baeldung/networking/domain_name/DomainNameClient.java b/core-java-modules/core-java-networking-3/src/main/java/com/baeldung/domain_name/DomainNameClient.java similarity index 95% rename from core-java-modules/core-java-networking/src/main/java/com/baeldung/networking/domain_name/DomainNameClient.java rename to core-java-modules/core-java-networking-3/src/main/java/com/baeldung/domain_name/DomainNameClient.java index f38b017f4d..1b2cb636fe 100644 --- a/core-java-modules/core-java-networking/src/main/java/com/baeldung/networking/domain_name/DomainNameClient.java +++ b/core-java-modules/core-java-networking-3/src/main/java/com/baeldung/domain_name/DomainNameClient.java @@ -1,4 +1,4 @@ -package com.baeldung.networking.domain_name; +package com.baeldung.domain_name; import com.google.common.net.InternetDomainName; diff --git a/core-java-modules/core-java-networking/src/test/java/com/baeldung/networking/domain_name/DomainNameClientUnitTest.java b/core-java-modules/core-java-networking-3/src/test/java/com/baeldung/domain_name/DomainNameClientUnitTest.java similarity index 97% rename from core-java-modules/core-java-networking/src/test/java/com/baeldung/networking/domain_name/DomainNameClientUnitTest.java rename to core-java-modules/core-java-networking-3/src/test/java/com/baeldung/domain_name/DomainNameClientUnitTest.java index c6f868621d..d69e7c0333 100644 --- a/core-java-modules/core-java-networking/src/test/java/com/baeldung/networking/domain_name/DomainNameClientUnitTest.java +++ b/core-java-modules/core-java-networking-3/src/test/java/com/baeldung/domain_name/DomainNameClientUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.networking.domain_name; +package com.baeldung.domain_name; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test;