| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 |
- <?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 BattleNet extends AbstractService {
-
- /** -----------------------------------------------------------------------
- * Defined scopes.
- *
- * @link https://dev.battle.net/docs
- */
- const SCOPE_WOW_PROFILE = "wow.profile";
- const SCOPE_SC2_PROFILE = "sc2.profile";
-
- /** -----------------------------------------------------------------------
- * Defined API URIs.
- *
- * @link https://dev.battle.net/docs
- */
- const API_URI_US = 'https://us.api.battle.net/';
- const API_URI_EU = 'https://eu.api.battle.net/';
- const API_URI_KR = 'https://kr.api.battle.net/';
- const API_URI_TW = 'https://tw.api.battle.net/';
- const API_URI_CN = 'https://api.battlenet.com.cn/';
- const API_URI_SEA = 'https://sea.api.battle.net/';
-
- public function __construct( CredentialsInterface $credentials,
- ClientInterface $httpClient,
- TokenStorageInterface $storage,
- $scopes = array(),
- UriInterface $baseApiUri = null ) {
-
- parent::__construct( $credentials, $httpClient, $storage,
- $scopes, $baseApiUri );
-
- if( $baseApiUri === null ) {
- $this->baseApiUri = new Uri( self::API_URI_US );
- }
- }
-
- /** -----------------------------------------------------------------------
- * Translates the current base API URI into an OAuth base URI.
- *
- * @returns string Base URI of oauth services.
- */
- private function GetOAuthBaseUri() {
-
- // i love china
- switch( $this->baseApiUri ) {
- case self::API_URI_US: return 'https://us.battle.net/oauth/';
- case self::API_URI_EU: return 'https://eu.battle.net/oauth/';
- case self::API_URI_KR: return 'https://kr.battle.net/oauth/';
- case self::API_URI_TW: return 'https://tw.battle.net/oauth/';
- case self::API_URI_CN: return 'https://www.battlenet.com.cn/oauth/';
- case self::API_URI_SEA: return 'https://sea.battle.net/oauth/';
- }
-
- }
-
- /** -----------------------------------------------------------------------
- * {@inheritdoc}
- */
- public function getAuthorizationEndpoint() {
- return new Uri( $this->GetOAuthBaseUri() . 'authorize' );
- }
-
- /** -----------------------------------------------------------------------
- * {@inheritdoc}
- */
- public function getAccessTokenEndpoint() {
- return new Uri( $this->GetOAuthBaseUri() . 'token' );
- }
-
- /** -----------------------------------------------------------------------
- * {@inheritdoc}
- */
- protected function getAuthorizationMethod()
- {
- return static::AUTHORIZATION_METHOD_QUERY_STRING;
- }
-
- /** -----------------------------------------------------------------------
- * {@inheritdoc}
- */
- protected function parseAccessTokenResponse( $responseBody )
- {
- $data = json_decode($responseBody, true);
- if( $data === null || !is_array($data) ) {
- throw new TokenResponseException( 'Unable to parse response.' );
- } elseif( isset($data['error']) ) {
- $err = $data['error'];
- throw new TokenResponseException(
- "Error in retrieving token: \"$err\"" );
- }
-
- $token = new StdOAuth2Token( $data['access_token'], null,
- $data['expires_in'] );
-
- unset( $data['access_token'] );
- unset( $data['expires_in'] );
-
- $token->setExtraParams( $data );
-
- return $token;
- }
- }
|