X-Git-Url: https://git.hedgecode.org/?p=chesshog-scanner.git;a=blobdiff_plain;f=src%2Fmain%2Fjava%2Forg%2Fhedgecode%2Fchess%2Fscanner%2Fportal%2FAbstractRequestScanner.java;fp=src%2Fmain%2Fjava%2Forg%2Fhedgecode%2Fchess%2Fscanner%2Fportal%2FAbstractRequestScanner.java;h=a82422e4b3edcf24c0ca9ba46371d4d2011330c9;hp=fd72e6ead50d38ea3a99568d3bfcacd2e50e0536;hb=607aedc60436c739f0a0fce23b4830c7e1561a53;hpb=9cfd5f43a9d43b931ea51aaba514e25ee50eedce diff --git a/src/main/java/org/hedgecode/chess/scanner/portal/AbstractRequestScanner.java b/src/main/java/org/hedgecode/chess/scanner/portal/AbstractRequestScanner.java index fd72e6e..a82422e 100644 --- a/src/main/java/org/hedgecode/chess/scanner/portal/AbstractRequestScanner.java +++ b/src/main/java/org/hedgecode/chess/scanner/portal/AbstractRequestScanner.java @@ -19,8 +19,6 @@ package org.hedgecode.chess.scanner.portal; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; -import java.io.UnsupportedEncodingException; -import java.net.URLEncoder; import java.util.List; import java.util.Map; @@ -33,8 +31,9 @@ import org.hedgecode.chess.scanner.ChessHogScannerConstants; import org.hedgecode.chess.scanner.ChessHogScannerException; import org.hedgecode.chess.scanner.Scanner; import org.hedgecode.chess.scanner.regex.RegexMatcher; -import org.hedgecode.chess.scanner.regex.RegexMatcherResult; import org.hedgecode.chess.scanner.regex.RegexResult; +import org.hedgecode.chess.scanner.regex.RegexType; +import org.hedgecode.chess.scanner.regex.RegexTypeMatcher; /** * AbstractRequestScanner @@ -78,157 +77,98 @@ public abstract class AbstractRequestScanner implements Scanner { return sb.toString(); } - protected String matchRequest(String url, String match) + protected List split(String url, String splitMatch) throws ChessHogScannerException { + RegexResult result = splitRequest(url, splitMatch); + return result.resultList(); + } + + protected Map splitMap(String url, String splitMatch) throws ChessHogScannerException { + RegexResult result = splitRequest(url, splitMatch); + return result.resultMap(); + } + + protected RegexResult splitRequest(String url, String splitMatch) throws ChessHogScannerException { + RegexMatcher matcher = new RegexTypeMatcher( + RegexType.SPLIT, splitMatch + ); + return matchRequest(url, matcher, false); + } + + protected String match(String url, String match) throws ChessHogScannerException { - List result = matchRequest(url, match, true); + List result = match(url, match, true); return result.isEmpty() ? null : result.get(0); } - protected List matchRequest(String url, String match, boolean isFirst) + protected List match(String url, String match, boolean isFirst) throws ChessHogScannerException { + RegexMatcher matcher = new RegexTypeMatcher( + RegexType.FIND, match + ); RegexResult result = matchRequest( url, - new RegexMatcherResult( - match, - isFirst, - false - ) + matcher, + isFirst ); return result.resultList(); } - protected String matchRequest(String url, String startMatch, String endMatch) - throws ChessHogScannerException - { - return matchRequest(url, startMatch, endMatch, true); - } - - protected String matchRequest(String url, String startMatch, String endMatch, boolean isFirst) + protected Map matchMap(String url, String match, boolean isFirst) throws ChessHogScannerException { + RegexMatcher matcher = new RegexTypeMatcher( + RegexType.FIND, match + ); RegexResult result = matchRequest( url, - new RegexMatcherResult( - startMatch, - endMatch, - isFirst, - false - ) + matcher, + isFirst ); - return result.isEmpty() ? null : result.resultList().get(0); + return result.resultMap(); } -/* - protected String matchRequest(String url, String match) + protected String match(String url, String startMatch, String endMatch) throws ChessHogScannerException { - List result = matchRequest(url, match, true); + List result = match(url, startMatch, endMatch, true); return result.isEmpty() ? null : result.get(0); } - protected List matchRequest(String url, String match, boolean isFirst) + protected List match(String url, String startMatch, String endMatch, boolean isFirst) throws ChessHogScannerException { - HttpGet request = new HttpGet(url); - CloseableHttpResponse response = null; - List result = new ArrayList<>(); - try { - response = getClient().execute(request); - Pattern pattern = Pattern.compile(match); - try (BufferedReader br = new BufferedReader( - new InputStreamReader( - response.getEntity().getContent(), - ChessHogScannerConstants.CHARSET - ) - )) { - String line; - while ((line = br.readLine()) != null) { - Matcher matcher = pattern.matcher(line); - if (matcher.find()) { - result.add( - matcher.group(1) - ); - if (isFirst) { - break; - } - } - } - } - } catch (IOException cause) { - throw new ChessHogScannerException( - String.format("Error occurred for requesting URL: %s", url), cause - ); - } finally { - if (response != null) { - try { - response.close(); - } catch (IOException ignored) {} - } - } - return result; + RegexMatcher matcher = new RegexTypeMatcher( + startMatch, endMatch + ); + RegexResult result = matchRequest( + url, + matcher, + isFirst + ); + return result.resultList(); } - protected String matchRequest(String url, String startMatch, String endMatch) + protected Map matchMap(String url, String startMatch, String endMatch, boolean isFirst) throws ChessHogScannerException { - return matchRequest(url, startMatch, endMatch, true); + RegexMatcher matcher = new RegexTypeMatcher( + startMatch, endMatch + ); + RegexResult result = matchRequest( + url, + matcher, + isFirst + ); + return result.resultMap(); } - protected String matchRequest(String url, String startMatch, String endMatch, boolean isFirst) + protected RegexResult matchRequest(String url, RegexMatcher matcher, boolean isFirst) throws ChessHogScannerException { HttpGet request = new HttpGet(url); CloseableHttpResponse response = null; - StringBuilder sb = new StringBuilder(); - try { - response = getClient().execute(request); - Pattern startPattern = Pattern.compile(startMatch); - Pattern endPattern = Pattern.compile(endMatch); - try (BufferedReader br = new BufferedReader( - new InputStreamReader( - response.getEntity().getContent(), - ChessHogScannerConstants.CHARSET - ) - )) { - String line; - boolean isMatch = false; - while ((line = br.readLine()) != null) { - Matcher matcher = isMatch - ? endPattern.matcher(line) - : startPattern.matcher(line); - if (matcher.find()) { - sb.append(line); - if (isMatch && isFirst) { - break; - } - isMatch = !isMatch; - } else { - if (isMatch) { - sb.append(line); - } - } - } - } - } catch (IOException cause) { - throw new ChessHogScannerException( - String.format("Error occurred for requesting URL: %s", url), cause - ); - } finally { - if (response != null) { - try { - response.close(); - } catch (IOException ignored) {} - } - } - return sb.length() > 0 ? sb.toString() : null; - } -*/ - - protected RegexResult matchRequest(String url, RegexMatcher matcher) throws ChessHogScannerException { - HttpGet request = new HttpGet(url); - CloseableHttpResponse response = null; try { response = getClient().execute(request); try (BufferedReader br = new BufferedReader( @@ -240,7 +180,7 @@ public abstract class AbstractRequestScanner implements Scanner { String line; while ((line = br.readLine()) != null) { matcher.match(line); - if (matcher.isBreak()) { + if (isFirst && !matcher.result().isEmpty()) { break; } } @@ -259,23 +199,6 @@ public abstract class AbstractRequestScanner implements Scanner { return matcher.result(); } -/* - protected String urlEncode(String query) throws ChessHogScannerException { - String encodeQuery; - try { - encodeQuery = URLEncoder.encode( - query, ChessHogScannerConstants.CHARSET.name() - ); - } catch (UnsupportedEncodingException cause) { - throw new ChessHogScannerException( - String.format("Unsupported encoding: %s", ChessHogScannerConstants.CHARSET.name()), - cause - ); - } - return encodeQuery; - } -*/ - private CloseableHttpClient getClient() { return HttpClients.createMinimal(); }