/**
* 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;
}
}
The post Découvrez HornetBet Le Nouveau Leader des Paris en Ligne first appeared on .
]]>
Bienvenue dans l’univers de hornetbetalgeria.com, une plateforme de paris en ligne qui ne cesse de gagner en popularité grâce à ses offres attrayantes et son interface utilisateur innovante. Que vous soyez un parieur novice ou un professionnel aguerri, HornetBet a quelque chose à offrir pour chaque type de joueur.
La simplicité et l’efficacité de l’interface de HornetBet vous permettent de naviguer facilement entre les différentes sections de la plateforme. Que ce soit pour parier sur votre sport favori, consulter les cotes ou profiter des promotions, tout est à portée de main. La plateforme est accessible depuis divers appareils, y compris les ordinateurs, les tablettes et les smartphones, garantissant une expérience de jeu fluide où que vous soyez.
HornetBet offre une vaste gamme de sports sur lesquels parier. Du football au basketball, en passant par les courses de chevaux et les sports électroniques, vous trouverez des options pour satisfaire tous vos besoins de paris. Les cotes sont compétitives et mises à jour en temps réel, vous permettant de placer vos paris à tout moment. De plus, pour les amateurs de paris en direct, la plateforme propose des options excitantes qui vous plongent encore plus au cœur de l’action.
Les promotions sont essentielles pour attirer et retenir les parieurs, et HornetBet ne déçoit pas. Dès votre inscription, vous êtes accueilli avec un bonus de bienvenue généreux qui augmente votre capital de départ. En outre, la plateforme propose régulièrement des promotions, des paris gratuits et des offres cashback, vous garantissant ainsi toujours des chances supplémentaires de gagner.

La sécurité est une priorité pour HornetBet. La plateforme utilise des technologies de cryptage avancées pour protéger vos données personnelles et financières. Toutes les transactions sont sécurisées, vous n’avez donc pas à vous inquiéter lors de vos dépôts ou retraits. En outre, HornetBet est agréé et réglementé, ce qui témoigne de son engagement à fournir un environnement de jeu sûr et équitable.
Chez HornetBet, la satisfaction du client est primordiale. L’équipe de support est disponible 24/7 pour répondre à toutes vos questions et résoudre vos problèmes. Que vous ayez besoin d’aide pour le processus d’inscription, des questions sur les paris ou des préoccupations techniques, le service client est à votre disposition via chat en direct, e-mail ou téléphone.
Les retours des utilisateurs sont généralement très positifs. De nombreux parieurs apprécient la fluidité de la plateforme et la clarté des informations fournies. Les joueurs soulignent également la diversité des sports et des événements disponibles, ainsi que la compétitivité des cotes. Toutefois, comme pour toute plateforme, il y a des critiques, mais HornetBet semble s’efforcer d’améliorer constamment ses services en écoutant les retours de ses utilisateurs.
HornetBet est sans aucun doute une option à considérer pour quiconque s’intéresse aux paris en ligne. Avec une interface intuitive, une large gamme de sports, des promotions alléchantes et un engagement envers la sécurité, cette plateforme a toutes les qualités pour satisfaire les parieurs de tous horizons. Si vous cherchez une nouvelle expérience de paris, n’hésitez pas à vous inscrire dès aujourd’hui et à découvrir tout ce que HornetBet a à offrir. Que la chance soit avec vous!
The post Découvrez HornetBet Le Nouveau Leader des Paris en Ligne first appeared on .
]]>