/**
* WP_oEmbed_Controller class, used to provide an oEmbed endpoint.
*
* @package WordPress
* @subpackage Embeds
* @since 4.4.0
*/
/**
* oEmbed API endpoint controller.
*
* Registers the REST API route and delivers the response data.
* The output format (XML or JSON) is handled by the REST API.
*
* @since 4.4.0
*/
#[AllowDynamicProperties]
final class WP_oEmbed_Controller {
/**
* Register the oEmbed REST API route.
*
* @since 4.4.0
*/
public function register_routes() {
/**
* Filters the maxwidth oEmbed parameter.
*
* @since 4.4.0
*
* @param int $maxwidth Maximum allowed width. Default 600.
*/
$maxwidth = apply_filters( 'oembed_default_width', 600 );
register_rest_route(
'oembed/1.0',
'/embed',
array(
array(
'methods' => WP_REST_Server::READABLE,
'callback' => array( $this, 'get_item' ),
'permission_callback' => '__return_true',
'args' => array(
'url' => array(
'description' => __( 'The URL of the resource for which to fetch oEmbed data.' ),
'required' => true,
'type' => 'string',
'format' => 'uri',
),
'format' => array(
'default' => 'json',
'sanitize_callback' => 'wp_oembed_ensure_format',
),
'maxwidth' => array(
'default' => $maxwidth,
'sanitize_callback' => 'absint',
),
),
),
)
);
register_rest_route(
'oembed/1.0',
'/proxy',
array(
array(
'methods' => WP_REST_Server::READABLE,
'callback' => array( $this, 'get_proxy_item' ),
'permission_callback' => array( $this, 'get_proxy_item_permissions_check' ),
'args' => array(
'url' => array(
'description' => __( 'The URL of the resource for which to fetch oEmbed data.' ),
'required' => true,
'type' => 'string',
'format' => 'uri',
),
'format' => array(
'description' => __( 'The oEmbed format to use.' ),
'type' => 'string',
'default' => 'json',
'enum' => array(
'json',
'xml',
),
),
'maxwidth' => array(
'description' => __( 'The maximum width of the embed frame in pixels.' ),
'type' => 'integer',
'default' => $maxwidth,
'sanitize_callback' => 'absint',
),
'maxheight' => array(
'description' => __( 'The maximum height of the embed frame in pixels.' ),
'type' => 'integer',
'sanitize_callback' => 'absint',
),
'discover' => array(
'description' => __( 'Whether to perform an oEmbed discovery request for unsanctioned providers.' ),
'type' => 'boolean',
'default' => true,
),
),
),
)
);
}
/**
* Callback for the embed API endpoint.
*
* Returns the JSON object for the post.
*
* @since 4.4.0
*
* @param WP_REST_Request $request Full data about the request.
* @return array|WP_Error oEmbed response data or WP_Error on failure.
*/
public function get_item( $request ) {
$post_id = url_to_postid( $request['url'] );
/**
* Filters the determined post ID.
*
* @since 4.4.0
*
* @param int $post_id The post ID.
* @param string $url The requested URL.
*/
$post_id = apply_filters( 'oembed_request_post_id', $post_id, $request['url'] );
$data = get_oembed_response_data( $post_id, $request['maxwidth'] );
if ( ! $data ) {
return new WP_Error( 'oembed_invalid_url', get_status_header_desc( 404 ), array( 'status' => 404 ) );
}
return $data;
}
/**
* Checks if current user can make a proxy oEmbed request.
*
* @since 4.8.0
*
* @return true|WP_Error True if the request has read access, WP_Error object otherwise.
*/
public function get_proxy_item_permissions_check() {
if ( ! current_user_can( 'edit_posts' ) ) {
return new WP_Error( 'rest_forbidden', __( 'Sorry, you are not allowed to make proxied oEmbed requests.' ), array( 'status' => rest_authorization_required_code() ) );
}
return true;
}
/**
* Callback for the proxy API endpoint.
*
* Returns the JSON object for the proxied item.
*
* @since 4.8.0
*
* @see WP_oEmbed::get_html()
* @global WP_Embed $wp_embed WordPress Embed object.
* @global WP_Scripts $wp_scripts
*
* @param WP_REST_Request $request Full data about the request.
* @return object|WP_Error oEmbed response data or WP_Error on failure.
*/
public function get_proxy_item( $request ) {
global $wp_embed, $wp_scripts;
$args = $request->get_params();
// Serve oEmbed data from cache if set.
unset( $args['_wpnonce'] );
$cache_key = 'oembed_' . md5( serialize( $args ) );
$data = get_transient( $cache_key );
if ( ! empty( $data ) ) {
return $data;
}
$url = $request['url'];
unset( $args['url'] );
// Copy maxwidth/maxheight to width/height since WP_oEmbed::fetch() uses these arg names.
if ( isset( $args['maxwidth'] ) ) {
$args['width'] = $args['maxwidth'];
}
if ( isset( $args['maxheight'] ) ) {
$args['height'] = $args['maxheight'];
}
// Short-circuit process for URLs belonging to the current site.
$data = get_oembed_response_data_for_url( $url, $args );
if ( $data ) {
return $data;
}
$data = _wp_oembed_get_object()->get_data( $url, $args );
if ( false === $data ) {
// Try using a classic embed, instead.
/* @var WP_Embed $wp_embed */
$html = $wp_embed->get_embed_handler_html( $args, $url );
if ( $html ) {
// Check if any scripts were enqueued by the shortcode, and include them in the response.
$enqueued_scripts = array();
foreach ( $wp_scripts->queue as $script ) {
$enqueued_scripts[] = $wp_scripts->registered[ $script ]->src;
}
return (object) array(
'provider_name' => __( 'Embed Handler' ),
'html' => $html,
'scripts' => $enqueued_scripts,
);
}
return new WP_Error( 'oembed_invalid_url', get_status_header_desc( 404 ), array( 'status' => 404 ) );
}
/** This filter is documented in wp-includes/class-wp-oembed.php */
$data->html = apply_filters( 'oembed_result', _wp_oembed_get_object()->data2html( (object) $data, $url ), $url, $args );
/**
* Filters the oEmbed TTL value (time to live).
*
* Similar to the {@see 'oembed_ttl'} filter, but for the REST API
* oEmbed proxy endpoint.
*
* @since 4.8.0
*
* @param int $time Time to live (in seconds).
* @param string $url The attempted embed URL.
* @param array $args An array of embed request arguments.
*/
$ttl = apply_filters( 'rest_oembed_ttl', DAY_IN_SECONDS, $url, $args );
set_transient( $cache_key, $data, $ttl );
return $data;
}
} Если вы ищете увлекательное онлайн-казино с множеством возможностей, то Spin Casino – это именно то, что вам нужно. Завораживающие игры, значительные бонусы, удобный интерфейс и высокие шансы на выигрыш делают это казино одним из лучших в мире азартных развлечений. Кроме того, вы всегда можете воспользоваться Какие возможности у Spin Casino зеркало Spin Casino, что обеспечивает доступ к вашим любимым играм даже в случае блокировок. В этой статье мы рассмотрим основные возможности, которые предлагает Spin Casino для своих игроков. От классических игровых автоматов до живых игр с настоящими дилерами – Spin Casino имеет всё, чтобы удовлетворить потребности даже самых требовательных игроков. В библиотеке игр представлены: Spin Casino предлагает своим пользователям выгодные бонусы, которые увеличивают шансы на успех. Новички могут рассчитывать на щедрый приветственный бонус, который значительно увеличит их первый депозит. Также регулярные игроки имеют возможность участвовать в различных акциях и турнирах, что дает дополнительный стимул к игре.
Warning: Cannot modify header information - headers already sent by (output started at /home/u745734945/domains/tejas-apartment.teson.xyz/public_html/wp-includes/class-wp-oembed-controller.php:1) in /home/u745734945/domains/tejas-apartment.teson.xyz/public_html/wp-includes/feed-rss2.php on line 8
Spin Casino: Ваш идеальный игровой опыт
1. Широкий выбор игр
2. Привлекательные бонусы и акции
Spin Casino поддерживает множество популярных методов оплаты, что делает процесс пополнения счета и вывода средств максимально простым и удобным. Доступны как традиционные способы, такие как кредитные карты, так и современные решения, например, электронные кошельки и криптовалюты. Все транзакции защищены многоуровневыми системами безопасности, что гарантирует безопасность ваших финансов.

Одной из значительных возможностей Spin Casino является его мобильная версия. Теперь вы можете наслаждаться любимыми играми прямо на своем смартфоне или планшете. Мобильная платформа казино адаптирована для различных устройств и гарантирует плавную работу без задержек. Игроки могут играть в любое время и из любого места, что делает азартные игры более доступными и удобными.
Поддержка клиентов в Spin Casino работает круглосуточно и поддерживает множество языков, что делает общение максимально удобным. Вы можете обратиться в службу поддержки через чат, электронную почту или телефон. Опытные специалисты готовы помочь вам с любыми вопросами, связанными с играми, выплатами и другими аспектами работы казино.
Spin Casino заботится о безопасности своих игроков и работает только на основе лицензий, выданных авторитетными регуляторами. Это означает, что все игры в казино проходят регулярные проверки на честность и надежность. Шифрование данных защищает личную информацию и финансовые транзакции, что позволяет игрокам наслаждаться азартными играми без лишних переживаний.
Spin Casino также предлагает своим постоянным игрокам программу лояльности, которая позволяет накапливать баллы за каждую сыгранную ставку. Эти баллы можно обменивать на различные привилегии, такие как эксклюзивные бонусы, подарки и доступ к VIP-мероприятиям. Программа лояльности является отличным способом поощрения и мотивации для постоянных пользователей.
Spin Casino регулярно проводит турниры и соревнования, в которых игроки могут соревноваться друг с другом за призы и акционные предложения. Участие в турнирах не только добавляет азарту в игру, но и дает возможность выиграть значительные суммы. Сортировка по турнирам позволяет игрокам выбирать наиболее подходящие варианты и участвовать в тех мероприятиях, которые им интересны.
Spin Casino предлагает богатый выбор возможностей для игроков, которые ищут качественные азартные развлечения. Широкий ассортимент игр, привлекательные бонусы, удобные методы оплаты и высокий уровень защиты — все это делает Spin Casino отличным выбором для азартных любителей. Погрузитесь в мир увлекательных игровых приключений с Spin Casino и откройте для себя все его возможности уже сегодня!
]]>