public function getProfileXml()
 {
     if ($this->profile == null) {
         $url = self::BASE_URL . $this->steamId . '/?xml=1';
         $xml = Helper::cURL($url);
         $this->profile = new \SimpleXMLElement($xml);
     }
     return $this->profile;
 }
 public static function GetTimeDifference()
 {
     try {
         $response = Helper::cURL('http://api.steampowered.com/ITwoFactorService/QueryTime/v0001', null, ['steamid' => 0]);
         $json = json_decode($response, true);
         if (isset($json['response']) && isset($json['response']['server_time'])) {
             return (int) $json['response']['server_time'] - time();
         }
     } catch (\Exception $ex) {
     }
     return 0;
 }
 public function send($token = '')
 {
     $url = 'https://steamcommunity.com/tradeoffer/new/send';
     $referer = 'https://steamcommunity.com/tradeoffer/new/?partner=' . $this->accountId;
     $params = ['sessionid' => $this->steamCommunity->getSessionId(), 'serverid' => '1', 'partner' => Helper::toCommunityID($this->accountId), 'tradeoffermessage' => $this->message, 'json_tradeoffer' => json_encode($this), 'trade_offer_create_params' => empty($token) ? "{}" : json_encode(['trade_offer_access_token' => $token])];
     $response = $this->steamCommunity->cURL($url, $referer, $params);
     $json = json_decode($response, true);
     if (is_null($json)) {
         return 0;
     } else {
         if (isset($json['tradeofferid'])) {
             return $json['tradeofferid'];
         } else {
             return 0;
         }
     }
 }
 /**
  * Accept a trade offer.
  * @param TradeOffer $tradeOffer
  * @return bool
  */
 public function acceptTrade(TradeOffer $tradeOffer)
 {
     if (!$tradeOffer->isOurOffer()) {
         $url = 'https://steamcommunity.com/tradeoffer/' . $tradeOffer->getTradeOfferId() . '/accept';
         $referer = 'https://steamcommunity.com/tradeoffer/' . $tradeOffer->getTradeOfferId() . '/';
         $params = ['sessionid' => $this->steamCommunity->getSessionId(), 'serverid' => '1', 'tradeofferid' => $tradeOffer->getTradeOfferId(), 'partner' => Helper::toCommunityID($tradeOffer->getOtherAccountId())];
         $response = $this->steamCommunity->cURL($url, $referer, $params);
         $json = json_decode($response, true);
         if (is_null($json)) {
             return false;
         } else {
             return isset($json['tradeid']);
         }
     }
     return false;
 }
 /**
  * @param int $page
  * @return HistoryItem[]
  */
 public function getHistory($page = 1)
 {
     $history = [];
     $xpath = $this->getHistoryXPath($page);
     /** @var \DOMElement[] $historyItems */
     $historyItems = $xpath->query('//div[contains(@class, "group_summary")]/div[contains(@class, "historyItem")]');
     foreach ($historyItems as $historyItem) {
         $type = $xpath->query('.//span[contains(@class, "historyShort")]', $historyItem)->item(0)->nodeValue;
         $date = $xpath->query('.//span[contains(@class, "historyDate")]', $historyItem)->item(0)->nodeValue;
         $users = $xpath->query('.//a', $historyItem);
         if ($users->length == 2) {
             /** @var \DOMElement $user */
             $user = $users->item(1);
             $userAccountId = $user->getAttribute('data-miniprofile');
             /** @var \DOMElement $targetUser */
             $targetUser = $users->item(0);
             $targetAccountId = $targetUser->getAttribute('data-miniprofile');
             $history[] = new HistoryItem($type, $date, Helper::toCommunityID($userAccountId), Helper::toCommunityID($targetAccountId));
         } else {
             if ($users->length == 1) {
                 $user = $users->item(0);
                 $userAccountId = $user->getAttribute('data-miniprofile');
                 $history[] = new HistoryItem($type, $date, Helper::toCommunityID($userAccountId));
             }
         }
     }
     return $history;
 }
 public function getWalletBalance()
 {
     if ($this->steamCommunity->isLoggedIn()) {
         $url = 'http://steamcommunity.com/market/';
         $response = $this->steamCommunity->cURL($url);
         $pattern = '/<span id=\\"marketWalletBalanceAmount\\">(.*)<\\/span>/i';
         preg_match($pattern, $response, $matches);
         if (!isset($matches[1])) {
             throw new SteamException('Unexpected response from Steam.');
         }
         $balance = $matches[1];
         if (substr($balance, -1) == '.') {
             $balance = substr($balance, 0, -1);
         }
         return Helper::getAmount($balance);
     } else {
         return 0;
     }
 }