package net.jrtechs.www.utils; import net.jrtechs.www.SteamAPI.ConnectionErrors; import net.jrtechs.www.SteamAPI.SteamConnectionException; import java.io.*; import java.net.HttpURLConnection; import java.net.URL; /** * Class which retrieves contents of a website as html * * @author Jeffery Russell 5-25-18 */ public class WebScraper { /** * Grabs the contents of a website as a string * * @param link to open * @return source code of website as a single string */ public static String getWebsite(String link) throws SteamConnectionException { try { URL url = new URL(link); HttpURLConnection connection = (HttpURLConnection)url.openConnection(); connection.setRequestMethod("GET"); connection.connect(); int code = connection.getResponseCode(); switch (code) { case 401: throw new SteamConnectionException(ConnectionErrors.RESTRICTED); case 500: throw new SteamConnectionException(ConnectionErrors.CONNECTION); default: } BufferedReader br = new BufferedReader( new InputStreamReader(url.openStream()) ); return WebScraper.getBufferedReaderData(br); } catch (SteamConnectionException e) { throw e; } catch (Exception e) { throw new SteamConnectionException(ConnectionErrors.CONNECTION); } } /** * Gets contents of a post request sent to a web server * * @param link to open * @param postData to send * @return source code of website as a string */ public static String getPostResponse(String link, String postData) { try { URL url = new URL(link); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setDoOutput(true); conn.setRequestMethod("POST"); OutputStream os = conn.getOutputStream(); os.write(postData.getBytes()); os.flush(); BufferedReader br = new BufferedReader( new InputStreamReader(conn.getInputStream()) ); return WebScraper.getBufferedReaderData(br); } catch (Exception ex) { ex.printStackTrace(); } return ""; } /** * Helper method for getPostResponse() and getWebsite() * Slams all contents of a buffered reader into a single string. * * @param br * @return contents of buffered reader * @throws IOException -- with br.readLine() */ private static String getBufferedReaderData(BufferedReader br) throws IOException { String html = ""; String line; while ((line = br.readLine()) != null) { html += line; } return html; } }