/** * call an api endpoint. automatically adds needed authorization headers with access token or parameters * * @param string $endpoint * @param string $method default 'GET' * @param array $uriParameters optional * @param mixed $postBody optional, can be string or array * @param array $additionalHeaders * @return string */ public function callApiEndpoint($endpoint, $method = 'GET', array $uriParameters = array(), $postBody = null, array $additionalHeaders = array()) { if (!$this->_dataStore->retrieveAccessToken()->getAccessToken()) { throw new Exception('could not revoke access token, no access token found, did you forgot call autorize()!!'); } $token = $this->_dataStore->retrieveAccessToken(); //check if token is invalid if ($token->getLifeTime() && $token->getLifeTime() < time()) { $token = $this->refreshAccessToken($token); } $parameters = null; $authorizationMethod = $this->_configuration->getAuthorizationMethod(); switch ($authorizationMethod) { case Service\Configuration::AUTHORIZATION_METHOD_HEADER: $additionalHeaders = array_merge(array('Authorization: OAuth ' . $token->getAccessToken()), $additionalHeaders); break; case Service\Configuration::AUTHORIZATION_METHOD_ALTERNATIVE: if ($method !== 'GET') { if (is_array($postBody)) { $postBody['oauth_token'] = $token->getAccessToken(); } else { $postBody .= '&oauth_token=' . urlencode($token->getAccessToken()); } } else { $uriParameters['oauth_token'] = $token->getAccessToken(); } break; default: throw new Exception("Invalid authorization method specified"); break; } if ($method !== 'GET') { if (is_array($postBody)) { $parameters = http_build_query($postBody); } else { $parameters = $postBody; } } if (!empty($uriParameters)) { $endpoint .= (strpos($endpoint, '?') !== false ? '&' : '?') . http_build_query($uriParameters); } $http = new HttpClient($endpoint, $method, $parameters, $additionalHeaders); $http->execute(); return $http->getResponse(); }