/**
* 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 Τα Καλύτερα Online Καζίνο Προορισμός για Ψυχαγωγία και Κέρδη first appeared on .
]]>
Η βιομηχανία του διαδικτυακού τζόγου έχει ανθίσει τα τελευταία χρόνια, προσφέροντας στους παίκτες πολλές επιλογές από όπου μπορούν να απολαύσουν τα αγαπημένα τους παιχνίδια. Είτε είστε φίλος των κουλοχέρηδων, είτε προτιμάτε τα επιτραπέζια παιχνίδια, στην αγορά υπάρχουν πολλές επιλογές. Στο κείμενο αυτό, θα εξετάσουμε τα τα καλυτερα online καζινο cantinaharitatos.gr που μπορείτε να δοκιμάσετε το 2023, προσφέροντας ασφάλεια, καλή εξυπηρέτηση πελατών και πλούσια παιχνίδια.
Η επιλογή του κατάλληλου online καζίνο μπορεί να είναι μια δύσκολη υπόθεση, ειδικά με τη πληθώρα των επιλογών που υπάρχουν στην αγορά. Ακολουθούν μερικά κριτήρια που μπορείτε να εξετάσετε:
Ακολουθούν κάποια από τα καλύτερα καζίνο που μπορείτε να εξετάσετε:

Διεθνώς αναγνωρισμένο, το Bet365 προσφέρει μια μεγάλη ποικιλία παιχνιδιών με εντυπωσιακά μπόνους καλωσορίσματος. Οι μέθοδοι κατάθεσης είναι ασφαλείς και ποικίλες.
Ένας γίγαντας στον χώρο των online καζίνο, το 888 προσφέρει εξαιρετικές προσφορές και ένα ευχάριστο περιβάλλον παιχνιδιού. Διαθέτει επίσης live dealer παιχνίδια.
Γνωστό για την εξαιρετική του mobile εφαρμογή, το LeoVegas προσφέρει πλούσια επιλογή παιχνιδιών και πολύ καλά μπόνους.
Το Pin-Up Casino έχει γίνει δημοφιλές για την ποικιλία παιχνιδιών και τις καθημερινές προσφορές του. Είναι ιδανικό για παίκτες που απολαμβάνουν την περιπέτεια.

Στον κόσμο των online καζίνο μπορείτε να βρείτε πολλές κατηγορίες παιχνιδιών. Ακολουθούν μερικές από τις πιο δημοφιλείς:
Τα μπόνους είναι ένας από τους πιο ελκυστικούς παράγοντες για τους παίκτες. Εξετάστε τις διάφορες προσφορές που προσφέρονται από τα καζίνο:
Η επιλογή του κατάλληλου online καζίνο είναι κρίσιμη για μια ευχάριστη εμπειρία παιχνιδιού. Να θυμάστε να ελέγχετε τις άδειες, τους τρόπους πληρωμής και να επιλέγετε καζίνο με καλή φήμη και αξιοπιστία. Αυτές οι καινοτόμες πλατφόρμες σας προσφέρουν τη δυνατότητα να διασκεδάσετε και ενδεχομένως να κερδίσετε αρκετά, αρκεί να παίζετε υπεύθυνα.
The post Τα Καλύτερα Online Καζίνο Προορισμός για Ψυχαγωγία και Κέρδη first appeared on .
]]>