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;
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
return sb.toString();
}
- protected String matchRequest(String url, String match)
+ protected List<String> split(String url, String splitMatch) throws ChessHogScannerException {
+ RegexResult result = splitRequest(url, splitMatch);
+ return result.resultList();
+ }
+
+ protected Map<String, String> 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<String> result = matchRequest(url, match, true);
+ List<String> result = match(url, match, true);
return result.isEmpty() ? null : result.get(0);
}
- protected List<String> matchRequest(String url, String match, boolean isFirst)
+ protected List<String> 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<String, String> 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<String> result = matchRequest(url, match, true);
+ List<String> result = match(url, startMatch, endMatch, true);
return result.isEmpty() ? null : result.get(0);
}
- protected List<String> matchRequest(String url, String match, boolean isFirst)
+ protected List<String> match(String url, String startMatch, String endMatch, boolean isFirst)
throws ChessHogScannerException
{
- HttpGet request = new HttpGet(url);
- CloseableHttpResponse response = null;
- List<String> 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<String, String> 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(
String line;
while ((line = br.readLine()) != null) {
matcher.match(line);
- if (matcher.isBreak()) {
+ if (isFirst && !matcher.result().isEmpty()) {
break;
}
}
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();
}