Seditio Source
Root |
./othercms/phpBB3/vendor/lusitanian/oauth/src/OAuth/OAuth2/Service/BattleNet.php
<?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;
    }
}