You are here

public function MediaInternetYouTubeHandler::validId in Media: YouTube 7.3

Same name and namespace in other branches
  1. 7.2 includes/MediaInternetYouTubeHandler.inc \MediaInternetYouTubeHandler::validId()

Check if a YouTube video ID is valid.

Return value

boolean TRUE if the video ID is valid, or throws a MediaInternetValidationException otherwise.

1 call to MediaInternetYouTubeHandler::validId()
MediaInternetYouTubeHandler::parse in includes/MediaInternetYouTubeHandler.inc
1 method overrides MediaInternetYouTubeHandler::validId()
MediaYouTubeTestHandler::validId in tests/includes/MediaYouTubeTestHandler.inc
Check if a YouTube video ID is valid.

File

includes/MediaInternetYouTubeHandler.inc, line 109
Extends the MediaInternetBaseHandler class to handle YouTube videos.

Class

MediaInternetYouTubeHandler
Implementation of MediaInternetBaseHandler.

Code

public function validId($id, $type = 'v') {
  $uri = file_stream_wrapper_uri_normalize('youtube://' . $type . '/' . check_plain($id));
  $external_url = file_create_url($uri);
  $oembed_url = url('https://www.youtube.com/oembed', array(
    'query' => array(
      'url' => $external_url,
      'format' => 'json',
    ),
  ));
  $response = drupal_http_request($oembed_url);
  if (!isset($response->error)) {
    $data = drupal_json_decode($response->data);
    if (!empty($data)) {
      return TRUE;
    }
    else {
      $error_data = t('Unspecific');
      if (is_string($response->data)) {
        $error_data = $response->data;
      }
      throw new MediaInternetValidationException("The YouTube video ID is invalid, video was deleted or is disabled for embedding. Error: {$error_data}");
    }
  }
  else {
    throw new Exception("Error Processing Request. (Error: {$response->code}, {$response->error})");
  }
}