You are here

function media_entity_instagram_oembed_resource_url_alter in Media entity Instagram 3.x

Implements hook_oembed_resource_url_alter().

File

./media_entity_instagram.module, line 15
The module file.

Code

function media_entity_instagram_oembed_resource_url_alter(array &$parsed_url, Provider $provider) {
  if ($provider
    ->getName() !== 'Instagram') {
    return;
  }
  $settings = \Drupal::config('media_entity_instagram.settings');
  if (empty($settings
    ->get('facebook_app_id')) || empty($settings
    ->get('facebook_app_secret'))) {
    \Drupal::messenger()
      ->addError(t('The Facebook credentials have not been configured. Please visit <a href=":form">the settings form</a> .', [
      ':form' => Url::fromRoute('media_entity_instagram.settings')
        ->toString(),
    ]));
  }

  // Get the second endpoint (GraphAPI) and use it.
  $endpoints = $provider
    ->getEndpoints();
  $endpoint = reset($endpoints);
  if (count($endpoints) > 1) {
    $endpoint = $endpoints[1];
  }
  $url = UrlHelper::parse($parsed_url['query']['url'])['path'];
  $parsed_url['query']['url'] = $url;
  $resource_url = $endpoint
    ->buildResourceUrl($parsed_url['query']['url']);
  $parsed_url['path'] = UrlHelper::parse($resource_url)['path'];
  $parsed_url['query']['access_token'] = sprintf("%s|%s", $settings
    ->get('facebook_app_id'), $settings
    ->get('facebook_app_secret'));
  $parsed_url['query']['omitscript'] = TRUE;
}