ван лав

Автор: федук, 2 Месяцев назад, написана на языке Plain Text, просмотрена 42 раз(а).
URL https://pastie.ru/view/cd38ff33 Встраивание на сайт
Скачать заметку или Посмостреть исходник Test1
  1. <?php
  2. /**
  3.  * Created by PhpStorm.
  4.  * User: олексiй
  5.  * Date: 21.01.2019
  6.  * Time: 23:47
  7.  */
  8.  
  9. namespace App\Save;
  10. use App\Match;
  11. use App\Save\Contract\SaveContract;
  12.  
  13. class MatchStats implements SaveContract
  14. {
  15.     private const ITERATION_STEP = 12;
  16.     private const MATCH_API_ALIAS = 'https://api.esports.mail.ru/match/';
  17.  
  18.     public function saveData($dataArray)
  19.     {
  20.         $i = 0;
  21.         $arrayIter = 0;
  22.         $matchId = $dataArray['match_id'];
  23.         $matchAddress = self::MATCH_API_ALIAS.$matchId.'/';
  24.  
  25.         $guzzle = new \GuzzleHttp\Client();
  26.  
  27.         try {
  28.             $api = $guzzle->request('GET', $matchAddress)->getBody()->getContents();
  29.         }catch (\GuzzleHttp\Exception\GuzzleException $e){
  30.             try {
  31.                 $api = $guzzle->request('GET', $matchAddress)->getBody()->getContents();
  32.             }catch (\GuzzleHttp\Exception\GuzzleException $e){
  33.                 $api = $guzzle->request('GET', $matchAddress)->getBody()->getContents();
  34.             }
  35.         }
  36.         $matchData = json_decode($api,TRUE);
  37.         if (isset($matchData['error'])){
  38.  
  39.         }
  40.         else{
  41.             //Сохранение команд, если не сохранены
  42.  
  43.             $teamIds = [];
  44.  
  45.             if (isset($matchData['teams'])){
  46.                 foreach ($matchData['teams'] as $team){
  47.                     $profile = new TeamProfile();
  48.                     $teamId = $profile->saveData($team['hash']);
  49.                     array_push($teamIds,$teamId);
  50.                 }
  51.             }
  52.  
  53.             $match = Match::where('esports_id', $matchId)->count();
  54.             if ($match > 0){
  55.             }
  56.             else{
  57.                 $match = new Match;
  58.                 $match->esports_id = $matchId;
  59.                 $match->tournament_id = $dataArray['tournament_id'];
  60.                 $match->points_team_1 = $matchData['match']['pointsTeam1'];
  61.                 $match->points_team_2 = $matchData['match']['pointsTeam2'];
  62.                 $match->start_time = $matchData['match']['tsStartTime'];
  63.                 $match->end_time = $matchData['match']['tsEndTime'] ?? 0;
  64.                 $match->team_1_id = $teamIds[0] ?? null;
  65.                 $match->team_2_id = $teamIds[1] ?? null;
  66.                 $match->team_1_hash = $matchData['teams'][0]['hash'];
  67.                 $match->team_2_hash = $matchData['teams'][1]['hash'];
  68.                 $match->save();
  69.  
  70.                 $statsArray = $dataArray['stats'];
  71.                 foreach ($dataArray['players'] as $array){
  72.                     foreach ($array as $player) {
  73.                         $playerStatArray = [];
  74.                         for ($u = $i * self::ITERATION_STEP; $u <= ($i+1)  * self::ITERATION_STEP - 1; $u++) {
  75.                             array_push($playerStatArray,$statsArray[$arrayIter][$u]);
  76.                         }
  77.                         $playerResultArray = [
  78.                             'player_hash' => $player,
  79.                             'player_stats' => $playerStatArray,
  80.                             'match_id' => $match->id,
  81.                         ];
  82.  
  83.                         $matchData = new PlayerMatchData();
  84.                         $matchData->saveData($playerResultArray);
  85.                         $i++;
  86.                     }
  87.                     $arrayIter++;
  88.                     $i = 0;
  89.                 }
  90.             }
  91.  
  92.         }
  93.  
  94.  
  95.  
  96.  
  97. }
  98. }
  99.  
  100. <?php
  101. /**
  102.  * Created by PhpStorm.
  103.  * User: олексiй
  104.  * Date: 03.02.2019
  105.  * Time: 22:51
  106.  */
  107.  
  108. namespace App\Save;
  109.  
  110.  
  111. use App\Save\Contract\SaveContract;
  112. use App\Team;
  113.  
  114. class TeamProfile implements SaveContract
  115. {
  116.     protected const TEAM_ENDPOINT = 'https://api.esports.mail.ru/team/';
  117.  
  118.     public function saveData($teamHash)
  119.     {
  120.         if ($this->checkHash($teamHash) == true){
  121.             $team = Team::where('hash', $teamHash)->first();
  122.         }
  123.         else {
  124.             $teamAddress = self::TEAM_ENDPOINT . $teamHash;
  125.             $guzzle = new \GuzzleHttp\Client();
  126.  
  127.             try {
  128.                 $api = $guzzle->request('GET', $teamAddress)->getBody()->getContents();
  129.             }catch (\GuzzleHttp\Exception\GuzzleException $e){
  130.                 try {
  131.                     $api = $guzzle->request('GET', $teamAddress)->getBody()->getContents();
  132.                 }catch (\GuzzleHttp\Exception\GuzzleException $e){
  133.                     $api = $guzzle->request('GET', $teamAddress)->getBody()->getContents();
  134.                 }
  135.             }
  136.  
  137.             $teamData = json_decode($api, TRUE);
  138.  
  139.             $teamName = $teamData['team']['name'];
  140.             if (isset($teamData['team']['imgLogo'])) {
  141.                 $esportsLogo = $teamData['team']['imgLogo'];
  142.             }
  143.  
  144.             $team = new Team();
  145.             $team->name = $teamName;
  146.             $team->hash = $teamHash;
  147.             $team->logo_esports = $esportsLogo ?? null;
  148.             $team->save();
  149.         }
  150.  
  151.         return $team->id;
  152.     }
  153.  
  154.     private function checkHash($teamHash){
  155.         $team = Team::where('hash', $teamHash);
  156.  
  157.         if ($team->count() > 0){
  158.             return true;
  159.         }
  160.         else{
  161.             return false;
  162.         }
  163.  
  164.     }
  165.  
  166.  
  167. }
Ответить: "ван лав"

Здесь Вы можете ответить на заметку выше