/**
* 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();
}