Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
25.00% covered (danger)
25.00%
4 / 16
100.00% covered (success)
100.00%
1 / 1
CRAP
n/a
0 / 0
jetpack_oembed_timeout_override
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
3
1<?php
2/**
3 * Extra oEmbed providers that we use on wpcom for feature parity.
4 *
5 * This file will be loaded even when you don't use the Shortcodes feature,
6 * as these embeds are considered safe to use on any site
7 * (and may end up embedded in Core in the future).
8 *
9 * @package automattic/jetpack
10 */
11
12if ( ! defined( 'ABSPATH' ) ) {
13    exit( 0 );
14}
15
16wp_oembed_add_provider( 'https://me.sh/*', 'https://me.sh/oembed?format=json' );
17wp_oembed_add_provider( '#https?://(www\.)?gfycat\.com/.*#i', 'https://api.gfycat.com/v1/oembed', true );
18wp_oembed_add_provider( '#https?://[^.]+\.(wistia\.com|wi\.st)/(medias|embed)/.*#', 'https://fast.wistia.com/oembed', true );
19wp_oembed_add_provider( '#https?://sketchfab\.com/.*#i', 'https://sketchfab.com/oembed', true );
20wp_oembed_add_provider( '#https?://(www\.)?icloud\.com/keynote/.*#i', 'https://iwmb.icloud.com/iwmb/oembed', true );
21wp_oembed_add_provider( '#https?://(www\.)?icloud\.com\.cn/keynote/.*#i', 'https://iwmb.icloud.com.cn/iwmb/oembed', true );
22wp_oembed_add_provider( '#https?://((song|album|artist|pods|playlist)\.link|odesli\.com?|mylink\.page)/.*#', 'https://odesli.co/oembed', true );
23wp_oembed_add_provider( '#https?://(www\.)?loom\.com/share/.*#i', 'https://www.loom.com/v1/oembed', true );
24
25/**
26 * Filters the HTTP request timeout value so that we can increase the timeout for iCloud oEmbeds.
27 *
28 * @param int    $timeout The timeout value in seconds.
29 * @param string $url     The URL to fetch.
30 *
31 * @return int The timeout value in seconds.
32 */
33function jetpack_oembed_timeout_override( $timeout, $url = '' ) {
34    if (
35        is_string( $url )
36        && str_contains( $url, 'iwmb.icloud.com' )
37    ) {
38        return 10;
39    }
40    return $timeout;
41}
42
43// TODO: Remove this. This should hopefully be a temporary hack since Apple's oEmbed often seems to take more than 5 seconds to respond. 10 is an arbitrary number of seconds that seems to work better.
44add_filter( 'http_request_timeout', 'jetpack_oembed_timeout_override', 10, 2 );
45
46// WordPress core only registers pca.st, not pcast.pocketcasts.net.
47wp_oembed_add_provider( '#https?://pcast\.pocketcasts\.net/.+#i', 'https://pcast.pocketcasts.net/oembed.json', true );