/** * @param string $league * @param int $teamSportId */ function getTeams(string $league, int $teamSportId) { try { // grab the db connection $pdo = connectToEncryptedMySQL("/etc/apache2/capstone-mysql/sprots.ini"); $config = readConfig("/etc/apache2/capstone-mysql/sprots.ini"); $apiKeys = json_decode($config["fantasyData"]); $opts = array('http' => array('method' => "GET", 'header' => "Content-Type: application/json\r\nOcp-Apim-Subscription-key: " . $apiKeys->{$league}, 'content' => "{body}")); $context = stream_context_create($opts); // response from api $response = file_get_contents("https://api.fantasydata.net/{$league}/v2/JSON/teams", false, $context); $data = json_decode($response); // Places team in designated sport, and populates teams in team db with response from api $sport = Sport::getSportBySportLeague($pdo, $league); foreach ($data as $team) { $team = new Team(null, $sport->getSportId(), $team->TeamID, $team->City, $team->Name); $team->insert($pdo); // get team statistics by game $game = Game::getGameByGameFirstTeamId($pdo, $team->getTeamId()); if ($game === null) { $game = Game::getGameByGameSecondTeamId($pdo, $team->getTeamId()); if ($game === null) { continue; } } $gameDate = $game->getGameTime()->format("Y-m-d"); // response from api $response = file_get_contents("https://api.fantasydata.net/{$league}/v2/JSON/TeamGameStatsByDate/{$gameDate}"); $statisticData = json_decode($response); // adds statistics to database foreach ($GLOBALS['stats'] as $statisticName) { $statistic = Statistic::getStatisticByStatisticName($pdo, $statisticName); if ($statistic === null || $statistic->getSize() <= 0) { $statistic = new Statistic(null, $statisticName); $statistic->insert($pdo); } else { $statistic = $statistic[0]; } $statisticValue = null; if (empty($statisticData->{$statisticName}) === false) { $statisticValue = $statisticData->{$statisticName}; } if ($statisticValue !== null) { // $statisticValue = ""; $teamStatisticToInsert = new TeamStatistic($game->getGameId(), $team->getTeamId(), $statistic->getTeamStatisticStatisticId(), $statisticValue); $teamStatisticToInsert->insert($pdo); } else { echo "<p> team statistics isn't working </p>" . PHP_EOL; } } } } catch (Exception $exception) { echo "Something went wrong: " . $exception->getMessage() . PHP_EOL; } catch (TypeError $typeError) { echo "Something went wrong: " . $typeError->getMessage() . PHP_EOL; } }
echo "Something went wrong: " . $typeError->getMessage() . PHP_EOL; } //downloader for players NFL try { $seasoning = ["2015", "2016"]; foreach ($seasoning as $season) { $pdo = connectToEncryptedMySQL("/etc/apache2/capstone-mysql/sprots.ini"); $config = readConfig("/etc/apache2/capstone-mysql/sprots.ini"); $apiKeys = json_decode($config["fantasyData"]); $opts = array('http' => array('method' => "GET", 'header' => "Content-Type: application/json\r\nOcp-Apim-Subscription-key: " . $apiKeys->NFL, 'content' => "{body}")); $context = stream_context_create($opts); //response from Api $response = file_get_contents("https://api.fantasydata.net/nfl/v2/JSON/Players/{$season}", false, $context); $data = json_decode($response); $stats = ["PlayerID ", "Team", "Number ", "FirstName ", "LastName", "Status ", "Height ", "Weight", "BirthDate ", "College ", "Experience ", "Active ", "PositionCategory ", "Name", "Age ", "ExperienceString ", "BirthDateString", "PhotoUrl ", "ByeWeek ", "UpcomingGameOpponent ", "UpcomingGameWeek", "ShortName ", "AverageDraftPosition ", "DepthPositionCategory ", "DepthPosition ", "DepthOrder ", "DepthDisplayOrder ", "CurrentTeam ", "HeightFeet ", "UpcomingOpponentRank ", "UpcomingOpponentPositionRank ", "CurrentStatus"]; $sport = Sport::getSportBySportLeague($pdo, "NFL"); foreach ($data as $player) { $team = Team::getTeamByTeamApiId($pdo, $player->TeamID); if ($team !== null) { $playerToInsert = new Player(null, $player->PlayerID, $team->getTeamId(), $sport->getSportId(), $player->FirstName . " " . $player->LastName); $playerToInsert->insert($pdo); $game = Game::getGameByGameFirstTeamId($pdo, $team->getTeamId()); if ($game === null) { $game = Game::getGameByGameSecondTeamId($pdo, $team->getTeamId()); } //get player statistic by game //response from api for ($week = 1; $week <= 21; $week++) { $response = file_get_contents("https://api.fantasydata.net/nfl/v2/JSON/PlayerGameStatsByPlayerID/{$season}/{$week}/{$player->PlayerID}", false, $context); $statisticData = json_decode($response); //adds statistic to database
//sanitize inputs $id = filter_input(INPUT_GET, "id", FILTER_VALIDATE_INT); //make sure the id is valid for methods that require it if (($method === "DELETE" || $method === "PUT") && (empty($id) === true || $id < 0)) { throw new InvalidArgumentException("id can not be empty or negative", 405); } //sanitize and trim other fields $sportId = filter_input(INPUT_GET, "sportId", FILTER_VALIDATE_INT); $sportLeague = filter_input(INPUT_GET, "sportLeague", FILTER_VALIDATE_INT); $sportName = filter_input(INPUT_GET, "sportName", FILTER_VALIDATE_INT); //get the Sport based on the given field if (empty($id) === false) { $sport = Sport::getSportBySportId($pdo, $id); $reply->data = $sport; } elseif (empty($teamId) === false) { $sport = Sport::getSportBySportLeague($pdo, $playerTeamId); $reply->date = $sport; } elseif (empty($sportId) === false) { $sport = Sport::getSportBySportName($pdo, $playerSportId); $reply->date = $sport; } else { $reply->data = Sport::getAllSportLeagues($pdo)->toArray(); } } catch (Exception $exception) { $reply->status = $exception->getCode(); $reply->message = $exception->getMessage(); } catch (TypeError $typeError) { $reply->status = $typeError->getCode(); $reply->message = $typeError->getMessage(); } header("Content-type: application/json");