Skip to content
This repository has been archived by the owner on Feb 15, 2024. It is now read-only.

Commit

Permalink
Implemented the /api/heuristics endpoint
Browse files Browse the repository at this point in the history
  • Loading branch information
programarivm committed Nov 24, 2023
1 parent b4db1be commit da6415b
Showing 1 changed file with 40 additions and 2 deletions.
42 changes: 40 additions & 2 deletions app/routes.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,16 @@

use App\Application\Actions\User\ListUsersAction;
use App\Application\Actions\User\ViewUserAction;
use Chess\Heuristics\EvalFunction;
use Chess\Heuristics\SanHeuristics;
use Chess\Variant\Capablanca\Board as CapablancaBoard;
use Chess\Variant\Capablanca\FEN\StrToBoard as CapablancaFenStrToBoard;
use Chess\Variant\CapablancaFischer\Board as CapablancaFischerBoard;
use Chess\Variant\CapablancaFischer\FEN\StrToBoard as CapablancaFischerStrToBoard;
use Chess\Variant\Chess960\Board as Chess960Board;
use Chess\Variant\Chess960\FEN\StrToBoard as Chess960FenStrToBoard;
use Chess\Variant\Classical\Board as ClassicalBoard;
use Chess\Variant\Classical\FEN\StrToBoard as ClassicalFenStrToBoard;
use Psr\Http\Message\ServerRequestInterface as Request;
use Slim\App;
use Slim\Http\Response as Response;
Expand Down Expand Up @@ -34,8 +44,36 @@
$app->post('/api/heuristics', function (Request $request, Response $response) {
$params = $request->getParsedBody();

// TODO
// TODO: Parameter validation

return $response->withJson($params, 200);
if ($params['variant'] === Chess960Board::VARIANT) {
$startPos = str_split($params['startPos']);
$board = isset($params['fen'])
? (new Chess960FenStrToBoard($params['fen'], $startPos))->create()
: new Chess960Board($startPos);
} elseif ($params['variant'] === CapablancaBoard::VARIANT) {
$board = isset($params['fen'])
? (new CapablancaFenStrToBoard($params['fen']))->create()
: new CapablancaBoard();
} elseif ($params['variant'] === CapablancaFischerBoard::VARIANT) {
$startPos = str_split($params['startPos']);
$board = isset($params['fen'])
? (new CapablancaFischerStrToBoard($params['fen'], $startPos))->create()
: new CapablancaFischerBoard($startPos);
} elseif ($params['variant'] === ClassicalBoard::VARIANT) {
$board = isset($params['fen'])
? (new ClassicalFenStrToBoard($params['fen']))->create()
: new ClassicalBoard();
}

$evalFunction = new EvalFunction();
$heuristics = new SanHeuristics($params['movetext'], $board);

$json = [
'evalNames' => $evalFunction->names(),
'balance' => $heuristics->getBalance(),
];

return $response->withJson($json, 200);
});
};

0 comments on commit da6415b

Please sign in to comment.