/** * @throws ilCloudException */ protected function loadToken() { $this->response->loadFromRequest(array('code')); if ($this->response->getCode()) { $this->exod_app->buildURLs(); $exodCurl = new exodCurl(); $exodCurl->setUrl($this->exod_app->getTokenUrl()); $exodCurl->addHeader("Content-Type: application/x-www-form-urlencoded"); $exodCurl->addPostField('code', $this->response->getCode()); $exodCurl->addPostField('client_id', $this->exod_app->getClientId()); $exodCurl->addPostField('redirect_uri', $this->exod_app->getRedirectUri()); $exodCurl->addPostField('grant_type', 'authorization_code'); $exodCurl->addPostField('client_secret', $this->getExodApp()->getClientSecret()); $exodCurl->addPostField('resource', $this->exod_app->getRessourceUri()); $exodCurl->post(); // exit; $this->response->loadFromResponse($exodCurl->getResponseBody()); // echo '<pre>' . print_r($this, 1) . '</pre>'; // exit; $exodBearerToken = new exodBearerToken(); $exodBearerToken->setAccessToken($this->getResponse()->getAccessToken()); $exodBearerToken->setRefreshToken($this->getResponse()->getRefreshToken()); $exodBearerToken->setValidThrough($this->getResponse()->getExpiresOn()); $this->setExodBearerToken($exodBearerToken); } else { throw new ilCloudException(ilCloudException::UNKNONW_EXCEPTION, 'No Code received'); } }
/** * @param exodBearerToken $exodBearerToken * * @return bool */ public function refreshToken(exodBearerToken &$exodBearerToken) { // throw new ilCloudException(-1, 'failed'); $exodLog = exodLog::getInstance(); $exodLog->write('refreshing-Token...'); $this->exod_app->buildURLs(); $exodCurl = new exodCurl(); $exodCurl->setUrl($this->exod_app->getTokenUrl()); $exodCurl->addHeader("Content-Type: application/x-www-form-urlencoded"); $exodCurl->addPostField('client_secret', $this->getExodApp()->getClientSecret()); $exodCurl->addPostField('client_id', $this->exod_app->getClientId()); $exodCurl->addPostField('grant_type', 'refresh_token'); $exodCurl->addPostField('refresh_token', $exodBearerToken->getRefreshToken()); $exodCurl->addPostField('resource', $this->exod_app->getRessourceUri()); $exodCurl->addPostField('redirect_uri', $this->exod_app->getRedirectUri()); $exodCurl->post(); $this->response->loadFromResponse($exodCurl->getResponseBody()); $exodBearerToken->setRefreshToken($this->response->getRefreshToken()); $exodBearerToken->setAccessToken($this->response->getAccessToken()); $exodBearerToken->setValidThrough($this->response->getExpiresOn()); $this->setExodBearerToken($exodBearerToken); }
/** * @return mixed * @throws ilCloudException */ protected function request() { $exodCurl = new exodCurl(); $exodCurl->setUrl($this->getRessource()); $exodCurl->addHeader("Authorization: Bearer " . $this->getAccessToken()); switch ($this->getRequestType()) { case self::REQ_TYPE_GET: $exodCurl->get(); break; case self::REQ_TYPE_PUT: $exodCurl->setPutFilePath($this->getRequestFilePath()); $exodCurl->put(); break; case self::REQ_TYPE_DELETE: $exodCurl->addHeader('if-match: ' . $this->getRequestEtag()); $exodCurl->delete(); break; case self::REQ_TYPE_POST: $exodCurl->post(); break; } $this->setResponseBody($exodCurl->getResponseBody()); $this->setResponseMimeType($exodCurl->getResponseMimeType()); $this->setResponseContentSize($exodCurl->getResponseContentSize()); $this->setResponseStatus($exodCurl->getResponseStatus()); $resp = json_decode($exodCurl->getResponseBody()); if ($this->getResponseStatus() == 401) { if (self::DEBUG) { echo '<pre>' . print_r($this, 1) . '</pre>'; exit; // } throw new ilCloudException(ilCloudException::AUTHENTICATION_FAILED, 'token invalid'); } if ($resp->error) { if (self::DEBUG) { throw new ilCloudException(-1, print_r($resp, true)); } else { throw new ilCloudException(-1, $resp->error->message); } } }