private function _getDataUrl(tubepress_api_media_MediaItem $mediaItem) { $link = $this->_urlFactory->fromString('https://www.youtube.com/embed/' . $mediaItem->getId()); $embedQuery = $link->getQuery(); $url = $this->_urlFactory->fromCurrent(); $origin = $url->getScheme() . '://' . $url->getHost(); $autoPlay = $this->_context->get(tubepress_api_options_Names::EMBEDDED_AUTOPLAY); $loop = $this->_context->get(tubepress_api_options_Names::EMBEDDED_LOOP); $showInfo = $this->_context->get(tubepress_api_options_Names::EMBEDDED_SHOW_INFO); $autoHide = $this->_context->get(tubepress_youtube3_api_Constants::OPTION_AUTOHIDE); $fullscreen = $this->_context->get(tubepress_youtube3_api_Constants::OPTION_FULLSCREEN); $modestBranding = $this->_context->get(tubepress_youtube3_api_Constants::OPTION_MODEST_BRANDING); $showRelated = $this->_context->get(tubepress_youtube3_api_Constants::OPTION_SHOW_RELATED); $embedQuery->set('autohide', $this->_getAutoHideValue($autoHide)); $embedQuery->set('autoplay', $this->_langUtils->booleanToStringOneOrZero($autoPlay)); $embedQuery->set('enablejsapi', '1'); $embedQuery->set('fs', $this->_langUtils->booleanToStringOneOrZero($fullscreen)); $embedQuery->set('modestbranding', $this->_langUtils->booleanToStringOneOrZero($modestBranding)); $embedQuery->set('origin', $origin); $embedQuery->set('rel', $this->_langUtils->booleanToStringOneOrZero($showRelated)); $embedQuery->set('showinfo', $this->_langUtils->booleanToStringOneOrZero($showInfo)); $embedQuery->set('wmode', 'opaque'); if ($loop) { $embedQuery->set('loop', $this->_langUtils->booleanToStringOneOrZero($loop)); $embedQuery->set('playlist', $mediaItem->getId()); } return $link; }
public function onFilter_PucRequestInfoResultTubePress(tubepress_api_event_EventInterface $event) { $pluginInfo = $event->getSubject(); if ($pluginInfo && $this->_environment->isPro()) { $apiKey = $this->_context->get(tubepress_api_options_Names::TUBEPRESS_API_KEY); if (!$apiKey) { /* * We don't want to downgrade Pro users that haven't entered an API key. */ $pluginInfo->download_url = null; } if (property_exists($pluginInfo, 'download_url') && strpos($pluginInfo->download_url, 'free') !== false) { /* * Extra assurance that we don't downgrade Pro users */ $pluginInfo->download_url = null; } if (property_exists($pluginInfo, 'download_url') && $pluginInfo->download_url && $apiKey) { $url = $this->_urlFactory->fromString($pluginInfo->download_url); $url->getQuery()->set('key', $apiKey)->set('pid', 2); $pluginInfo->download_url = $url->toString(); } $event->setSubject($pluginInfo); } }
public function onSearchInputTemplatePreRender(tubepress_api_event_EventInterface $event) { /* * @var array */ $existingTemplateVars = $event->getSubject(); $resultsUrl = $this->_context->get(tubepress_api_options_Names::SEARCH_RESULTS_URL); $url = ''; try { $url = $this->_urlFactory->fromString($resultsUrl); } catch (Exception $e) { //this is not a real problem, as the user might simply not supply a custom URL } /* if the user didn't request a certain page, just send the search results right back here */ if ($url == '') { $url = $this->_urlFactory->fromCurrent(); } /* clean up the search terms a bit */ $searchTerms = $this->_requestParams->getParamValue('tubepress_search'); $searchTerms = urldecode($searchTerms); /* * read http://stackoverflow.com/questions/1116019/submitting-a-get-form-with-query-string-params-and-hidden-params-disappear * if you're curious as to what's going on here */ $params = $url->getQuery(); $params->remove('tubepress_page'); $params->remove('tubepress_search'); /* apply the template variables */ $newVars = array(tubepress_api_template_VariableNames::SEARCH_HANDLER_URL => $url->toString(), tubepress_api_template_VariableNames::SEARCH_HIDDEN_INPUTS => $params->toArray(), tubepress_api_template_VariableNames::SEARCH_TERMS => $searchTerms); $existingTemplateVars = array_merge($existingTemplateVars, $newVars); $event->setSubject($existingTemplateVars); }
/** * @return tubepress_api_url_UrlInterface */ private function _startAdminUrl($pageSlug, tubepress_spi_http_oauth2_Oauth2ProviderInterface $provider) { $asString = $this->_wpFunctions->admin_url('admin.php'); $toReturn = $this->_urlFactory->fromString($asString); $providerName = $provider->getName(); $toReturn->getQuery()->set('page', $pageSlug)->set('provider', $providerName)->set('csrf_token', $this->getCsrfSecret()); return $toReturn; }
private function _toUrl($url) { if (!$url instanceof tubepress_api_url_UrlInterface) { $url = $this->_urlFactory->fromString($url); } $url->freeze(); return $url; }
/** * {@inheritdoc} */ public function buildUrlForItem($id) { $url = $this->_urlFactory->fromString(self::$_URL_BASE); $id = str_replace('dailymotion_', '', $id); $url->addPath('video')->addPath($id); $this->_addFieldsParam($url->getQuery()); return $url; }
public function transform($incoming) { if ($this->_looksLikeDailymotionUser($incoming)) { //looks like a valid user idn return $incoming; } $incoming = trim($incoming, '/'); /* * Might be * * 1. http://www.dailymotion.com/user/foobar/1 * 2. http://www.dailymotion.com/user/foobar * 3. http://www.dailymotion.com/foobar */ try { $url = $this->_urlFactory->fromString($incoming); $host = $url->getHost(); if (!$this->_stringUtils->endsWith($host, 'dailymotion.com')) { return null; } $pathSegments = $url->getPathSegments(); $pathCount = count($pathSegments); if ($pathCount < 2) { return null; } if ($pathCount > 2 && $pathSegments[1] !== 'user') { return null; } if ($pathCount > 2) { $user = $pathSegments[2]; } else { $user = $pathSegments[1]; } $error = $user === 'user' || !$this->_looksLikeDailymotionUser($user); if ($error) { return null; } return $user; } catch (InvalidArgumentException $e) { //invalid URL return null; } }
public function transform($incoming) { if ($this->_looksLikeDailymotionVideoId($incoming)) { //looks like a valid video ID return $incoming; } // x2xv8yy_description if (preg_match_all('~^[a-z0-9]+_.+$~', $incoming, $matches) === 1) { $exploded = explode('_', $incoming); return $exploded[0]; } $incoming = trim($incoming, '/'); /* * Might be * * 1. http://www.dailymotion.com/video/videoid * 2. http://www.dailymotion.com/video/videoid_description */ try { $url = $this->_urlFactory->fromString($incoming); $host = $url->getHost(); $path = $url->getPath(); if (!$this->_stringUtils->endsWith($host, 'dailymotion.com')) { return null; } if (!$this->_stringUtils->startsWith($path, '/video/') && !$this->_stringUtils->startsWith($path, '/hub/')) { return null; } $one = 1; $path = str_replace(array('/video/', '/hub/'), '', $path, $one); $exploded = explode('_', $path); $videoId = $exploded[0]; $error = !$this->_looksLikeDailymotionVideoId($videoId); if ($error) { return null; } return $videoId; } catch (InvalidArgumentException $e) { //invalid URL return null; } }
private function _getDataUrl(tubepress_api_media_MediaItem $mediaItem, $playerId) { $autoPlay = $this->_context->get(tubepress_api_options_Names::EMBEDDED_AUTOPLAY); $showInfo = $this->_context->get(tubepress_api_options_Names::EMBEDDED_SHOW_INFO); $actualId = str_replace('dailymotion_', '', $mediaItem->getId()); /* build the data URL based on these options */ $link = $this->_urlFactory->fromString("https://www.dailymotion.com/embed/video/{$actualId}"); $query = $link->getQuery(); $query->set(self::$_URL_PARAM_AUTOPLAY, $this->_langUtils->booleanToStringOneOrZero($autoPlay)); $query->set(self::$_URL_PARAM_UI_START_SCREEN, $this->_langUtils->booleanToStringOneOrZero($showInfo)); $query->set(self::$_URL_PARAM_ID, $playerId); return $link; }
public function getValueMap() { if (!isset($this->_cache)) { $url = $this->_urlFactory->fromString($this->_urlAsString); $response = $this->_apiUtility->getDecodedApiResponse($url); $list = $this->_arrayReader->getAsArray($response, 'list'); $this->_cache = array(); foreach ($list as $entry) { if (!isset($entry[$this->_codeKey])) { continue; } $code = $entry[$this->_codeKey]; $displayName = $this->getDisplayNameFromCode($code, $entry); if ($displayName) { $this->_cache[$code] = "{$code} - {$displayName}"; } } ksort($this->_cache); $this->_cache = array_merge(array('none' => 'select ...'), $this->_cache); } return $this->_cache; }
private function _maybeConvertUrl($originalValue, $pathSegment) { $url = null; try { $url = $this->_urlFactory->fromString($originalValue); } catch (Exception $e) { return $originalValue; } $host = $url->getHost(); if (!$this->_stringUtils->endsWith($host, 'vimeo.com')) { return $originalValue; } $path = $url->getPath(); $pathStartsWithSegment = $this->_stringUtils->startsWith($path, '/' . $pathSegment); if (!$pathStartsWithSegment) { return $originalValue; } $explodedPath = preg_split('~/~', $path); if (count($explodedPath) < 3) { return $originalValue; } return $explodedPath[2]; }
private function _applyCategory(array &$toReturn, array $json, $index) { $categoryId = $this->_relativeQueryAsString($json, $index, array(tubepress_youtube3_impl_ApiUtility::RESOURCE_VIDEO_SNIPPET, tubepress_youtube3_impl_ApiUtility::RESOURCE_VIDEO_SNIPPET_CATEGORY_ID)); $categoryUrl = $this->_urlFactory->fromString(tubepress_youtube3_impl_ApiUtility::YOUTUBE_API_URL); $categoryUrl->addPath(tubepress_youtube3_impl_ApiUtility::PATH_VIDEO_CATEGORIES); $categoryUrl->getQuery()->set(tubepress_youtube3_impl_ApiUtility::QUERY_PART, tubepress_youtube3_impl_ApiUtility::PART_SNIPPET)->set(tubepress_youtube3_impl_ApiUtility::QUERY_CATEGORIES_ID, $categoryId); $response = $this->_apiUtility->getDecodedApiResponse($categoryUrl); $responseItems = $this->_arrayReader->getAsArray($response, tubepress_youtube3_impl_ApiUtility::RESPONSE_ITEMS); $firstItem = $responseItems[0]; $categoryTitle = $this->_arrayReader->getAsString($firstItem, sprintf('%s.%s', tubepress_youtube3_impl_ApiUtility::RESOURCE_VIDEO_SNIPPET, tubepress_youtube3_impl_ApiUtility::RESOURCE_SNIPPET_TITLE)); if ($categoryTitle !== '') { $toReturn[tubepress_api_media_MediaItem::ATTRIBUTE_CATEGORY_DISPLAY_NAME] = $categoryTitle; } }
protected function toUrl($candidate, $mustBeAbsolute = true) { if (!is_string($candidate) || !$candidate) { return false; } try { $url = $this->_urlFactory->fromString($candidate); if ($mustBeAbsolute && !$url->isAbsolute()) { return null; } return $url; } catch (InvalidArgumentException $e) { return null; } }
private function _getDataUrl(tubepress_api_media_MediaItem $mediaItem) { $autoPlay = $this->_context->get(tubepress_api_options_Names::EMBEDDED_AUTOPLAY); $showInfo = $this->_context->get(tubepress_api_options_Names::EMBEDDED_SHOW_INFO); $loop = $this->_context->get(tubepress_api_options_Names::EMBEDDED_LOOP); $color = $this->_context->get(tubepress_vimeo3_api_Constants::OPTION_PLAYER_COLOR); /* build the data URL based on these options */ $link = $this->_urlFactory->fromString('https://player.vimeo.com/video/' . $mediaItem->getId()); $query = $link->getQuery(); $query->set(self::$_URL_PARAM_AUTOPLAY, $this->_langUtils->booleanToStringOneOrZero($autoPlay)); $query->set(self::$_URL_PARAM_COLOR, $color); $query->set(self::$_URL_PARAM_LOOP, $this->_langUtils->booleanToStringOneOrZero($loop)); $query->set(self::$_URL_PARAM_PORTRAIT, $this->_langUtils->booleanToStringOneOrZero($showInfo)); $query->set(self::$_URL_PARAM_BYLINE, $this->_langUtils->booleanToStringOneOrZero($showInfo)); $query->set(self::$_URL_PARAM_TITLE, $this->_langUtils->booleanToStringOneOrZero($showInfo)); return $link; }
private function _maybeGetPlaylistValueFromUrl($originalValue) { $url = null; try { $url = $this->_urlFactory->fromString($originalValue); } catch (Exception $e) { return $originalValue; } $host = $url->getHost(); if (!$this->_stringUtils->endsWith($host, 'youtube.com')) { return $originalValue; } $params = $url->getQuery(); if (!$params->hasKey('list') && !$params->hasKey('p')) { return $originalValue; } if ($params->hasKey('list')) { return $params->get('list'); } return $params->get('p'); }
/** * {@inheritdoc} */ public function buildUrlForItem($id) { $url = $this->_urlFactory->fromString(self::$_URL_BASE); $url->addPath(self::$_PATH_SEGMENT_VIDEOS)->addPath($id); return $url; }
private function _collectMetadata() { $idQueriesToTest = array(sprintf('%s.%s.%s', tubepress_youtube3_impl_ApiUtility::RESOURCE_PLITEM_SNIPPET, tubepress_youtube3_impl_ApiUtility::RESOURCE_PLITEM_SNIPPET_RESOURCE_ID, tubepress_youtube3_impl_ApiUtility::RESOURCE_PLITEM_SNIPPET_RESOURCE_ID_VIDEO_ID), sprintf('%s.%s', tubepress_youtube3_impl_ApiUtility::RESOURCE_SEARCH_ID, tubepress_youtube3_impl_ApiUtility::RESOURCE_SEARCH_ID_VIDEO_ID), tubepress_youtube3_impl_ApiUtility::RESOURCE_ID); $items = $this->_arrayReader->getAsArray($this->_feedAsArray, tubepress_youtube3_impl_ApiUtility::RESPONSE_ITEMS, array()); $ids = array(); $selectedQuery = null; for ($index = 0; $index < count($items); $index++) { if ($this->getReasonUnableToUseItemAtIndex($index) !== null) { if ($this->_logger->isEnabled()) { $reason = $this->getReasonUnableToUseItemAtIndex($index); $this->_logDebug(sprintf('Skipping video at index <code>%d</code>: <code>%s</code>', $index, $reason)); } $this->_skippedVideoCount++; unset($this->_feedAsArray[tubepress_youtube3_impl_ApiUtility::RESPONSE_ITEMS][$index]); continue; } $item = $items[$index]; if ($selectedQuery === null) { foreach ($idQueriesToTest as $query) { if ($this->_arrayReader->getAsString($item, $query) !== '') { $selectedQuery = $query; break; } } } if ($selectedQuery === null) { throw new RuntimeException('Unable to determine query to get video IDs'); } $id = $this->_arrayReader->getAsString($item, $selectedQuery); if ($id == '') { throw new RuntimeException('Unable to determine ID for a video in the result.'); } $ids[] = $id; } if ($this->_logger->isEnabled()) { $this->_logDebug(sprintf('Making API call to collect metadata for <code>%d</code> video(s): <code>[ %s ]</code>', count($ids), implode(', ', $ids))); } $url = $this->_urlFactory->fromString(tubepress_youtube3_impl_ApiUtility::YOUTUBE_API_URL); $url->addPath(tubepress_youtube3_impl_ApiUtility::PATH_VIDEOS); $partsToRequest = array(tubepress_youtube3_impl_ApiUtility::PART_ID, tubepress_youtube3_impl_ApiUtility::PART_SNIPPET, tubepress_youtube3_impl_ApiUtility::PART_VIDEO_STATISTICS, tubepress_youtube3_impl_ApiUtility::PART_VIDEO_CONTENT_DETAILS); $fieldsToRequest = array(tubepress_youtube3_impl_ApiUtility::RESOURCE_ID, tubepress_youtube3_impl_ApiUtility::RESOURCE_SNIPPET, tubepress_youtube3_impl_ApiUtility::RESOURCE_VIDEO_STATS, tubepress_youtube3_impl_ApiUtility::RESOURCE_VIDEO_CONTENT_DETAILS); $fields = sprintf('%s,%s(%s)', tubepress_youtube3_impl_ApiUtility::RESPONSE_ETAG, tubepress_youtube3_impl_ApiUtility::RESPONSE_ITEMS, implode(',', $fieldsToRequest)); /* * author //snippet.channelId and snippet.channelTitle * category //snippet.categoryId * comments count //statistics.commentCount * date uploaded //snippet.publishedAt * description //snippet.description * disklikes count //statistics.disklikeCount * favorites count //statistics.favoriteCount * id //id * length //contentDetails.duration * likes count //statistics.likeCount * tags //snippet.tags * title //snippet.title * url //https://youtu.be/<id> * view count //statistics.viewCount */ $url->getQuery()->set(tubepress_youtube3_impl_ApiUtility::QUERY_VIDEOS_ID, implode(',', $ids))->set(tubepress_youtube3_impl_ApiUtility::QUERY_PART, implode(',', $partsToRequest))->set(tubepress_youtube3_impl_ApiUtility::QUERY_FIELDS, $fields); return $this->_apiUtility->getDecodedApiResponse($url); }
/** * {@inheritdoc} */ public function getTemplateVariables(tubepress_api_media_MediaItem $mediaItem) { return array(tubepress_api_template_VariableNames::EMBEDDED_DATA_URL => $this->_urlFactory->fromString(sprintf('http://www.youtube.com/embed/%s', $mediaItem->getId()))); }
/** * {@inheritdoc} */ public function getTemplateVariables(tubepress_api_media_MediaItem $mediaItem) { $dataUrl = $this->_urlFactory->fromString(sprintf('https://www.youtube.com/watch?v=%s', $mediaItem->getId())); return array('userContentUrl' => $this->_environment->getUserContentUrl(), 'autostart' => $this->_context->get(tubepress_api_options_Names::EMBEDDED_AUTOPLAY), tubepress_api_template_VariableNames::EMBEDDED_DATA_URL => $dataUrl, tubepress_jwplayer5_api_OptionNames::COLOR_FRONT => $this->_context->get(tubepress_jwplayer5_api_OptionNames::COLOR_FRONT), tubepress_jwplayer5_api_OptionNames::COLOR_LIGHT => $this->_context->get(tubepress_jwplayer5_api_OptionNames::COLOR_LIGHT), tubepress_jwplayer5_api_OptionNames::COLOR_SCREEN => $this->_context->get(tubepress_jwplayer5_api_OptionNames::COLOR_SCREEN), tubepress_jwplayer5_api_OptionNames::COLOR_BACK => $this->_context->get(tubepress_jwplayer5_api_OptionNames::COLOR_BACK)); }
private function _getUrl(array $config, $key) { if (!$this->_isAllSet($config, self::$_TOP_LEVEL_KEY_USER, self::$_2ND_LEVEL_KEY_URLS, $key)) { return null; } $candidate = $config[self::$_TOP_LEVEL_KEY_USER][self::$_2ND_LEVEL_KEY_URLS][$key]; try { $toReturn = $this->_urlFactory->fromString($candidate); $toReturn->freeze(); return $toReturn; } catch (InvalidArgumentException $e) { if ($this->_shouldLog) { $this->_logger->error("Unable to parse {$key} URL from settings.php"); } return null; } }
/** * {@inheritdoc} */ public function getTokenEndpoint() { return $this->_urlFactory->fromString('https://api.vimeo.com/oauth/authorize/client'); }