[LIB-13] Stub scanners for some portals
[chesshog-scanner.git] / src / main / java / org / hedgecode / chess / scanner / portal / ChessBombScanner.java
index 7b19256..6139ed4 100644 (file)
@@ -19,19 +19,20 @@ package org.hedgecode.chess.scanner.portal;
 import java.util.Base64;
 
 import org.hedgecode.chess.scanner.ChessHogScannerException;
+import org.hedgecode.chess.scanner.Scanner;
 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
  *
  * @author Dmitry Samoshin aka gotty
  */
-public class ChessBombScanner extends AbstractSettingsScanner {
+public class ChessBombScanner extends AbstractSettingsScanner implements Scanner {
 
     private static final String SETTINGS_FILENAME = "chessbomb.settings";
 
@@ -44,7 +45,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 +88,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 +116,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
+                )
         );
     }