Make WordPress Core

Ticket #38181: 38181.4.diff

File 38181.4.diff, 12.0 KB (added by jsepia, 9 years ago)

Removed TLD routing filter, fixed the unit tests and added new ones

  • src/wp-includes/class-oembed.php

     
    108108                        '#https?://www\.facebook\.com/notes/.*#i'             => array( 'https://www.facebook.com/plugins/post/oembed.json/',        true  ),
    109109                        '#https?://www\.facebook\.com/.*/videos/.*#i'         => array( 'https://www.facebook.com/plugins/video/oembed.json/',       true  ),
    110110                        '#https?://www\.facebook\.com/video\.php.*#i'         => array( 'https://www.facebook.com/plugins/video/oembed.json/',       true  ),
     111                        '#https?://([a-z0-9-]+\.)?amazon\.(com|com\.mx|com\.br|ca)/.*#i'      => array( 'https://read.amazon.com/kp/api/oembed',     true  ),
     112                        '#https?://([a-z0-9-]+\.)?amazon\.(co\.uk|de|fr|it|es|in|nl|ru)/.*#i' => array( 'https://read.amazon.co.uk/kp/api/oembed',   true  ),
     113                        '#https?://([a-z0-9-]+\.)?amazon\.(co\.jp|com\.au)/.*#i'              => array( 'https://read.amazon.com.au/kp/api/oembed',  true  ),
     114                        '#https?://([a-z0-9-]+\.)?amazon\.cn/.*#i'                            => array( 'https://read.amazon.cn/kp/api/oembed',      true  ),
     115                        '#https?://(www\.)?a.co/.*#i'                         => array( 'https://read.amazon.com/kp/api/oembed',                     true  ),
     116                        '#https?://(www\.)?amz.onl/.*#i'                      => array( 'https://read.amazon.com/kp/api/oembed',                     true  ),
     117                        '#https?://(www\.)?amzn.to/.*#i'                      => array( 'https://read.amazon.com/kp/api/oembed',                     true  ),
     118                        '#https?://(www\.)?amzn.eu/.*#i'                      => array( 'https://read.amazon.co.uk/kp/api/oembed',                   true  ),
     119                        '#https?://(www\.)?amzn.in/.*#i'                      => array( 'https://read.amazon.in/kp/api/oembed',                      true  ),
     120                        '#https?://(www\.)?amzn.asia/.*#i'                    => array( 'https://read.amazon.com.au/kp/api/oembed',                  true  ),
     121                        '#https?://(www\.)?z.cn/.*#i'                         => array( 'https://read.amazon.cn/kp/api/oembed',                      true  ),
    111122                );
    112123
    113124                if ( ! empty( self::$early_providers['add'] ) ) {
     
    181192                 * | Twitter      | twitter.com/user      |      Yes       | 4.7.0     |
    182193                 * | Twitter      | twitter.com/likes     |      Yes       | 4.7.0     |
    183194                 * | Twitter      | twitter.com/lists     |      Yes       | 4.7.0     |
     195                 * | Amazon Kindle| *.amazon.com          |      Yes       | 4.7.0     |
     196                 * | Amazon Kindle| *.amazon.co.uk        |      Yes       | 4.7.0     |
     197                 * | Amazon Kindle| *.amazon.de           |      Yes       | 4.7.0     |
     198                 * | Amazon Kindle| *.amazon.fr           |      Yes       | 4.7.0     |
     199                 * | Amazon Kindle| *.amazon.it           |      Yes       | 4.7.0     |
     200                 * | Amazon Kindle| *.amazon.es           |      Yes       | 4.7.0     |
     201                 * | Amazon Kindle| *.amazon.co.jp        |      Yes       | 4.7.0     |
     202                 * | Amazon Kindle| *.amazon.cn           |      Yes       | 4.7.0     |
     203                 * | Amazon Kindle| *.amazon.com.au       |      Yes       | 4.7.0     |
     204                 * | Amazon Kindle| *.amazon.in           |      Yes       | 4.7.0     |
     205                 * | Amazon Kindle| *.amazon.com.mx       |      Yes       | 4.7.0     |
     206                 * | Amazon Kindle| *.amazon.com.br       |      Yes       | 4.7.0     |
     207                 * | Amazon Kindle| *.amazon.ca           |      Yes       | 4.7.0     |
     208                 * | Amazon Kindle| *.amazon.nl           |      Yes       | 4.7.0     |
     209                 * | Amazon Kindle| *.amazon.ru           |      Yes       | 4.7.0     |
     210                 * | Amazon Kindle| a.co                  |      Yes       | 4.7.0     |
     211                 * | Amazon Kindle| amzn.onl              |      Yes       | 4.7.0     |
     212                 * | Amazon Kindle| amzn.to               |      Yes       | 4.7.0     |
     213                 * | Amazon Kindle| amzn.eu               |      Yes       | 4.7.0     |
     214                 * | Amazon Kindle| amzn.in               |      Yes       | 4.7.0     |
     215                 * | Amazon Kindle| amzn.asia             |      Yes       | 4.7.0     |
     216                 * | Amazon Kindle| z.cn                  |      Yes       | 4.7.0     |
    184217                 *
    185218                 * No longer supported providers:
    186219                 *
     
    201234                 */
    202235                $this->providers = apply_filters( 'oembed_providers', $providers );
    203236
     237
    204238                // Fix any embeds that contain new lines in the middle of the HTML which breaks wpautop().
    205239                add_filter( 'oembed_dataparse', array($this, '_strip_newlines'), 10, 3 );
    206240        }
  • tests/phpunit/tests/external-http/oembed.php

     
    4343                $out = $wp_embed->autoembed( 'https://www.youtube.com/v/QcIy9NiNbmo' );
    4444                $this->assertContains( 'https://youtube.com/watch?v=QcIy9NiNbmo', $out );
    4545        }
     46
     47        /**
     48         * Test Kindle Instant Previews embeds
     49         *
     50         * @ticket 38181
     51         */
     52        function test_amazon_kindle_non_book_embed() {
     53                $out = wp_oembed_get( 'http://www.amazon.com/All-New-Kindle-E-reader-Glare-Free-Touchscreen/dp/B00ZV9PXP2/r' );
     54                $this->assertFalse( $out );
     55
     56                $out = wp_oembed_get( 'https://www.amazon.com/All-New-Kindle-E-reader-Glare-Free-Touchscreen/dp/B00ZV9PXP2/r' );
     57                $this->assertFalse( $out );
     58        }
     59
     60        /**
     61         * Support for Kindle previews shared from Kindle devices or apps
     62         *
     63         * @link http://www.amazon.com/bettersharing Kindle Instant Previews sharing homepage
     64         *
     65         * @ticket 38181
     66         */
     67        function test_amazon_kindle_shared_preview_embed() {
     68                // book
     69                $out = wp_oembed_get( 'https://read.amazon.com/kp/kshare?asin=B008TW1HMG&tag=foo-20' );
     70                $this->assertContains( 'https://read.amazon.com/kp/card?', $out );
     71                $this->assertContains( 'asin=B008TW1HMG', $out );
     72                $this->assertContains( 'tag=foo-20', $out );
     73
     74                // quote
     75                $out = wp_oembed_get( 'https://read.amazon.com/kp/kshare?asin=B00DPM7TIG&tag=foo-20&id=XD3ezAVVQ3KP0bWxSFvosg' );
     76                $this->assertContains( 'https://read.amazon.com/kp/card?', $out );
     77                $this->assertContains( 'asin=B00DPM7TIG', $out );
     78                $this->assertContains( 'tag=foo-20', $out );
     79
     80                // reading progress
     81                $out = wp_oembed_get( 'https://read.amazon.com/kp/kshare?asin=B007P7HRS4&id=Sd6UmMYYTc6rHl1BYkXU2g&tag=foo-20' );
     82                $this->assertContains( 'https://read.amazon.com/kp/card?', $out );
     83                $this->assertContains( 'asin=B007P7HRS4', $out );
     84                $this->assertContains( 'tag=foo-20', $out );
     85        }
     86
     87        /**
     88         * Support for Kindle previews created from the self-service embedding tool
     89         *
     90         * @link http://www.amazon.com/kindleinstantpreview Kindle Instant Previews for third parties
     91         *
     92         * @ticket 38181
     93         */
     94        function test_amazon_kindle_embedded_preview_embed() {
     95                // URL
     96                $out = wp_oembed_get( 'https://read.amazon.com/kp/embed?asin=B008TW1HMG&tag=foo-20' );
     97                $this->assertContains( 'https://read.amazon.com/kp/card?', $out );
     98                $this->assertContains( 'asin=B008TW1HMG', $out );
     99                $this->assertContains( 'tag=foo-20', $out );
     100
     101                // interactive book card
     102                $out = wp_oembed_get( 'https://read.amazon.com/kp/card?asin=B008TW1HMG&tag=foo-20&preview=inline' );
     103                $this->assertContains( 'https://read.amazon.com/kp/card?', $out );
     104                $this->assertContains( 'asin=B008TW1HMG', $out );
     105                $this->assertContains( 'tag=foo-20', $out );
     106        }
     107
     108        /**
     109         * Support for Kindle Instant Previews in non-US marketplaces
     110         *
     111         * @ticket 38181
     112         */
     113        function test_amazon_kindle_preview_non_us_embed() {
     114                // Americas (canonical TLD: .com)
     115                $out = wp_oembed_get( 'https://read.amazon.ca/kp/embed?asin=B008TW1HMG&tag=foo-20&ref_=bar_qux' );
     116                $this->assertContains( 'https://read.amazon.com/kp/card?', $out );
     117                $this->assertContains( 'asin=B008TW1HMG', $out );
     118                $this->assertContains( 'tag=foo-20', $out );
     119
     120                // Europe (canonical TLD: .co.uk)
     121                $out = wp_oembed_get( 'https://read.amazon.in/kp/embed?asin=B008TW1HMG&tag=foo-20&ref_=bar_qux' );
     122                $this->assertContains( 'https://read.amazon.co.uk/kp/card?', $out );
     123                $this->assertContains( 'asin=B008TW1HMG', $out );
     124                $this->assertContains( 'tag=foo-20', $out );
     125
     126                // Asia (canonical TLD: .com.au)
     127                $out = wp_oembed_get( 'https://read.amazon.co.jp/kp/embed?asin=B008TW1HMG&tag=foo-20&ref_=bar_qux&preview=inline' );
     128                $this->assertContains( 'https://read.amazon.com.au/kp/card?', $out );
     129                $this->assertContains( 'asin=B008TW1HMG', $out );
     130                $this->assertContains( 'tag=foo-20', $out );
     131
     132                // China (canonical TLD: .cn)
     133                $out = wp_oembed_get( 'https://read.amazon.cn/kp/embed?asin=B01M06TYLV&tag=foo-20&ref_=bar_qux&preview=inline' );
     134                $this->assertContains( 'https://read.amazon.cn/kp/card?', $out );
     135                $this->assertContains( 'asin=B01M06TYLV', $out );
     136                $this->assertContains( 'tag=foo-20', $out );
     137        }
    46138}
     139 No newline at end of file
  • tests/phpunit/tests/oembed.php

     
    5656                'facebook-notes'       => '#https?://www\.facebook\.com/notes/.*#i',
    5757                'facebook-video'       => '#https?://www\.facebook\.com/.*/videos/.*#i',
    5858                'facebook-videophp'    => '#https?://www\.facebook\.com/video\.php.*#i',
     59                'facebook-videophp'    => '#https?://www\.facebook\.com/video\.php.*#i',
     60                'amazon-na'            => '#https?://([a-z0-9-]+\.)?amazon\.(com|com\.mx|com\.br|ca)/.*#i',
     61                'amazon-eu'            => '#https?://([a-z0-9-]+\.)?amazon\.(co\.uk|de|fr|it|es|in|nl|ru)/.*#i',
     62                'amazon-asia'          => '#https?://([a-z0-9-]+\.)?amazon\.(co\.jp|com\.au)/.*#i',
     63                'amazon-cn'            => '#https?://([a-z0-9-]+\.)?amazon\.cn/.*#i',
     64                'amazon-a-co'          => '#https?://(www\.)?a.co/.*#i',
     65                'amazon-amz-onl'       => '#https?://(www\.)?amz.onl/.*#i',
     66                'amazon-amzn-to'       => '#https?://(www\.)?amzn.to/.*#i',
     67                'amazon-amzn-eu'       => '#https?://(www\.)?amzn.eu/.*#i',
     68                'amazon-amzn-in'       => '#https?://(www\.)?amzn.in/.*#i',
     69                'amazon-amzn-asia'     => '#https?://(www\.)?amzn.asia/.*#i',
     70                'amazon-z-cn'          => '#https?://(www\.)?z.cn/.*#i',
    5971        );
    6072
    6173        /**
     
    801813                                        'https://www.facebook.com/video.php?v=317622575398',
    802814                                ),
    803815                        ),
     816                        array(
     817                                $providers['amazon-na'],
     818                                array(
     819                                        'https://read.amazon.com/kp/kshare?asin=B008TW1HMG&tag=foo-20',
     820                                        'https://read.amazon.com/kp/kshare?asin=B00DPM7TIG&tag=foo-20&id=XD3ezAVVQ3KP0bWxSFvosg',
     821                                        'https://read.amazon.com/kp/embed?asin=B008TW1HMG&tag=foo-20',
     822                                        'https://read.amazon.com/kp/card?asin=B008TW1HMG&tag=foo-20&preview=inline',
     823                                        'https://www.amazon.com/dp/B008TW1HMG',
     824                                        'https://smile.amazon.com/dp/B008TW1HMG',
     825                                ),
     826                        ),
     827                        array(
     828                                $providers['amazon-eu'],
     829                                array(
     830                                        'https://read.amazon.co.uk/kp/embed?asin=B008TW1HMG&tag=foo-20&ref_=bar_qux',
     831                                        'https://lire.amazon.fr/kp/embed?asin=B008TW1HMG&tag=foo-20&ref_=bar_qux',
     832                                        'https://www.amazon.fr/dp/B008TW1HMG',
     833                                ),
     834                        ),
     835                        array(
     836                                $providers['amazon-asia'],
     837                                array(
     838                                        'https://read.amazon.com.au/kp/embed?asin=B008TW1HMG&tag=foo-20&ref_=bar_qux',
     839                                        'https://read.amazon.co.jp/kp/embed?asin=B008TW1HMG&tag=foo-20&ref_=bar_qux',
     840                                        'https://www.amazon.com.au/dp/B008TW1HMG',
     841                                ),
     842                        ),
     843                        array(
     844                                $providers['amazon-cn'],
     845                                array(
     846                                        'https://read.amazon.cn/kp/embed?asin=B01M06TYLV&tag=foo-20&ref_=bar_qux',
     847                                        'https://www.amazon.cn.au/dp/B01M06TYLV',
     848                                ),
     849                        ),
     850                        array(
     851                                $providers['amazon-a-co'],
     852                                array(
     853                                        'https://a.co/2dyHj3O',
     854                                ),
     855                        ),
     856                        array(
     857                                $providers['amazon-amz-onl'],
     858                                array(
     859                                        'https://read.amazon.com/kp/embed?asin=B008TW1HMG&tag=foo-20&ref_=bar_qux',
     860                                ),
     861                        ),
     862                        array(
     863                                $providers['amazon-amzn-to'],
     864                                array(
     865                                        'http://amzn.to/2dyHj3O',
     866                                ),
     867                        ),
     868                        array(
     869                                $providers['amazon-amzn-eu'],
     870                                array(
     871                                        'http://amzn.eu/4J2OlYl',
     872                                ),
     873                        ),
     874                        array(
     875                                $providers['amazon-amzn-in'],
     876                                array(
     877                                        'http://amzn.in/a6Xi0h0',
     878                                ),
     879                        ),
     880                        array(
     881                                $providers['amazon-amzn-asia'],
     882                                array(
     883                                        'http://amzn.asia/b6z94pa',
     884                                ),
     885                        ),
     886                        array(
     887                                $providers['amazon-z-cn'],
     888                                array(
     889                                        'http://z.cn/85oPeSf',
     890                                ),
     891                        ),
    804892                );
    805893        }
    806894