link_obfuscation-1.0.0-beta3/src/Controller/LinkObfuscationController.php

src/Controller/LinkObfuscationController.php
<?php

namespace Drupal\link_obfuscation\Controller;

use Drupal\Core\Controller\ControllerBase;
use Drupal\Core\Language\LanguageManager;
use Drupal\Core\Url;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;

/**
 * Obfuscation Link Controller.
 */
class LinkObfuscationController extends ControllerBase {

  /**
   * The language manager.
   *
   * @var \Drupal\Core\Language\LanguageManagerInterface
   */
  protected $languageManager;

  /**
   * {@inheritdoc}
   */
  public function __construct(LanguageManager $language_manager) {
    $this->languageManager = $language_manager;
  }

  /**
   * {@inheritdoc}
   */
  public static function create(ContainerInterface $container) {
    return new static(
      $container->get('language_manager')
    );
  }

  /**
   * Get clean uri from post request.
   */
  public function getCleanUri(Request $request) {
    $routeName = $request->get('route_name');
    $routeParameters = $request->get('route_parameters', []);
    $options = $request->get('options', []);

    try {
      if (!empty($options['language'])) {
        $options['language'] = $this->languageManager
          ->getLanguage($options['language']);
      }

      $url = Url::fromRoute($routeName, $routeParameters, $options)->setAbsolute(TRUE);

      $response = [
        'code' => 200,
        'url' => $url->toString(),
      ];
    }
    catch (\Exception $e) {
      $this->getLogger('link_obfuscation')->error($e);
      $response = [
        'code' => 500,
        'url' => NULL,
        'message' => 'There has been an error.',
      ];
    }

    return new Response(json_encode($response));
  }

}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc