From 088cf1e66e1bed83a5b0cb218fb85797438e402a Mon Sep 17 00:00:00 2001 From: BroodjeAap Date: Tue, 31 Jan 2023 21:25:17 +0000 Subject: [PATCH] refactor to browserless submenu --- scraping.go | 27 +++-- static/edit.js | 179 +++++++++++++++++++++------------ static/edit.ts | 201 ++++++++++++++++++++++++++------------ templates/watch/edit.html | 3 +- todo.md | 4 +- 5 files changed, 276 insertions(+), 138 deletions(-) diff --git a/scraping.go b/scraping.go index d9ed4c8..9a58d81 100644 --- a/scraping.go +++ b/scraping.go @@ -127,14 +127,6 @@ func getFilterResult(filters []Filter, filter *Filter, watch *Watch, web *Web, d { getFilterResultURLs(filter, web.urlCache, debug) } - case filter.Type == "bgurl": - { - getFilterResultBrowserlessURL(filter, web.urlCache, debug) - } - case filter.Type == "bgurls": - { - getFilterResultBrowserlessURLs(filter, web.urlCache, debug) - } case filter.Type == "xpath": { getFilterResultXPath(filter) @@ -241,6 +233,19 @@ func getFilterResult(filters []Filter, filter *Filter, watch *Watch, web *Web, d } } } + case filter.Type == "brow": + { + switch filter.Var1 { + case "gurl": + { + getFilterResultBrowserlessURL(filter, web.urlCache, debug) + } + case "gurls": + { + getFilterResultBrowserlessURLs(filter, web.urlCache, debug) + } + } + } case filter.Type == "echo": { getFilterResultEcho(filter) @@ -317,7 +322,11 @@ func getURLContent(filter *Filter, fetchURL string) (string, error) { } func getFilterResultBrowserlessURL(filter *Filter, urlCache map[string]string, debug bool) { - fetchURL := filter.Var1 + if filter.Var2 == nil { + filter.log("filter.Var2 == nil") + return + } + fetchURL := *filter.Var2 val, exists := urlCache["b"+fetchURL] if debug && exists { filter.Results = append(filter.Results, val) diff --git a/static/edit.js b/static/edit.js index a38bd54..a986519 100644 --- a/static/edit.js +++ b/static/edit.js @@ -114,65 +114,6 @@ function onTypeChange(node) { var3Div.appendChild(var3Input); break; } - case "bgurl": { - var var1Input = document.createElement("input"); - var1Input.name = "var1"; - var1Input.id = "var1Input"; - var1Input.value = var1Value; - var1Input.classList.add("form-control"); - var1Label.innerHTML = "URL"; - var1Input.placeholder = "https://shopping.website.com"; - var1Div.appendChild(var1Input); - var var2Input = document.createElement("input"); - var2Input.name = "var2"; - var2Input.id = "var2Input"; - var2Input.value = var2Value; - var2Input.classList.add("form-control"); - var2Input.disabled = true; - var2Input.placeholder = ""; - var2Label.innerHTML = "-"; - var2Div.appendChild(var2Input); - var var3Input = document.createElement("input"); - var3Input.name = "var3"; - var3Input.id = "var3Input"; - var3Input.value = var3Value; - var3Input.classList.add("form-control"); - var3Input.disabled = true; - var3Input.placeholder = ""; - var3Label.innerHTML = "-"; - var3Div.appendChild(var3Input); - break; - } - case "bgurls": { - var var1Input = document.createElement("input"); - var1Input.name = "var1"; - var1Input.id = "var1Input"; - var1Input.value = var1Value; - var1Input.classList.add("form-control"); - var1Label.innerHTML = "-"; - var1Input.placeholder = "From parents"; - var1Input.disabled = true; - var1Div.appendChild(var1Input); - var var2Input = document.createElement("input"); - var2Input.name = "var2"; - var2Input.id = "var2Input"; - var2Input.value = var2Value; - var2Input.classList.add("form-control"); - var2Input.disabled = true; - var2Input.placeholder = ""; - var2Label.innerHTML = "-"; - var2Div.appendChild(var2Input); - var var3Input = document.createElement("input"); - var3Input.name = "var3"; - var3Input.id = "var3Input"; - var3Input.value = var3Value; - var3Input.classList.add("form-control"); - var3Input.disabled = true; - var3Input.placeholder = ""; - var3Label.innerHTML = "-"; - var3Div.appendChild(var3Input); - break; - } case "xpath": { var var1Input = document.createElement("input"); var1Input.name = "var1"; @@ -500,7 +441,6 @@ function onTypeChange(node) { break; } case "unique": { - console.log("TEST"); var var1Input = document.createElement("input"); var1Input.name = "var1"; var1Input.id = "var1Input"; @@ -672,6 +612,79 @@ function onTypeChange(node) { var3Div.appendChild(var3Input); break; } + case "brow": { + var browserlessSelect = document.createElement("select"); + browserlessSelect.name = "var1"; + browserlessSelect.id = "var1Input"; + browserlessSelect.classList.add("form-control"); + var1Label.innerHTML = "Function"; + var gurlOption = document.createElement("option"); + gurlOption.value = "gurl"; + gurlOption.innerHTML = "Get URL"; + browserlessSelect.appendChild(gurlOption); + var gurlsOption = document.createElement("option"); + gurlsOption.value = "gurls"; + gurlsOption.innerHTML = "Get URLs"; + browserlessSelect.appendChild(gurlsOption); + var startOption = document.createElement("option"); + startOption.value = "start"; + startOption.innerHTML = "Start Session"; + browserlessSelect.appendChild(startOption); + var endOption = document.createElement("option"); + endOption.value = "end"; + endOption.innerHTML = "End Session"; + browserlessSelect.appendChild(endOption); + var gotoOption = document.createElement("option"); + gotoOption.value = "go"; + gotoOption.innerHTML = "Goto URL"; + browserlessSelect.appendChild(gotoOption); + var cssOption = document.createElement("option"); + cssOption.value = "css"; + cssOption.innerHTML = "Click CSS Element"; + browserlessSelect.appendChild(cssOption); + var xpathOption = document.createElement("option"); + xpathOption.value = "xpath"; + xpathOption.innerHTML = "Click XPath Element"; + browserlessSelect.appendChild(xpathOption); + var authOption = document.createElement("option"); + authOption.value = "auth"; + authOption.innerHTML = "Authenticate"; + browserlessSelect.appendChild(authOption); + var selectOption = document.createElement("option"); + selectOption.value = "select"; + selectOption.innerHTML = "Set Dropdown"; + browserlessSelect.appendChild(selectOption); + var inputOption = document.createElement("option"); + inputOption.value = "input"; + inputOption.innerHTML = "Set Input"; + browserlessSelect.appendChild(inputOption); + var keyOption = document.createElement("option"); + keyOption.value = "key"; + keyOption.innerHTML = "Press Key"; + browserlessSelect.appendChild(keyOption); + var waitOption = document.createElement("option"); + waitOption.value = "wait"; + waitOption.innerHTML = "Wait"; + browserlessSelect.appendChild(waitOption); + var lineOption = document.createElement("option"); + lineOption.value = "line"; + lineOption.innerHTML = "Raw Line"; + browserlessSelect.appendChild(lineOption); + var rawOption = document.createElement("option"); + rawOption.value = "raw"; + rawOption.innerHTML = "Raw Function"; + browserlessSelect.appendChild(rawOption); + var1Div.appendChild(browserlessSelect); + if (var1Value == "") { + browserlessSelect.value = "gurl"; + } + else { + browserlessSelect.value = var1Value; + } + browserlessSelect.onchange = function () { onBrowserlessChange(); }; + onBrowserlessChange(node); + break; + } case "lua": { var var1Input_1 = document.createElement("textarea"); var1Input_1.name = "var1"; @@ -807,6 +820,7 @@ function onConditionChange(node) { var var1Value = ""; var var2Value = ""; var var3Value = ""; + console.log(node, var1Input.value); if (node != null) { // @ts-ignore var1Value = node.meta.var1; @@ -877,6 +891,51 @@ function onConditionChange(node) { } } } +function onBrowserlessChange(node) { + if (node === void 0) { node = null; } + var var1Input = document.getElementById("var1Input"); + var var1Label = document.getElementById("var1Label"); + var var1Div = document.getElementById("var1Div"); + var var2Input = document.getElementById("var2Input"); + var var2Label = document.getElementById("var2Label"); + var var2Div = document.getElementById("var2Div"); + var2Div.innerHTML = ""; + var var3Input = document.getElementById("var3Input"); + var var3Label = document.getElementById("var3Label"); + var var3Div = document.getElementById("var3Div"); + var var1Value = ""; + var var2Value = ""; + var var3Value = ""; + console.log(node, var1Input.value); + if (node != null) { + // @ts-ignore + var1Value = node.meta.var1; + var1Input.value = var1Value; + // @ts-ignore + var2Value = node.meta.var2; + // @ts-ignore + var3Value = node.meta.var3; + } + else { + var1Value = var1Input.value; + } + var1Label.innerHTML = "Function"; + switch (var1Value) { + case "gurl": { + var var2Input_3 = document.createElement("input"); + var2Input_3.name = "var2"; + var2Input_3.id = "var2Input"; + var2Input_3.value = var2Value; + var2Input_3.classList.add("form-control"); + var2Label.innerHTML = "URL"; + var2Div.appendChild(var2Input_3); + break; + } + case "gurls": { + break; + } + } +} function onSubmitNewFilter() { var nameInput = document.getElementById("nameInput"); var name = nameInput.value; diff --git a/static/edit.ts b/static/edit.ts index 3e5a650..edaa53f 100644 --- a/static/edit.ts +++ b/static/edit.ts @@ -90,69 +90,6 @@ function onTypeChange(node: DiagramNode | null = null){ var3Div.appendChild(var3Input); break; } - case "bgurl": { - let var1Input = document.createElement("input"); - var1Input.name = "var1"; - var1Input.id = "var1Input"; - var1Input.value = var1Value; - var1Input.classList.add("form-control"); - var1Label.innerHTML = "URL"; - var1Input.placeholder = "https://shopping.website.com"; - var1Div.appendChild(var1Input); - - let var2Input = document.createElement("input"); - var2Input.name = "var2"; - var2Input.id = "var2Input"; - var2Input.value = var2Value; - var2Input.classList.add("form-control"); - var2Input.disabled = true; - var2Input.placeholder = "" - var2Label.innerHTML = "-"; - var2Div.appendChild(var2Input); - - let var3Input = document.createElement("input"); - var3Input.name = "var3"; - var3Input.id = "var3Input"; - var3Input.value = var3Value; - var3Input.classList.add("form-control"); - var3Input.disabled = true; - var3Input.placeholder = "" - var3Label.innerHTML = "-"; - var3Div.appendChild(var3Input); - break; - } - case "bgurls": { - let var1Input = document.createElement("input"); - var1Input.name = "var1"; - var1Input.id = "var1Input"; - var1Input.value = var1Value; - var1Input.classList.add("form-control") - var1Label.innerHTML = "-"; - var1Input.placeholder = "From parents"; - var1Input.disabled = true; - var1Div.appendChild(var1Input); - - let var2Input = document.createElement("input"); - var2Input.name = "var2"; - var2Input.id = "var2Input"; - var2Input.value = var2Value; - var2Input.classList.add("form-control") - var2Input.disabled = true; - var2Input.placeholder = "" - var2Label.innerHTML = "-"; - var2Div.appendChild(var2Input); - - let var3Input = document.createElement("input"); - var3Input.name = "var3"; - var3Input.id = "var3Input"; - var3Input.value = var3Value; - var3Input.classList.add("form-control"); - var3Input.disabled = true; - var3Input.placeholder = "" - var3Label.innerHTML = "-"; - var3Div.appendChild(var3Input); - break; - } case "xpath": { let var1Input = document.createElement("input"); var1Input.name = "var1"; @@ -493,7 +430,6 @@ function onTypeChange(node: DiagramNode | null = null){ break; } case "unique": { - console.log("TEST"); let var1Input = document.createElement("input"); var1Input.name = "var1"; var1Input.id = "var1Input"; @@ -661,6 +597,94 @@ function onTypeChange(node: DiagramNode | null = null){ var3Div.appendChild(var3Input); break; } + case "brow":{ + let browserlessSelect = document.createElement("select"); + browserlessSelect.name = "var1"; + browserlessSelect.id = "var1Input"; + browserlessSelect.classList.add("form-control"); + var1Label.innerHTML = "Function"; + + let gurlOption = document.createElement("option"); + gurlOption.value = "gurl" + gurlOption.innerHTML = "Get URL"; + browserlessSelect.appendChild(gurlOption); + + let gurlsOption = document.createElement("option"); + gurlsOption.value = "gurls" + gurlsOption.innerHTML = "Get URLs"; + browserlessSelect.appendChild(gurlsOption); + + let startOption = document.createElement("option"); + startOption.value = "start" + startOption.innerHTML = "Start Session"; + browserlessSelect.appendChild(startOption); + + let endOption = document.createElement("option"); + endOption.value = "end" + endOption.innerHTML = "End Session"; + browserlessSelect.appendChild(endOption); + + let gotoOption = document.createElement("option"); + gotoOption.value = "go" + gotoOption.innerHTML = "Goto URL"; + browserlessSelect.appendChild(gotoOption); + + let cssOption = document.createElement("option"); + cssOption.value = "css" + cssOption.innerHTML = "Click CSS Element"; + browserlessSelect.appendChild(cssOption); + + let xpathOption = document.createElement("option"); + xpathOption.value = "xpath" + xpathOption.innerHTML = "Click XPath Element"; + browserlessSelect.appendChild(xpathOption); + + let authOption = document.createElement("option"); + authOption.value = "auth" + authOption.innerHTML = "Authenticate"; + browserlessSelect.appendChild(authOption); + + let selectOption = document.createElement("option"); + selectOption.value = "select" + selectOption.innerHTML = "Set Dropdown"; + browserlessSelect.appendChild(selectOption); + + let inputOption = document.createElement("option"); + inputOption.value = "input" + inputOption.innerHTML = "Set Input"; + browserlessSelect.appendChild(inputOption); + + let keyOption = document.createElement("option"); + keyOption.value = "key" + keyOption.innerHTML = "Press Key"; + browserlessSelect.appendChild(keyOption); + + let waitOption = document.createElement("option"); + waitOption.value = "wait" + waitOption.innerHTML = "Wait"; + browserlessSelect.appendChild(waitOption); + + let lineOption = document.createElement("option"); + lineOption.value = "line" + lineOption.innerHTML = "Raw Line"; + browserlessSelect.appendChild(lineOption); + + let rawOption = document.createElement("option"); + rawOption.value = "raw" + rawOption.innerHTML = "Raw Function"; + browserlessSelect.appendChild(rawOption); + + var1Div.appendChild(browserlessSelect); + + if (var1Value == ""){ + browserlessSelect.value = "gurl"; + } else { + browserlessSelect.value = var1Value; + } + browserlessSelect.onchange = function() {onBrowserlessChange()} + onBrowserlessChange(node) + break + } case "lua":{ let var1Input = document.createElement("textarea"); var1Input.name = "var1"; @@ -912,7 +936,6 @@ function onMathChange(node: DiagramNode | null = null){ var2Input.type = "text"; var2Input.value = ""; var2Label.innerHTML = "-"; - } } @@ -931,6 +954,7 @@ function onConditionChange(node: DiagramNode | null = null){ let var1Value = ""; let var2Value = ""; let var3Value = ""; + console.log(node, var1Input.value) if (node != null){ // @ts-ignore var1Value = node.meta.var1; @@ -994,6 +1018,53 @@ function onConditionChange(node: DiagramNode | null = null){ } } +function onBrowserlessChange(node: DiagramNode | null = null){ + let var1Input = document.getElementById("var1Input") as HTMLSelectElement; + let var1Label = document.getElementById("var1Label") as HTMLLabelElement; + let var1Div = document.getElementById("var1Div") as HTMLDivElement; + let var2Input = document.getElementById("var2Input") as HTMLInputElement; + let var2Label = document.getElementById("var2Label") as HTMLLabelElement; + let var2Div = document.getElementById("var2Div") as HTMLDivElement; + var2Div.innerHTML = ""; + let var3Input = document.getElementById("var3Input") as HTMLInputElement; + let var3Label = document.getElementById("var3Label") as HTMLLabelElement; + let var3Div = document.getElementById("var3Div") as HTMLDivElement; + + let var1Value = ""; + let var2Value = ""; + let var3Value = ""; + console.log(node, var1Input.value) + if (node != null){ + // @ts-ignore + var1Value = node.meta.var1; + var1Input.value = var1Value; + // @ts-ignore + var2Value = node.meta.var2; + // @ts-ignore + var3Value = node.meta.var3; + } else { + var1Value = var1Input.value; + } + + var1Label.innerHTML = "Function"; + + switch(var1Value) { + case "gurl": { + let var2Input = document.createElement("input"); + var2Input.name = "var2"; + var2Input.id = "var2Input"; + var2Input.value = var2Value; + var2Input.classList.add("form-control") + var2Label.innerHTML = "URL"; + var2Div.appendChild(var2Input) + break; + } + case "gurls": { + break; + } + } +} + function onSubmitNewFilter(){ let nameInput = document.getElementById("nameInput") as HTMLInputElement; let name = nameInput.value; diff --git a/templates/watch/edit.html b/templates/watch/edit.html index 9eb8582..4b5370f 100644 --- a/templates/watch/edit.html +++ b/templates/watch/edit.html @@ -77,8 +77,6 @@ GoWatch Edit {{ .Watch.Name }} diff --git a/todo.md b/todo.md index eac84e1..bb93240 100644 --- a/todo.md +++ b/todo.md @@ -6,8 +6,8 @@ - edit.ts - diagram.ts - browserless function filters - - get url - - get urls + - ~~get url~~ + - ~~get urls~~ - session - start - end