Skip to content

Commit

Permalink
Add support for Harvest
Browse files Browse the repository at this point in the history
  • Loading branch information
robbanl committed Feb 10, 2014
1 parent 18a7dfa commit 0d21b53
Showing 1 changed file with 87 additions and 0 deletions.
87 changes: 87 additions & 0 deletions src/OAuth/OAuth2/Service/Harvest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
<?php

namespace OAuth\OAuth2\Service;

use OAuth\OAuth2\Token\StdOAuth2Token;
use OAuth\Common\Http\Exception\TokenResponseException;
use OAuth\Common\Http\Uri\Uri;
use OAuth\Common\Consumer\CredentialsInterface;
use OAuth\Common\Http\Client\ClientInterface;
use OAuth\Common\Storage\TokenStorageInterface;
use OAuth\Common\Http\Uri\UriInterface;

class Harvest extends AbstractService {

public function __construct(
CredentialsInterface $credentials,
ClientInterface $httpClient,
TokenStorageInterface $storage,
$scopes = array(),
UriInterface $baseApiUri = null
) {
parent::__construct($credentials, $httpClient, $storage, $scopes, $baseApiUri);

if ( null === $baseApiUri ) {
$this->baseApiUri = new Uri('https://api.github.com/');
}
}

/**
* {@inheritdoc}
*/
public function getAuthorizationEndpoint()
{
return new Uri('https://api.harvestapp.com/oauth2/authorize');
}

/**
* {@inheritdoc}
*/
public function getAccessTokenEndpoint()
{
return new Uri('https://api.harvestapp.com/oauth2/token');
}

/**
* {@inheritdoc}
*/
protected function getAuthorizationMethod()
{
return static::AUTHORIZATION_METHOD_QUERY_STRING;
}

/**
* {@inheritdoc}
*/
protected function parseAccessTokenResponse($responseBody)
{

echo "OK";
$data = json_decode($responseBody, true);

if ( null === $data || ! is_array($data) ) {
throw new TokenResponseException('Unable to parse response.');
} elseif ( isset($data['error']) ) {
throw new TokenResponseException('Error in retrieving token: "' . $data['error'] . '"');
}

$token = new StdOAuth2Token();
$token->setAccessToken($data['access_token']);
$token->setEndOfLife($data['expires_in']);

unset($data['access_token']);

$token->setExtraParams($data);

return $token;
}

/**
* @return array
*/
protected function getExtraOAuthHeaders()
{
return array('Accept' => 'application/json');
}

}

0 comments on commit 0d21b53

Please sign in to comment.