$appid->success)) && ($obj->$appid->success)) { $obj->$appid->data->online_count = 0; $obj->$appid->data->rating_count = 0; try { $obj->$appid->data->online_count = static::queryUserCount($appid); } catch (\Exception $e) { } try { $obj->$appid->data->rating_count = static::queryRating($appid); } catch (\Exception $e) { } // Store data in cache self::setToCache($cacheKey, $obj->$appid->data); return $obj->$appid->data; } throw new \Exception('Invalid data response'); } /** * Get data from Redis cache * * @param $key * @return mixed|bool */ private static function getFromCache($key) { $redis = new Redis(); $redis->connect(env('REDIS_HOST'), env('REDIS_PORT')); if (env('REDIS_PASS') !== '') { $redis->auth(env('REDIS_PASS')); } $redis->select(env('REDIS_DATABASE')); // Selecting Redis database index $cachedData = $redis->get($key); if ($cachedData !== false) { return json_decode($cachedData); } return false; } /** * Set data to Redis cache * * @param $key * @param $value */ private static function setToCache($key, $value) { $redis = new Redis(); $redis->connect(env('REDIS_HOST'), env('REDIS_PORT')); if (env('REDIS_PASS') !== '') { $redis->auth(env('REDIS_PASS')); } $redis->select(env('REDIS_DATABASE')); // Selecting Redis database index $redis->set($key, json_encode($value), env('REDIS_EXPIRATION')); } /** * Query Steam product player/user count * * @param $appid * @return mixed * @throws \Exception */ public static function queryUserCount($appid) { $url = "https://api.steampowered.com/ISteamUserStats/GetNumberOfCurrentPlayers/v1/?appid={$appid}"; $handle = curl_init($url); curl_setopt($handle, CURLOPT_HEADER, false); curl_setopt($handle, CURLOPT_RETURNTRANSFER, true); curl_setopt($handle, CURLOPT_FOLLOWLOCATION, true); $response = curl_exec($handle); if(curl_error($handle) !== '') { throw new \Exception('cURL error occurred'); } curl_close($handle); $obj = json_decode($response); if ((isset($obj->response->result)) && ($obj->response->result)) { return $obj->response->player_count; } throw new \Exception('Invalid data response'); } /** * Query user rating * * @param $appid * @return int */ public static function queryRating($appid) { $url = "https://store.steampowered.com/app/{$appid}/?l=english"; $handle = curl_init($url); curl_setopt($handle, CURLOPT_HEADER, false); curl_setopt($handle, CURLOPT_RETURNTRANSFER, true); curl_setopt($handle, CURLOPT_FOLLOWLOCATION, true); $response = curl_exec($handle); if(curl_error($handle) !== '') { throw new \Exception('cURL error occurred'); } curl_close($handle); $metacode = '