/**
* 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 Download the Mostbet App Your Ultimate Betting Companion first appeared on .
]]>
The world of online betting has experienced a tremendous evolution in the last decade, making it more accessible and enjoyable for users. One of the leading platforms in this domain is the Mostbet app, which offers a seamless experience for betting enthusiasts. With its user-friendly interface and a plethora of features, this app has become a favorite among bettors. If you’re looking for a comprehensive solution for sports betting and casino games, look no further!
First and foremost, the Mostbet app allows you to place bets from anywhere, at any time. Whether you are at home or on the move, you can easily access your favorite games and sports events. The app is designed to work quickly and efficiently, giving you the best possible experience. It’s available for both Android and iOS devices, so you can download it no matter what kind of smartphone you use.
One of the standout features of the Mostbet app is its extensive range of betting options. Users can choose from a wide array of sports, including football, basketball, tennis, and e-sports. Additionally, there are numerous markets available for each event, allowing players to tailor their betting strategies to their preferences. The app also offers live betting, which lets you place bets while the game is in progress, providing you with an adrenaline-fueled experience.
In addition to sports betting, the app boasts an impressive selection of casino games. From classic slots to live dealer games, there is something for every type of player. The graphics and user interface are designed to provide a realistic gaming experience, making it feel as though you’re in a real casino.

Getting started with the Mostbet app is a straightforward process. After downloading and installing the application, you simply need to create an account. The registration process is quick and user-friendly, requiring only a few basic details. Once your account is set up, you can make your first deposit and start betting.
The app also offers various payment methods for deposits and withdrawals. You can choose from credit and debit cards, e-wallets, and even cryptocurrencies. This flexibility in payment options means you can find a method that works best for you, making your betting experience more convenient.
Security is a top priority for Mostbet. The app employs advanced encryption technology to protect your personal and financial information, ensuring that your data remains safe. Players can bet with peace of mind, knowing that their data is securely handled.
If you encounter any issues while using the app, Mostbet offers comprehensive customer support. The support team is available 24/7 to assist you with any questions or concerns you may have. You can reach them via live chat, email, or phone, providing you with multiple channels to get the help you need.

Another appealing aspect of the Mostbet app is the range of promotions and bonuses available to users. New players are often greeted with welcome bonuses that can significantly enhance their initial experience. Ongoing promotions for existing players also make it worthwhile to keep using the app. These bonuses may include free bets, cashback offers, and tournament entries that add even more value to your betting experience.
Don’t forget to keep an eye out for regular updates and events that may provide additional opportunities to win.
With countless betting apps available, you might wonder why you should choose Mostbet over competitors. The answer lies in its user-centric approach. The developers continuously strive to improve the app based on user feedback. This dedication to customer satisfaction is evident in the app’s design and features, making it one of the top choices in the market.
Moreover, the integration of sports betting and casino games within a single platform provides users with a variety of entertainment options. If you are interested in exploring more platforms, consider checking out https://seocasinomalaysia.com/ for further information.
The Mostbet app has quickly established itself as a leading platform for online betting enthusiasts. Its diverse range of features, coupled with excellent customer support and security measures, provides a reliable and enjoyable alternative to traditional betting methods. Whether you’re a seasoned bettor or a newcomer to the gambling world, the Mostbet app offers everything you need for a complete betting experience. Download the app today and enjoy the excitement of betting at your fingertips!
The post Download the Mostbet App Your Ultimate Betting Companion first appeared on .
]]>