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")); + } + +}