[LIB-13] Package restructuring
[chesshog-scanner.git] / src / main / java / org / hedgecode / chess / scanner / portal / ChessBombScanner.java
index 7b19256..0a7c2ae 100644 (file)
@@ -21,10 +21,10 @@ import java.util.Base64;
 import org.hedgecode.chess.scanner.ChessHogScannerException;
 import org.hedgecode.chess.scanner.entity.PGNGame;
 import org.hedgecode.chess.scanner.entity.PGNTournament;
-import org.hedgecode.chess.scanner.format.ArenaFormat;
-import org.hedgecode.chess.scanner.format.Format;
-import org.hedgecode.chess.scanner.format.GameFormat;
-import org.hedgecode.chess.scanner.format.TournamentFormat;
+import org.hedgecode.chess.scanner.format.chessbomb.ArenaFormat;
+import org.hedgecode.chess.scanner.format.chessbomb.Format;
+import org.hedgecode.chess.scanner.format.chessbomb.GameFormat;
+import org.hedgecode.chess.scanner.format.chessbomb.TournamentFormat;
 
 /**
  * ChessBombScanner
@@ -44,7 +44,7 @@ public class ChessBombScanner extends AbstractSettingsScanner {
     public PGNTournament scanTournament(String tournamentId) throws ChessHogScannerException {
         String decodeTournament = decodeUrlByRegex(
                 assignUrl(tournamentId, null),
-                getSettings().getTournamentGamesUrlRegex()
+                getSettings().getTournamentJsonUrlRegex()
         );
 
         TournamentFormat tournamentFormat = Format.formatTournament(decodeTournament);
@@ -87,9 +87,24 @@ public class ChessBombScanner extends AbstractSettingsScanner {
 
     @Override
     public PGNGame scanGame(String gameId, String tournamentId) throws ChessHogScannerException {
-        String decodeGame = decodeUrlByRegex(
+        return scanGameByRegex(
                 assignUrl(gameId, tournamentId, true),
-                getSettings().getGameUrlRegex()
+                getSettings().getGameJsonUrlRegex()
+        );
+    }
+
+    @Override
+    public PGNGame scanUrl(String gameUrl) throws ChessHogScannerException {
+        return scanGameByRegex(
+                gameUrl,
+                getSettings().getGameJsonUrlRegex()
+        );
+    }
+
+    private PGNGame scanGameByRegex(String gameUrl, String regex) throws ChessHogScannerException {
+        String decodeGame = decodeUrlByRegex(
+                gameUrl,
+                regex
         );
 
         GameFormat gameFormat = Format.formatGame(decodeGame);
@@ -100,18 +115,21 @@ public class ChessBombScanner extends AbstractSettingsScanner {
         );
     }
 
-    @Override
-    public PGNGame scanUrl(String gameUrl) throws ChessHogScannerException {
-        return null;
-    }
 
     private String decodeUrlByRegex(String url, String regex) throws ChessHogScannerException {
         String encodeString = match(
                 url,
                 regex
         );
+        if (encodeString == null) {
+            throw new ChessHogScannerException(
+                    String.format("Failed to decode source data for requesting URL: %s", url)
+            );
+        }
         return new String(
-                Base64.getDecoder().decode(encodeString)
+                Base64.getDecoder().decode(
+                        encodeString
+                )
         );
     }