Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add Buddy client #235

Merged
merged 3 commits into from
Apr 17, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 1 addition & 2 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,14 +13,13 @@ php:
matrix:
include:
- php: 7.3
env: DEPENDENCIES=dev LINT=1
env: LINT=1
- php: 7.1
env: COMPOSER_FLAGS='--prefer-lowest --prefer-stable'

before_install:
- phpenv config-rm xdebug.ini || true
- composer self-update
- if [ "$DEPENDENCIES" = "dev" ]; then perl -pi -e 's/^}$/,"minimum-stability":"dev"}/' composer.json; fi;
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't really see the sense of it, and it breaks the build, which in my opinion is much worse

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yea, fair enough - I'm not sure I feel super motivated to test and debug dev deps


install: composer update --prefer-dist $COMPOSER_FLAGS

Expand Down
18 changes: 18 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,7 @@ via Composer:
| [Azure](https://github.com/thenetworg/oauth2-azure) | composer require thenetworg/oauth2-azure |
| [Bitbucket](https://github.com/stevenmaguire/oauth2-bitbucket) | composer require stevenmaguire/oauth2-bitbucket |
| [Box](https://github.com/stevenmaguire/oauth2-box) | composer require stevenmaguire/oauth2-box |
| [Buddy](https://github.com/buddy-works/oauth2-client) | composer require buddy-works/oauth2-client |
| [Buffer](https://github.com/tgallice/oauth2-buffer) | composer require tgallice/oauth2-buffer |
| [CanvasLMS](https://github.com/smtech/oauth2-canvaslms) | composer require smtech/oauth2-canvaslms |
| [Clever](https://github.com/schoolrunner/oauth2-clever) | composer require schoolrunner/oauth2-clever |
Expand Down Expand Up @@ -582,6 +583,23 @@ knpu_oauth2_client:
# whether to check OAuth2 "state": defaults to true
# use_state: true

# will create service: "knpu.oauth2.client.buddy"
# an instance of: KnpU\OAuth2ClientBundle\Client\Provider\BuddyClient
# composer require buddy-works/oauth2-client
buddy:
# must be "buddy" - it activates that type!
type: buddy
# add and set these environment variables in your .env files
client_id: '%env(OAUTH_BUDDY_CLIENT_ID)%'
client_secret: '%env(OAUTH_BUDDY_CLIENT_SECRET)%'
# a route name you'll create
redirect_route: connect_buddy_check
redirect_params: {}
# Base API URL, modify this for self-hosted instances
# base_api_url: https://api.buddy.works
# whether to check OAuth2 "state": defaults to true
# use_state: true

# will create service: "knpu.oauth2.client.buffer"
# an instance of: KnpU\OAuth2ClientBundle\Client\Provider\BufferClient
# composer require tgallice/oauth2-buffer
Expand Down
35 changes: 35 additions & 0 deletions src/Client/Provider/BuddyClient.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
<?php

/*
* OAuth2 Client Bundle
* Copyright (c) KnpUniversity <http://knpuniversity.com/>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/

namespace KnpU\OAuth2ClientBundle\Client\Provider;

use Buddy\OAuth2\Client\Provider\BuddyResourceOwner;
use KnpU\OAuth2ClientBundle\Client\OAuth2Client;
use League\OAuth2\Client\Provider\ResourceOwnerInterface;
use League\OAuth2\Client\Token\AccessToken;

class BuddyClient extends OAuth2Client
{
/**
* @return BuddyResourceOwner|ResourceOwnerInterface
*/
public function fetchUserFromToken(AccessToken $accessToken)
{
return parent::fetchUserFromToken($accessToken);
}

/**
* @return BuddyResourceOwner|ResourceOwnerInterface
*/
public function fetchUser()
{
return parent::fetchUser();
}
}
9 changes: 5 additions & 4 deletions src/Client/Provider/SpotifyClient.php
Original file line number Diff line number Diff line change
Expand Up @@ -10,24 +10,25 @@

namespace KnpU\OAuth2ClientBundle\Client\Provider;

use Kerox\OAuth2\Client\Provider\SpotifyResourceOwner;
use KnpU\OAuth2ClientBundle\Client\OAuth2Client;
use League\OAuth2\Client\Provider\ResourceOwnerInterface;
use League\OAuth2\Client\Token\AccessToken;

class SpotifyClient extends OAuth2Client
{
/**
* @return \Kerox\OAuth2\Client\Provider\SpotifyResourceOwner|\League\OAuth2\Client\Provider\ResourceOwnerInterface
* @return SpotifyResourceOwner|ResourceOwnerInterface
*/
public function fetchUserFromToken(AccessToken $accessToken): ResourceOwnerInterface
public function fetchUserFromToken(AccessToken $accessToken)
{
return parent::fetchUserFromToken($accessToken);
}

/**
* @return \Kerox\OAuth2\Client\Provider\SpotifyResourceOwner|\League\OAuth2\Client\Provider\ResourceOwnerInterface
* @return SpotifyResourceOwner|ResourceOwnerInterface
*/
public function fetchUser(): ResourceOwnerInterface
public function fetchUser()
{
return parent::fetchUser();
}
Expand Down
2 changes: 2 additions & 0 deletions src/DependencyInjection/KnpUOAuth2ClientExtension.php
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
use KnpU\OAuth2ClientBundle\DependencyInjection\Providers\AzureProviderConfigurator;
use KnpU\OAuth2ClientBundle\DependencyInjection\Providers\BitbucketProviderConfigurator;
use KnpU\OAuth2ClientBundle\DependencyInjection\Providers\BoxProviderConfigurator;
use KnpU\OAuth2ClientBundle\DependencyInjection\Providers\BuddyProviderConfigurator;
use KnpU\OAuth2ClientBundle\DependencyInjection\Providers\BufferProviderConfigurator;
use KnpU\OAuth2ClientBundle\DependencyInjection\Providers\CanvasLMSProviderConfigurator;
use KnpU\OAuth2ClientBundle\DependencyInjection\Providers\CleverProviderConfigurator;
Expand Down Expand Up @@ -94,6 +95,7 @@ class KnpUOAuth2ClientExtension extends Extension
'azure' => AzureProviderConfigurator::class,
'bitbucket' => BitbucketProviderConfigurator::class,
'box' => BoxProviderConfigurator::class,
'buddy' => BuddyProviderConfigurator::class,
'buffer' => BufferProviderConfigurator::class,
'canvas_lms' => CanvasLMSProviderConfigurator::class,
'clever' => CleverProviderConfigurator::class,
Expand Down
60 changes: 60 additions & 0 deletions src/DependencyInjection/Providers/BuddyProviderConfigurator.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
<?php

/*
* OAuth2 Client Bundle
* Copyright (c) KnpUniversity <http://knpuniversity.com/>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/

namespace KnpU\OAuth2ClientBundle\DependencyInjection\Providers;

use Symfony\Component\Config\Definition\Builder\NodeBuilder;

class BuddyProviderConfigurator implements ProviderConfiguratorInterface
{
public function buildConfiguration(NodeBuilder $node)
{
$node
->scalarNode('base_api_url')
->info('Base API URL, modify this for self-hosted instances')
->defaultValue('https://api.buddy.works')
->cannotBeEmpty()
->end();
}

public function getProviderClass(array $config)
{
return 'Buddy\OAuth2\Client\Provider\Buddy';
}

public function getProviderOptions(array $config)
{
return [
'clientId' => $config['client_id'],
'clientSecret' => $config['client_secret'],
'baseApiUrl' => $config['base_api_url'],
];
}

public function getPackagistName()
{
return 'buddy-works/oauth2-client';
}

public function getLibraryHomepage()
{
return 'https://github.com/buddy-works/oauth2-client';
}

public function getProviderDisplayName()
{
return 'Buddy';
}

public function getClientClass(array $config)
{
return 'KnpU\OAuth2ClientBundle\Client\Provider\BuddyClient';
}
}