/** * refresh OAuth token * @param ShopInterface $shop * @return TokenInterface * @throws Exception */ public function refresh(ShopInterface $shop) { if (!$this->client) { throw new Exception('No client specified'); } $token = $shop->getToken(); $refreshToken = $token->getRefreshToken(); try { $this->client->setRefreshToken($refreshToken); $newToken = $this->client->refreshTokens(); $token->setExpiresAt(new \DateTime('+' . (int) $newToken['expires_in'] . ' seconds')); $token->setAccessToken($newToken['access_token']); $token->setRefreshToken($newToken['refresh_token']); $this->manager->save($token); } catch (ClientException $ex) { throw new Exception('', 0, $ex); } return $token; }
/** * get ShopAppstoreLib client * @param ShopInterface $shop * @return ClientInterface * @throws \DreamCommerce\ShopAppstoreLib\Exception\ClientException */ public function getClient(ShopInterface $shop) { $tokens = $shop->getToken(); /** * @var $client Client\OAuth */ $client = Client::factory(Client::ADAPTER_OAUTH, ['entrypoint' => $shop->getShopUrl(), 'client_id' => $this->getAppId(), 'client_secret' => $this->getAppSecret(), 'skip_ssl' => $this->skipSsl, 'user_agent' => $this->getUserAgent()]); $client->setAccessToken($tokens->getAccessToken()); if ($this->logger) { $client->setLogger($this->logger); } return $client; }
/** * check if specified shop supports valid SSL * @param ShopInterface $shop * @return bool */ public function verifySsl(ShopInterface $shop) { $url = $shop->getShopUrl(); return $this->verifySslUrl($url . '/basket'); }