diff --git a/src/Vkontakte.php b/src/Vkontakte.php index 23652e3..ec9565d 100644 --- a/src/Vkontakte.php +++ b/src/Vkontakte.php @@ -12,6 +12,7 @@ class Vkontakte extends AbstractProvider protected $baseOAuthUri = 'https://oauth.vk.com'; protected $baseUri = 'https://api.vk.com/method'; protected $version = '5.52'; + protected $language = null; /** * @type array @@ -111,6 +112,16 @@ class Vkontakte extends AbstractProvider //'wall_comments', ]; + /** + * @param string $language + */ + public function setLanguage($language) + { + $this->language = (string)$language; + + return $this; + } + public function getBaseAuthorizationUrl() { return "$this->baseOAuthUri/authorize"; @@ -125,6 +136,7 @@ class Vkontakte extends AbstractProvider 'fields' => $this->userFields, 'access_token' => $token->getToken(), 'v' => $this->version, + 'lang' => $this->language ]; $query = $this->buildQueryString($params); $url = "$this->baseUri/users.get?$query"; @@ -201,6 +213,7 @@ class Vkontakte extends AbstractProvider 'fields' => $this->userFields, 'access_token' => $token ? $token->getToken() : null, 'v' => $this->version, + 'lang' => $this->language ]; $params = array_merge($default, $params); $query = $this->buildQueryString($params); @@ -230,6 +243,7 @@ class Vkontakte extends AbstractProvider 'fields' => $this->userFields, 'access_token' => $token ? $token->getToken() : null, 'v' => $this->version, + 'lang' => $this->language ]; $params = array_merge($default, $params); $query = $this->buildQueryString($params); diff --git a/tests/VkontakteTest.php b/tests/VkontakteTest.php index eccc407..e46ce3a 100644 --- a/tests/VkontakteTest.php +++ b/tests/VkontakteTest.php @@ -5,6 +5,7 @@ namespace J4k\OAuth2\Client\Test\Provider; use GuzzleHttp\Psr7\Response; use J4k\OAuth2\Client\Provider\Vkontakte as Provider; use League\OAuth2\Client\Provider\Exception\IdentityProviderException; +use League\OAuth2\Client\Token\AccessToken; use Mockery as m; class VkontakteTest extends \PHPUnit_Framework_TestCase @@ -42,6 +43,18 @@ class VkontakteTest extends \PHPUnit_Framework_TestCase 'urlResourceOwnerDetails' => 'http://example.com/user', ], $options)); } + /** + * @return AccessToken + */ + protected function getMockAccessTokenObject() + { + return new AccessToken([ + 'access_token' => 'mock_access_token', + 'resource_owner_id' => 1, + 'refresh_token' => 'mock_refresh_token', + 'expires' => 0 + ]); + } /** * @return string JSON */ @@ -194,6 +207,24 @@ class VkontakteTest extends \PHPUnit_Framework_TestCase static::assertEquals('/access_token', $uri['path']); } + public function testResourceOwnerDetailsUrlNotContainLanguage() + { + $url = $this->provider->getResourceOwnerDetailsUrl($this->getMockAccessTokenObject()); + $uri = parse_url($url); + parse_str($uri['query'], $params); + + static::assertArrayNotHasKey('lang', $params); + } + public function testResourceOwnerDetailsUrlLanguage() + { + $this->provider->setLanguage('en'); + $url = $this->provider->getResourceOwnerDetailsUrl($this->getMockAccessTokenObject()); + $uri = parse_url($url); + parse_str($uri['query'], $params); + + static::assertArrayHasKey('lang', $params); + static::assertEquals('en', $params['lang']); + } public function testScopes() { static::assertEquals($this->defaultScopes, $this->provider->scopes);