Verzeichnisstruktur phpBB-3.2.0


Veröffentlicht
06.01.2017

So funktioniert es


Auf das letzte Element klicken. Dies geht jeweils ein Schritt zurück

Auf das Icon klicken, dies öffnet das Verzeichnis. Nochmal klicken schließt das Verzeichnis.
Auf den Verzeichnisnamen klicken, dies zeigt nur das Verzeichnis mit Inhalt an

(Beispiel Datei-Icons)

Auf das Icon klicken um den Quellcode anzuzeigen

Harvest.php

Zuletzt modifiziert: 09.10.2024, 12:59 - Dateigröße: 4.18 KiB


001  <?php
002   
003  namespace OAuth\OAuth2\Service;
004   
005  use OAuth\Common\Consumer\CredentialsInterface;
006  use OAuth\Common\Http\Client\ClientInterface;
007  use OAuth\Common\Http\Exception\TokenResponseException;
008  use OAuth\Common\Http\Uri\Uri;
009  use OAuth\Common\Http\Uri\UriInterface;
010  use OAuth\Common\Storage\TokenStorageInterface;
011  use OAuth\Common\Token\TokenInterface;
012  use OAuth\OAuth2\Token\StdOAuth2Token;
013   
014  class Harvest extends AbstractService
015  {
016   
017      public function __construct(
018          CredentialsInterface $credentials,
019          ClientInterface $httpClient,
020          TokenStorageInterface $storage,
021          $scopes = array(),
022          UriInterface $baseApiUri = null
023      ) {
024          parent::__construct($credentials, $httpClient, $storage, $scopes, $baseApiUri);
025   
026          if (null === $baseApiUri) {
027              $this->baseApiUri = new Uri('https://api.harvestapp.com/');
028          }
029      }
030   
031      /**
032       * {@inheritdoc}
033       */
034      public function getAuthorizationUri(array $additionalParameters = array())
035      {
036          $parameters = array_merge(
037              $additionalParameters,
038              array(
039                  'client_id'     => $this->credentials->getConsumerId(),
040                  'redirect_uri'  => $this->credentials->getCallbackUrl(),
041                  'state' => 'optional-csrf-token',
042                  'response_type' => 'code',
043              )
044          );
045   
046          // Build the url
047          $url = clone $this->getAuthorizationEndpoint();
048          foreach ($parameters as $key => $val) {
049              $url->addToQuery($key, $val);
050          }
051   
052          return $url;
053      }
054   
055      /**
056       * {@inheritdoc}
057       */
058      public function getAuthorizationEndpoint()
059      {
060          return new Uri('https://api.harvestapp.com/oauth2/authorize');
061      }
062   
063      /**
064       * {@inheritdoc}
065       */
066      public function getAccessTokenEndpoint()
067      {
068          return new Uri('https://api.harvestapp.com/oauth2/token');
069      }
070   
071      /**
072       * {@inheritdoc}
073       */
074      protected function getAuthorizationMethod()
075      {
076          return static::AUTHORIZATION_METHOD_QUERY_STRING;
077      }
078   
079      /**
080       * {@inheritdoc}
081       */
082      protected function parseAccessTokenResponse($responseBody)
083      {
084          $data = json_decode($responseBody, true);
085   
086          if (null === $data || ! is_array($data)) {
087              throw new TokenResponseException('Unable to parse response.');
088          } elseif (isset($data['error'])) {
089              throw new TokenResponseException('Error in retrieving token: "' . $data['error'] . '"');
090          }
091   
092          $token = new StdOAuth2Token();
093          $token->setAccessToken($data['access_token']);
094          $token->setLifetime($data['expires_in']);
095          $token->setRefreshToken($data['refresh_token']);
096   
097          unset($data['access_token']);
098   
099          $token->setExtraParams($data);
100   
101          return $token;
102      }
103   
104      /**
105       * Refreshes an OAuth2 access token.
106       *
107       * @param TokenInterface $token
108       *
109       * @return TokenInterface $token
110       *
111       * @throws MissingRefreshTokenException
112       */
113      public function refreshAccessToken(TokenInterface $token)
114      {
115          $refreshToken = $token->getRefreshToken();
116   
117          if (empty($refreshToken)) {
118              throw new MissingRefreshTokenException();
119          }
120   
121          $parameters = array(
122              'grant_type'    => 'refresh_token',
123              'type'          => 'web_server',
124              'client_id'     => $this->credentials->getConsumerId(),
125              'client_secret' => $this->credentials->getConsumerSecret(),
126              'refresh_token' => $refreshToken,
127          );
128   
129          $responseBody = $this->httpClient->retrieveResponse(
130              $this->getAccessTokenEndpoint(),
131              $parameters,
132              $this->getExtraOAuthHeaders()
133          );
134          $token = $this->parseAccessTokenResponse($responseBody);
135          $this->storage->storeAccessToken($this->service(), $token);
136   
137          return $token;
138      }
139   
140      /**
141       * @return array
142       */
143      protected function getExtraOAuthHeaders()
144      {
145          return array('Accept' => 'application/json');
146      }
147   
148      /**
149       * Return any additional headers always needed for this service implementation's API calls.
150       *
151       * @return array
152       */
153      protected function getExtraApiHeaders()
154      {
155          return array('Accept' => 'application/json');
156      }
157  }
158