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-3/src/main/java/com/baeldung/domain_name/DomainNameClient.java b/core-java-modules/core-java-networking-3/src/main/java/com/baeldung/domain_name/DomainNameClient.java new file mode 100644 index 0000000000..1b2cb636fe --- /dev/null +++ b/core-java-modules/core-java-networking-3/src/main/java/com/baeldung/domain_name/DomainNameClient.java @@ -0,0 +1,34 @@ +package com.baeldung.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-3/src/test/java/com/baeldung/domain_name/DomainNameClientUnitTest.java b/core-java-modules/core-java-networking-3/src/test/java/com/baeldung/domain_name/DomainNameClientUnitTest.java new file mode 100644 index 0000000000..d69e7c0333 --- /dev/null +++ b/core-java-modules/core-java-networking-3/src/test/java/com/baeldung/domain_name/DomainNameClientUnitTest.java @@ -0,0 +1,51 @@ +package com.baeldung.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")); + } + +}