From 6245680fefdfbd13f63b838b6023a93e64bdeb1d Mon Sep 17 00:00:00 2001
From: cyian-1756 <devnull64@vfemail.net>
Date: Sun, 11 Mar 2018 22:35:27 -0400
Subject: [PATCH 1/3] Added ripper for femjoyhunter.com

---
 .../ripper/rippers/FemjoyhunterRipper.java    | 64 +++++++++++++++++++
 .../tst/ripper/rippers/FemJoyRipperTest.java  |  4 ++
 .../rippers/FemJoyhunterRipperTest.java       | 13 ++++
 3 files changed, 81 insertions(+)
 create mode 100644 src/main/java/com/rarchives/ripme/ripper/rippers/FemjoyhunterRipper.java
 create mode 100644 src/test/java/com/rarchives/ripme/tst/ripper/rippers/FemJoyRipperTest.java
 create mode 100644 src/test/java/com/rarchives/ripme/tst/ripper/rippers/FemJoyhunterRipperTest.java

diff --git a/src/main/java/com/rarchives/ripme/ripper/rippers/FemjoyhunterRipper.java b/src/main/java/com/rarchives/ripme/ripper/rippers/FemjoyhunterRipper.java
new file mode 100644
index 00000000..522a9720
--- /dev/null
+++ b/src/main/java/com/rarchives/ripme/ripper/rippers/FemjoyhunterRipper.java
@@ -0,0 +1,64 @@
+package com.rarchives.ripme.ripper.rippers;
+
+import java.io.IOException;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import org.jsoup.nodes.Document;
+import org.jsoup.nodes.Element;
+
+import com.rarchives.ripme.ripper.AbstractHTMLRipper;
+import com.rarchives.ripme.utils.Http;
+
+public class FemjoyhunterRipper extends AbstractHTMLRipper {
+
+    public FemjoyhunterRipper(URL url) throws IOException {
+        super(url);
+    }
+
+    @Override
+    public String getHost() {
+        return "femjoyhunter";
+    }
+
+    @Override
+    public String getDomain() {
+        return "femjoyhunter.com";
+    }
+
+    @Override
+    public String getGID(URL url) throws MalformedURLException {
+        Pattern p = Pattern.compile("https?://www.femjoyhunter.com/([a-zA-Z0-9_-]+)/?");
+        Matcher m = p.matcher(url.toExternalForm());
+        if (m.matches()) {
+            return m.group(1);
+        }
+        throw new MalformedURLException("Expected femjoyhunter URL format: " +
+                "femjoyhunter.com/ID - got " + url + " instead");
+    }
+
+    @Override
+    public Document getFirstPage() throws IOException {
+        // "url" is an instance field of the superclass
+        return Http.url(url).get();
+    }
+
+    @Override
+    public List<String> getURLsFromPage(Document doc) {
+        List<String> result = new ArrayList<>();
+        for (Element el : doc.select("ul.gallery-b > li > a")) {
+            result.add(el.attr("href"));
+        }
+        return result;
+    }
+
+    @Override
+    public void downloadURL(URL url, int index) {
+
+        addURLToDownload(url, getPrefix(index), "", "https://a2h6m3w6.ssl.hwcdn.net/", null);
+    }
+}
\ No newline at end of file
diff --git a/src/test/java/com/rarchives/ripme/tst/ripper/rippers/FemJoyRipperTest.java b/src/test/java/com/rarchives/ripme/tst/ripper/rippers/FemJoyRipperTest.java
new file mode 100644
index 00000000..85a26d07
--- /dev/null
+++ b/src/test/java/com/rarchives/ripme/tst/ripper/rippers/FemJoyRipperTest.java
@@ -0,0 +1,4 @@
+package com.rarchives.ripme.tst.ripper.rippers;
+
+public class FemJoyRipperTest {
+}
diff --git a/src/test/java/com/rarchives/ripme/tst/ripper/rippers/FemJoyhunterRipperTest.java b/src/test/java/com/rarchives/ripme/tst/ripper/rippers/FemJoyhunterRipperTest.java
new file mode 100644
index 00000000..2d7dbdc8
--- /dev/null
+++ b/src/test/java/com/rarchives/ripme/tst/ripper/rippers/FemJoyhunterRipperTest.java
@@ -0,0 +1,13 @@
+package com.rarchives.ripme.tst.ripper.rippers;
+
+import java.io.IOException;
+import java.net.URL;
+
+import com.rarchives.ripme.ripper.rippers.FemjoyhunterRipper;
+
+public class FemjoyRipperTest extends RippersTest {
+    public void testRip() throws IOException {
+        FemjoyhunterRipper ripper = new FemjoyhunterRipper(new URL("https://www.femjoyhunter.com/alisa-i-got-nice-big-breasts-and-fine-ass-so-she-seems-to-be-a-hottest-brunette-5936/"));
+        testRipper(ripper);
+    }
+}
\ No newline at end of file

From cdc70f50cc8b7c549b18cbba9b445ab49aedc321 Mon Sep 17 00:00:00 2001
From: cyian-1756 <devnull64@vfemail.net>
Date: Sun, 11 Mar 2018 22:35:52 -0400
Subject: [PATCH 2/3] Removed wrongly named file

---
 .../rarchives/ripme/tst/ripper/rippers/FemJoyRipperTest.java  | 4 ----
 1 file changed, 4 deletions(-)
 delete mode 100644 src/test/java/com/rarchives/ripme/tst/ripper/rippers/FemJoyRipperTest.java

diff --git a/src/test/java/com/rarchives/ripme/tst/ripper/rippers/FemJoyRipperTest.java b/src/test/java/com/rarchives/ripme/tst/ripper/rippers/FemJoyRipperTest.java
deleted file mode 100644
index 85a26d07..00000000
--- a/src/test/java/com/rarchives/ripme/tst/ripper/rippers/FemJoyRipperTest.java
+++ /dev/null
@@ -1,4 +0,0 @@
-package com.rarchives.ripme.tst.ripper.rippers;
-
-public class FemJoyRipperTest {
-}

From 1555a6c276eeed0ca0c2c58f382c84656f76f7a5 Mon Sep 17 00:00:00 2001
From: cyian-1756 <devnull64@vfemail.net>
Date: Sun, 11 Mar 2018 22:42:07 -0400
Subject: [PATCH 3/3] Fixed test

---
 ...{FemJoyhunterRipperTest.java => FemjoyhunterRipperTest.java} | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
 rename src/test/java/com/rarchives/ripme/tst/ripper/rippers/{FemJoyhunterRipperTest.java => FemjoyhunterRipperTest.java} (88%)

diff --git a/src/test/java/com/rarchives/ripme/tst/ripper/rippers/FemJoyhunterRipperTest.java b/src/test/java/com/rarchives/ripme/tst/ripper/rippers/FemjoyhunterRipperTest.java
similarity index 88%
rename from src/test/java/com/rarchives/ripme/tst/ripper/rippers/FemJoyhunterRipperTest.java
rename to src/test/java/com/rarchives/ripme/tst/ripper/rippers/FemjoyhunterRipperTest.java
index 2d7dbdc8..fee634ef 100644
--- a/src/test/java/com/rarchives/ripme/tst/ripper/rippers/FemJoyhunterRipperTest.java
+++ b/src/test/java/com/rarchives/ripme/tst/ripper/rippers/FemjoyhunterRipperTest.java
@@ -5,7 +5,7 @@ import java.net.URL;
 
 import com.rarchives.ripme.ripper.rippers.FemjoyhunterRipper;
 
-public class FemjoyRipperTest extends RippersTest {
+public class FemjoyhunterRipperTest extends RippersTest {
     public void testRip() throws IOException {
         FemjoyhunterRipper ripper = new FemjoyhunterRipper(new URL("https://www.femjoyhunter.com/alisa-i-got-nice-big-breasts-and-fine-ass-so-she-seems-to-be-a-hottest-brunette-5936/"));
         testRipper(ripper);