diff --git a/3-Domain/src/main/java/link/Link.java b/3-Domain/src/main/java/link/Link.java new file mode 100644 index 0000000..61c8bf9 --- /dev/null +++ b/3-Domain/src/main/java/link/Link.java @@ -0,0 +1,24 @@ +package link; + +import category.CategoryId; +import tag.TagMatcher; +import user.Username; + +import java.util.Set; + +public class Link { + + private final LinkId id; + private final Username creator; + private final LinkUrl url; + private final Set categoryIds; + private final Set tags; + + public Link(LinkId id, Username creator, LinkUrl url, Set categoryIds, Set tags) { + this.id = id; + this.creator = creator; + this.url = url; + this.categoryIds = categoryIds; + this.tags = tags; + } +} diff --git a/3-Domain/src/main/java/link/LinkId.java b/3-Domain/src/main/java/link/LinkId.java new file mode 100644 index 0000000..682d767 --- /dev/null +++ b/3-Domain/src/main/java/link/LinkId.java @@ -0,0 +1,5 @@ +package link; + +public record LinkId(int id) { + +} diff --git a/3-Domain/src/main/java/link/LinkUrl.java b/3-Domain/src/main/java/link/LinkUrl.java new file mode 100644 index 0000000..0d191e9 --- /dev/null +++ b/3-Domain/src/main/java/link/LinkUrl.java @@ -0,0 +1,29 @@ +package link; + +import exeptions.IllegalValueObjectArgument; + +import java.net.MalformedURLException; +import java.net.URL; + +public class LinkUrl { + + private final URL url; + + public LinkUrl(String urlString) throws IllegalValueObjectArgument { + try { + this.url = new URL(urlString); + } + catch (MalformedURLException e) { + throw new IllegalValueObjectArgument(e.getMessage()); + } + } + + public URL getUrl() { + return url; + } + + @Override + public String toString() { + return url.toString(); + } +} diff --git a/3-Domain/src/main/java/link/OnlineCheck.java b/3-Domain/src/main/java/link/OnlineCheck.java new file mode 100644 index 0000000..0a3e7b7 --- /dev/null +++ b/3-Domain/src/main/java/link/OnlineCheck.java @@ -0,0 +1,25 @@ +package link; + +import java.io.IOException; +import java.net.HttpURLConnection; + +public class OnlineCheck { + + static Boolean of(LinkUrl url) { + int responseCode = getResponseCode(url); + return (responseCode < 400 || responseCode == 401 || responseCode == 403); + } + + private static int getResponseCode(LinkUrl url) { + try { + HttpURLConnection http = (HttpURLConnection) url.getUrl().openConnection(); + http.setRequestMethod("HEAD"); + http.disconnect(); + + return http.getResponseCode(); + } + catch (IOException e) { + return 500; //TODO: seems smelly + } + } +} diff --git a/3-Domain/src/test/java/link/LinkUrlTest.java b/3-Domain/src/test/java/link/LinkUrlTest.java new file mode 100644 index 0000000..1f7443b --- /dev/null +++ b/3-Domain/src/test/java/link/LinkUrlTest.java @@ -0,0 +1,29 @@ +package link; + +import exeptions.IllegalValueObjectArgument; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertThrows; + +class LinkUrlTest { + + @Test + void constructorWorks() { + assertDoesNotThrow(() -> new LinkUrl("https://tea.filefighter.de/qvalentin/LinkDitch")); + } + + @Test + void constructorThrows() { + assertThrows(IllegalValueObjectArgument.class, () -> new LinkUrl("tea.filefighter.de/qvalentin/LinkDitch")); + } + + @Test + void testToString() throws IllegalValueObjectArgument { + String urlString = "https://tea.filefighter.de/qvalentin/LinkDitch"; + LinkUrl sut = new LinkUrl(urlString); + + assertEquals(urlString, sut.toString()); + } +}