[ Index ]

PHP Cross Reference of phpBB-3.3.7-deutsch

title

Body

[close]

/vendor/lusitanian/oauth/src/OAuth/OAuth2/Service/ -> Strava.php (source)

   1  <?php
   2  /**
   3   * Strava service.
   4   *
   5   * @author  Pedro Amorim <contact@pamorim.fr>
   6   * @license http://www.opensource.org/licenses/mit-license.html MIT License
   7   * @link    http://strava.github.io/
   8   * @link    http://strava.github.io/api/v3/oauth/
   9   */
  10  
  11  namespace OAuth\OAuth2\Service;
  12  
  13  use OAuth\OAuth2\Token\StdOAuth2Token;
  14  use OAuth\Common\Http\Exception\TokenResponseException;
  15  use OAuth\Common\Http\Uri\Uri;
  16  use OAuth\Common\Consumer\CredentialsInterface;
  17  use OAuth\Common\Http\Client\ClientInterface;
  18  use OAuth\Common\Storage\TokenStorageInterface;
  19  use OAuth\Common\Http\Uri\UriInterface;
  20  use OAuth\OAuth2\Service\Exception\InvalidAccessTypeException;
  21  
  22  /**
  23   * Strava service.
  24   *
  25   * @author  Pedro Amorim <contact@pamorim.fr>
  26   * @license http://www.opensource.org/licenses/mit-license.html MIT License
  27   * @link    http://strava.github.io/
  28   * @link    http://strava.github.io/api/v3/oauth/
  29   */
  30  class Strava extends AbstractService
  31  {
  32      /**
  33       * Scopes
  34       */
  35      // default
  36      const SCOPE_PUBLIC       = 'public';
  37      // Modify activities, upload on the user’s behalf
  38      const SCOPE_WRITE        = 'write';
  39      // View private activities and data within privacy zones
  40      const SCOPE_VIEW_PRIVATE = 'view_private';
  41  
  42      protected $approvalPrompt = 'auto';
  43  
  44      public function __construct(
  45          CredentialsInterface $credentials,
  46          ClientInterface $httpClient,
  47          TokenStorageInterface $storage,
  48          $scopes = array(),
  49          UriInterface $baseApiUri = null
  50      ) {
  51          if (empty($scopes)) {
  52              $scopes = array(self::SCOPE_PUBLIC);
  53          }
  54  
  55          parent::__construct(
  56              $credentials,
  57              $httpClient,
  58              $storage,
  59              $scopes,
  60              $baseApiUri,
  61              true
  62          );
  63  
  64          if (null === $baseApiUri) {
  65              $this->baseApiUri = new Uri('https://www.strava.com/api/v3/');
  66          }
  67      }
  68  
  69      /**
  70       * {@inheritdoc}
  71       */
  72      public function getAuthorizationEndpoint()
  73      {
  74          return new Uri('https://www.strava.com/oauth/authorize?approval_prompt=' . $this->approvalPrompt);
  75      }
  76  
  77      /**
  78       * {@inheritdoc}
  79       */
  80      public function getAccessTokenEndpoint()
  81      {
  82          return new Uri('https://www.strava.com/oauth/token');
  83      }
  84  
  85      /**
  86       * {@inheritdoc}
  87       */
  88      protected function getAuthorizationMethod()
  89      {
  90          return static::AUTHORIZATION_METHOD_HEADER_BEARER;
  91      }
  92  
  93      /**
  94       * {@inheritdoc}
  95       */
  96      protected function parseAccessTokenResponse($responseBody)
  97      {
  98          $data = json_decode($responseBody, true);
  99  
 100          if (null === $data || !is_array($data)) {
 101              throw new TokenResponseException('Unable to parse response.');
 102          } elseif (isset($data['error_description'])) {
 103              throw new TokenResponseException(
 104                  'Error in retrieving token: "' . $data['error_description'] . '"'
 105              );
 106          } elseif (isset($data['error'])) {
 107              throw new TokenResponseException(
 108                  'Error in retrieving token: "' . $data['error'] . '"'
 109              );
 110          }
 111  
 112          $token = new StdOAuth2Token();
 113          $token->setAccessToken($data['access_token']);
 114  
 115          if (isset($data['expires_in'])) {
 116              $token->setLifeTime($data['expires_in']);
 117              unset($data['expires_in']);
 118          }
 119          if (isset($data['refresh_token'])) {
 120              $token->setRefreshToken($data['refresh_token']);
 121              unset($data['refresh_token']);
 122          }
 123  
 124          unset($data['access_token']);
 125  
 126          $token->setExtraParams($data);
 127  
 128          return $token;
 129      }
 130  
 131      public function setApprouvalPrompt($prompt)
 132      {
 133          if (!in_array($prompt, array('auto', 'force'), true)) {
 134              // @todo Maybe could we rename this exception
 135              throw new InvalidAccessTypeException('Invalid approuvalPrompt, expected either auto or force.');
 136          }
 137          $this->approvalPrompt = $prompt;
 138      }
 139  
 140      /**
 141       * {@inheritdoc}
 142       */
 143      protected function getScopesDelimiter()
 144      {
 145          return ',';
 146      }
 147  }


Generated: Thu Mar 24 21:31:15 2022 Cross-referenced by PHPXref 0.7.1