Skip to content

Instantly share code, notes, and snippets.

@pyvelkov
Created November 4, 2020 21:50
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save pyvelkov/f00868ae30f5e4d60799f1b530d247ea to your computer and use it in GitHub Desktop.
Save pyvelkov/f00868ae30f5e4d60799f1b530d247ea to your computer and use it in GitHub Desktop.
lab6
diff --git a/.idea/libraries/client_combined_3_141_59.xml b/.idea/libraries/client_combined_3_141_59.xml
index 0e10ff3..0ef81bc 100644
--- a/.idea/libraries/client_combined_3_141_59.xml
+++ b/.idea/libraries/client_combined_3_141_59.xml
@@ -2,6 +2,7 @@
<library name="client-combined-3.141.59">
<CLASSES>
<root url="jar://$USER_HOME$/Desktop/coding/selenium/client-combined-3.141.59.jar!/" />
+ <root url="jar://$PROJECT_DIR$/../../../../JSONSimple/json-simple-1.1.1.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES>
diff --git a/src/DeadLinkage/CheckLink.java b/src/DeadLinkage/CheckLink.java
index 624cdd9..c23e0c0 100644
--- a/src/DeadLinkage/CheckLink.java
+++ b/src/DeadLinkage/CheckLink.java
@@ -1,8 +1,14 @@
package DeadLinkage;
+import org.openqa.selenium.By;
+import org.openqa.selenium.WebDriver;
+import org.openqa.selenium.WebElement;
+
import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.URL;
+import java.util.ArrayList;
+import java.util.List;
import static DeadLinkage.AnsiColors.*;
@@ -76,4 +82,55 @@ public class CheckLink {
}
} catch (IOException e) { }
}
+
+ public static boolean JsonLinkLogic(ArrayList<String> jsonLinks, ArrayList<String> ignoreLinks, String argPrintFlag, WebDriver driver){
+ int postCounter = 1;
+ boolean exitCode = true;
+ for (String jsonLink : jsonLinks){
+ System.out.println("Post: " + postCounter);
+ driver.get(jsonLink);
+ List<WebElement> links = driver.findElements(By.tagName("a"));
+ for (WebElement link : links) {
+ try {
+ WebElement elem = link;
+
+ String url = elem.getAttribute("href");
+ for (String ignoreLink : ignoreLinks) {
+ if (url.startsWith(ignoreLink)) {
+ url = url.replace(ignoreLink, "");
+ }
+ }
+ checkLink(url, argPrintFlag);
+ exitCode = true;
+ } catch (Exception ExceptionExit) {
+ exitCode = false;
+ }
+ }
+ postCounter++;
+ }
+ return exitCode;
+ }
+
+ public static boolean checkLinkLogic(ArrayList<String> ignoreLinks, String argPrintFlag, WebDriver driver){
+ List<WebElement> links = driver.findElements(By.tagName("a"));
+ boolean exitCode = true;
+ for (int i = 0; i < links.size(); i++) {
+ try {
+ WebElement elem = links.get(i);
+
+ String url = elem.getAttribute("href");
+
+ for (String ignoreLink : ignoreLinks) {
+ if (url.startsWith(ignoreLink)) {
+ url = url.replace(ignoreLink, "");
+ }
+ }
+ checkLink(url, argPrintFlag);
+ exitCode = true;
+ } catch (Exception ExceptionExit) {
+ exitCode = false;
+ }
+ }
+ return exitCode;
+ }
}
diff --git a/src/DeadLinkage/DeadLinkTest.java b/src/DeadLinkage/DeadLinkTest.java
index c3d5af7..166faaa 100644
--- a/src/DeadLinkage/DeadLinkTest.java
+++ b/src/DeadLinkage/DeadLinkTest.java
@@ -1,18 +1,18 @@
package DeadLinkage;
-import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
-import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import java.io.IOException;
import java.util.ArrayList;
-import java.util.List;
-import static DeadLinkage.CheckLink.checkLink;
+import static DeadLinkage.CheckLink.JsonLinkLogic;
+import static DeadLinkage.CheckLink.checkLinkLogic;
import static DeadLinkage.HelpMessage.helpMessage;
-import static DeadLinkage.LinkArgumentParser.*;
+import static DeadLinkage.JsonReader.JsonCheckLink;
+import static DeadLinkage.LinkArgumentParser.fileArgParser;
+import static DeadLinkage.LinkArgumentParser.urlArgParser;
import static DeadLinkage.LoadIgnoreFile.loadFileIgnore;
import static DeadLinkage.Version.versionMessage;
@@ -21,7 +21,8 @@ import static DeadLinkage.Version.versionMessage;
public class DeadLinkTest {
public static void main(String[] args) {
- String argPrintFlag = "";
+ String argPrintFlag;
+ boolean exitCode = true;
int ignoreFlag = 0;
ArrayList<String> ignoreLinks = new ArrayList<>();
@@ -59,44 +60,30 @@ public class DeadLinkTest {
//check files
else if (args[0].equals("-f") || args[0].equals("--f") || args[0].equals("/f")) {
argPrintFlag = fileArgParser(args, driver, ignoreFlag);
+ exitCode = checkLinkLogic(ignoreLinks, argPrintFlag, driver);
}
//check URLS
else if (args[0].equals("-u") || args[0].equals("--u") || args[0].equals("/u")) {
argPrintFlag = urlArgParser(args, driver, ignoreFlag);
- } else {
+ exitCode = checkLinkLogic(ignoreLinks, argPrintFlag, driver);
+ }
+ else if(args[0].equals("-telescope") ||args[0].equals("--telescope") || args[0].equals("/telescope")){
+ argPrintFlag = "--all";
+ exitCode = JsonLinkLogic(JsonCheckLink(), ignoreLinks, argPrintFlag, driver);
+ }
+ else {
driver.quit();
helpMessage();
}
+ if (exitCode) System.exit(0);
+ else System.exit(1);
- driver.manage().window().maximize();
-
- List<WebElement> links = driver.findElements(By.tagName("a"));
-
- boolean exitCode = true;
- for (int i = 0; i < links.size(); i++) {
- try {
- WebElement elem = links.get(i);
-
- String url = elem.getAttribute("href");
+ //quit driver in case it was missed somewhere
+ driver.quit();
+ }
- for (String ignoreLink : ignoreLinks) {
- if (url.startsWith(ignoreLink)) {
- url = url.replace(ignoreLink, "");
- }
- }
- checkLink(url, argPrintFlag);
- exitCode = true;
- } catch (Exception ExceptionExit) {
- exitCode = false;
- }
- }
- //quit driver in case it was missed somewhere
- driver.quit();
- if (exitCode) System.exit(0);
- else System.exit(1);
- }
}
diff --git a/src/DeadLinkage/JsonReader.java b/src/DeadLinkage/JsonReader.java
new file mode 100644
index 0000000..ee808ac
--- /dev/null
+++ b/src/DeadLinkage/JsonReader.java
@@ -0,0 +1,55 @@
+package DeadLinkage;
+
+import org.json.simple.JSONArray;
+import org.json.simple.JSONObject;
+import org.json.simple.parser.JSONParser;
+
+import java.net.HttpURLConnection;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.Scanner;
+
+public class JsonReader {
+ public static ArrayList<String> JsonCheckLink() {
+ ArrayList<String> result = new ArrayList<>();
+ String inline = "";
+ String baseURL = "http://localhost:3000/posts/";
+ try {
+ URL url = new URL(baseURL);
+ HttpURLConnection conn = (HttpURLConnection)url.openConnection();
+ conn.setRequestMethod("GET");
+ conn.connect();
+
+ int responsecode = conn.getResponseCode();
+
+ if(responsecode != 200)
+ throw new RuntimeException("HttpResponseCode: " +responsecode);
+ else
+ {
+ Scanner sc = new Scanner(url.openStream());
+ while(sc.hasNext())
+ {
+ inline+=sc.nextLine();
+ }
+ sc.close();
+ }
+
+ JSONParser parser = new JSONParser();
+ JSONArray jarr = (JSONArray) parser.parse(inline);
+
+ //{"id":"403b73803f","url":"/posts/403b73803f"}
+ for(int i = 0; i<jarr.size();i++){
+ JSONObject jsonObj = (JSONObject)jarr.get(i);
+ String ID = (String)jsonObj.get("id");
+ result.add(baseURL + ID);
+ }
+
+ //disconnect connection
+ conn.disconnect();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+
+ return result;
+ }
+}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment