Compare commits

..

4 Commits

Author SHA1 Message Date
8828f1c9c2 Did some stuff 2024-11-25 15:42:19 -06:00
f2c8aff951 Fixed up some gitignore. Added readme info 2024-11-21 19:05:05 -06:00
68ec9d52ed Did a lot of groundwork 2024-11-21 15:16:23 -06:00
307745babe Basic dev notes 2024-11-21 05:56:21 -06:00
8 changed files with 145 additions and 5 deletions

4
.gitignore vendored
View File

@ -1,2 +1,6 @@
target/ target/
.vscode/ .vscode/
tomcat-binaries/
src/main/amazon-scrapi/WEB-INF/classes/
src/main/amazon-scrapi/WEB-INF/lib/

View File

@ -1,3 +1,29 @@
# amazon-scrapi # amazon-scrapi
An API interface with Amazon, that uses webscraping An API interface with Amazon, that uses webscraping
# Development Resources
- [Intro to servlets](https://dev.to/dilanka-rathnasiri/introduction-to-java-servlets-32oc)
# Development Environment Setup
## VSCode / VSCodium
Install the following softwares
- Required for development
- Maven
- Java JDK
- Git
- Highly recommended for debugging or deployment
- [Apache Tomcat](https://tomcat.apache.org)
- Docker
VSCode Extensions
- Extension Pack for Java
### Tomcat
Download binaries for Tomcat.
You can get a VSCode extension to deploying project to Tomcat for debugging.
Following these guides.
- Extension Setup [(Video](https://www.youtube.com/watch?v=R9mugpHWr14) - [Article)](https://www.brandondonnelson.com/2020/06/debugging-java-web-app-in-visual-studio.html).
- Helped understand config [(video)](https://www.youtube.com/watch?v=RiPot1ne8rI)

20
pom.xml
View File

@ -28,6 +28,21 @@
<version>3.8.1</version> <version>3.8.1</version>
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
<dependency>
<groupId>com.microsoft.playwright</groupId>
<artifactId>playwright</artifactId>
<version>1.48.0</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.5.12</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-access</artifactId>
<version>1.5.12</version>
</dependency>
</dependencies> </dependencies>
<build> <build>
@ -37,8 +52,9 @@
<artifactId>maven-war-plugin</artifactId> <artifactId>maven-war-plugin</artifactId>
<version>3.3.2</version> <version>3.3.2</version>
<configuration> <configuration>
<webappDirectory>src/main/webapp</webappDirectory> <webappDirectory>src/main/amazon-scrapi</webappDirectory>
<webXml>src/main/webapp/WEB-INF/web.xml</webXml> <webXml>src/main/amazon-scrapi/WEB-INF/web.xml</webXml>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration> </configuration>
</plugin> </plugin>
</plugins> </plugins>

View File

@ -0,0 +1,12 @@
<!DOCTYPE html>
<html>
<head>
<title>Amazon Scrapi</title>
</head>
<body>
<h2>Amazon Scrapi</h2>
<hr />
<p>An API interface with amazon.com using webscraping</p>
</body>
</html>

View File

@ -0,0 +1,46 @@
package com.veritablevalor.blizliam;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.microsoft.playwright.Browser;
import com.microsoft.playwright.Page;
import com.microsoft.playwright.Playwright;
public class AmazonRepository {
Playwright _playwright;
Browser _browser;
Page _page;
boolean _loggedIn = false;
Logger _logger;
final String AMAZON_URL = "https://amazon.com/";
public AmazonRepository()
{
Logger logger = LoggerFactory.getLogger(getClass());
_logger = logger;
_logger.info("Amazon URL: " + AMAZON_URL);
_playwright = Playwright.create();
_browser = _playwright.chromium().launch();
//_page = page;
}
public void AuthIfNeeded(String redirectUrl)
{
Page page = _browser.newPage();
page.navigate(AMAZON_URL);
boolean loggedIn = page.getByText("Hello, sign in").count() <= 0;
if (loggedIn)
_logger.info("Already Logged in as: ");
else
_logger.info("Not logged in...");
}
}

View File

@ -1,6 +1,7 @@
package com.veritablevalor.blizliam; package com.veritablevalor.blizliam;
import jakarta.servlet.ServletException; import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet; import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse;
@ -8,11 +9,46 @@ import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException; import java.io.IOException;
import java.io.PrintWriter; import java.io.PrintWriter;
import com.microsoft.playwright.Browser;
import com.microsoft.playwright.Page;
import com.microsoft.playwright.Playwright;
@WebServlet(
value = "/hello",
name = "hello"
)
public class App extends HttpServlet { public class App extends HttpServlet {
@Override @Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String url = "https://amazon.com";
AmazonRepository _repo = new AmazonRepository();
_repo.AuthIfNeeded("");
PrintWriter out = resp.getWriter(); PrintWriter out = resp.getWriter();
out.println("Hello!");
/*
try (Playwright playwright = Playwright.create()) {
Browser browser = playwright.chromium().launch();
Page page = browser.newPage();
page.navigate(url);
boolean loggedIn = page.getByText("Hello, sign in").count() <= 0;
System.out.println(page.title());
out.println("Here is the page.title: " + page.title());
if (loggedIn)
{
out.println("Logged in");
}
else
{
out.println("Logged out");
}
}*/
out.close(); out.close();
} }
} }