Permalink
glensc
general code style fixes (#1241)
0d5cb18
Nov 17, 2017
Join GitHub today
GitHub is home to over 40 million developers working together to host and review code, manage projects, and build software together.
Sign up| <?php | |
| /** | |
| * PHPMailer - PHP email creation and transport class. | |
| * PHP Version 5.5. | |
| * | |
| * @see https://github.com/PHPMailer/PHPMailer/ The PHPMailer GitHub project | |
| * | |
| * @author Marcus Bointon (Synchro/coolbru) <phpmailer@synchromedia.co.uk> | |
| * @author Jim Jagielski (jimjag) <jimjag@gmail.com> | |
| * @author Andy Prevost (codeworxtech) <codeworxtech@users.sourceforge.net> | |
| * @author Brent R. Matzelle (original founder) | |
| * @copyright 2012 - 2015 Marcus Bointon | |
| * @copyright 2010 - 2012 Jim Jagielski | |
| * @copyright 2004 - 2009 Andy Prevost | |
| * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License | |
| * @note This program is distributed in the hope that it will be useful - WITHOUT | |
| * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
| * FITNESS FOR A PARTICULAR PURPOSE. | |
| */ | |
| namespace PHPMailer\PHPMailer; | |
| use League\OAuth2\Client\Grant\RefreshToken; | |
| use League\OAuth2\Client\Provider\AbstractProvider; | |
| use League\OAuth2\Client\Token\AccessToken; | |
| /** | |
| * OAuth - OAuth2 authentication wrapper class. | |
| * Uses the oauth2-client package from the League of Extraordinary Packages. | |
| * | |
| * @see http://oauth2-client.thephpleague.com | |
| * | |
| * @author Marcus Bointon (Synchro/coolbru) <phpmailer@synchromedia.co.uk> | |
| */ | |
| class OAuth | |
| { | |
| /** | |
| * An instance of the League OAuth Client Provider. | |
| * | |
| * @var AbstractProvider | |
| */ | |
| protected $provider; | |
| /** | |
| * The current OAuth access token. | |
| * | |
| * @var AccessToken | |
| */ | |
| protected $oauthToken; | |
| /** | |
| * The user's email address, usually used as the login ID | |
| * and also the from address when sending email. | |
| * | |
| * @var string | |
| */ | |
| protected $oauthUserEmail = ''; | |
| /** | |
| * The client secret, generated in the app definition of the service you're connecting to. | |
| * | |
| * @var string | |
| */ | |
| protected $oauthClientSecret = ''; | |
| /** | |
| * The client ID, generated in the app definition of the service you're connecting to. | |
| * | |
| * @var string | |
| */ | |
| protected $oauthClientId = ''; | |
| /** | |
| * The refresh token, used to obtain new AccessTokens. | |
| * | |
| * @var string | |
| */ | |
| protected $oauthRefreshToken = ''; | |
| /** | |
| * OAuth constructor. | |
| * | |
| * @param array $options Associative array containing | |
| * `provider`, `userName`, `clientSecret`, `clientId` and `refreshToken` elements | |
| */ | |
| public function __construct($options) | |
| { | |
| $this->provider = $options['provider']; | |
| $this->oauthUserEmail = $options['userName']; | |
| $this->oauthClientSecret = $options['clientSecret']; | |
| $this->oauthClientId = $options['clientId']; | |
| $this->oauthRefreshToken = $options['refreshToken']; | |
| } | |
| /** | |
| * Get a new RefreshToken. | |
| * | |
| * @return RefreshToken | |
| */ | |
| protected function getGrant() | |
| { | |
| return new RefreshToken(); | |
| } | |
| /** | |
| * Get a new AccessToken. | |
| * | |
| * @return AccessToken | |
| */ | |
| protected function getToken() | |
| { | |
| return $this->provider->getAccessToken( | |
| $this->getGrant(), | |
| ['refresh_token' => $this->oauthRefreshToken] | |
| ); | |
| } | |
| /** | |
| * Generate a base64-encoded OAuth token. | |
| * | |
| * @return string | |
| */ | |
| public function getOauth64() | |
| { | |
| // Get a new token if it's not available or has expired | |
| if (null === $this->oauthToken or $this->oauthToken->hasExpired()) { | |
| $this->oauthToken = $this->getToken(); | |
| } | |
| return base64_encode( | |
| 'user=' . | |
| $this->oauthUserEmail . | |
| "\001auth=Bearer " . | |
| $this->oauthToken . | |
| "\001\001" | |
| ); | |
| } | |
| } |