PluginProbe ʕ •ᴥ•ʔ
EmbedPress – PDF Embedder, Embed PDF viewer, YouTube Videos, 3D FlipBook, Social feeds & more / 2.5.4
EmbedPress – PDF Embedder, Embed PDF viewer, YouTube Videos, 3D FlipBook, Social feeds & more v2.5.4
4.5.6 4.5.5 4.5.4 4.5.3 4.5.2 trunk 1.0.0 1.1.0 1.1.1 1.1.2 1.1.3 1.2.0 1.3.0 1.3.1 1.4.0 1.4.1 1.4.2 1.4.3 1.4.4 1.5.0 1.6.0 1.6.1 1.6.2 1.6.3 1.7.0 1.7.1 1.7.2 1.7.3 1.7.4 1.7.5 2.0.0 2.0.1 2.0.2 2.0.3 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.2.0 2.2.1 2.2.2 2.3.0 2.3.1 2.3.2 2.3.3 2.4.0 2.4.1 2.5.0 2.5.1 2.5.2 2.5.3 2.5.4 2.5.5 2.6.0 2.6.1 2.6.2 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.7.6 2.7.7 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.1.0 3.1.1 3.1.2 3.1.3 3.2.0 3.2.1 3.3.0 3.3.1 3.3.2 3.3.3 3.3.4 3.3.5 3.3.6 3.3.7 3.4.0 3.4.1 3.4.2 3.4.3 3.5.0 3.5.1 3.5.2 3.5.3 3.6.0 3.6.1 3.6.2 3.6.3 3.6.4 3.6.5 3.6.6 3.6.7 3.6.8 3.7.0 3.7.1 3.7.2 3.7.3 3.8.0 3.8.1 3.8.2 3.8.3 3.8.4 3.8.5 3.9.0 3.9.1 3.9.10 3.9.11 3.9.12 3.9.13 3.9.14 3.9.15 3.9.16 3.9.17 3.9.2 3.9.3 3.9.4 3.9.5 3.9.6 3.9.7 3.9.8 3.9.9 4.0.0 4.0.1 4.0.10 4.0.11 4.0.12 4.0.13 4.0.14 4.0.2 4.0.3 4.0.4 4.0.5 4.0.6 4.0.7 4.0.8 4.0.9 4.1.0 4.1.1 4.1.10 4.1.2 4.1.3 4.1.4 4.1.5 4.1.6 4.1.7 4.1.8 4.1.9 4.2.0 4.2.1 4.2.2 4.2.3 4.2.4 4.2.5 4.2.6 4.2.7 4.2.8 4.2.9 4.3.0 4.3.1 4.4.0 4.4.1 4.4.10 4.4.11 4.4.2 4.4.3 4.4.4 4.4.5 4.4.6 4.4.7 4.4.8 4.4.9 4.5.0 4.5.1
embedpress / EmbedPress / Providers / Twitch.php
embedpress / EmbedPress / Providers Last commit date
Giphy.php 6 years ago GoogleDocs.php 6 years ago GoogleMaps.php 6 years ago Twitch.php 6 years ago index.html 7 years ago
Twitch.php
126 lines
1 <?php
2
3 namespace EmbedPress\Providers;
4
5 use Embera\Adapters\Service as EmberaService;
6
7 (defined('ABSPATH') && defined('EMBEDPRESS_IS_LOADED')) or die("No direct script access allowed.");
8
9 /**
10 * Entity responsible to support Twitch embeds.
11 *
12 * @package EmbedPress
13 * @subpackage EmbedPress/Providers
14 * @author EmbedPress <help@embedpress.com>
15 * @copyright Copyright (C) 2020 WPDeveloper. All rights reserved.
16 * @license GPLv3 or later
17 * @since 1.5.0
18 */
19 class Twitch extends EmberaService
20 {
21 /**
22 * The regex which identifies Twitch URLs.
23 *
24 * @since 1.5.0
25 * @access private
26 *
27 * @var string
28 */
29 private $urlRegexPattern = '/http[s]?:\/\/(?:www\.|clips\.)twitch\.tv\/([0-9a-zA-Z\-\_]+)\/?(chat\/?$|[0-9a-z\-\_]*)?/';
30
31 /**
32 * Method that verifies if the embed URL belongs to Twitch.
33 *
34 * @since 1.5.0
35 *
36 * @return boolean
37 */
38 public function validateUrl()
39 {
40 return preg_match($this->urlRegexPattern, $this->url);
41 }
42
43 /**
44 * Return the type of the embed based on the URL.
45 *
46 * @param $url
47 *
48 * @return string
49 */
50 protected function getType($url)
51 {
52 if (stristr($url, 'clips.twitch.tv')) {
53 return 'clip';
54 }
55
56 if (stristr($url, '/videos/')) {
57 return 'video';
58 }
59
60 if (preg_match('#/chat$#', $url)) {
61 return 'chat';
62 }
63
64 return 'channel';
65 }
66
67 /**
68 * This method fakes an Oembed response.
69 *
70 * @since 1.5.0
71 *
72 * @return array
73 */
74 public function fakeResponse()
75 {
76 $url = $this->getUrl();
77 $providerUrl = 'https://twitch.tv';
78 $html = '';
79 $src = '';
80
81 if (preg_match("{$this->urlRegexPattern}i", $url, $matches)) {
82 $channelName = $matches[1];
83
84 $type = $this->getType($url);
85
86 // Clip, channel, chat, collection, or video?
87 switch ($type) {
88 case 'clip':
89 $src = 'https://clips.twitch.tv/embed?clip=' . $channelName . '&autoplay=false';
90 $attrs = 'scrolling="no" frameborder="0" allowfullscreen="true"';
91 break;
92
93 case 'video':
94 $channelName = $matches[2];
95 $src = 'https://player.twitch.tv/?video=' . $channelName;
96 $attrs = 'scrolling="no" frameborder="0" allowfullscreen="true"';
97 break;
98
99 case 'channel':
100 $src = 'https://player.twitch.tv/?channel=' . $channelName;
101 $attrs = 'scrolling="no" frameborder="0" allowfullscreen="true"';
102 break;
103
104 case 'chat':
105 $src = 'http://www.twitch.tv/embed/' . $channelName . '/chat';
106 $attrs = 'scrolling="yes" frameborder="0" allowfullscreen="true" id="' . $channelName . '"';
107 break;
108 }
109
110 $html = '<iframe src="' . $src . '" height="{height}" width="{width}" ' . $attrs . '></iframe>';
111
112 $response = [
113 'type' => $type,
114 'provider_name' => 'Twitch',
115 'provider_url' => $providerUrl,
116 'url' => $url,
117 'html' => $html,
118 ];
119 } else {
120 $response = [];
121 }
122
123 return $response;
124 }
125 }
126