You are here

StatusPreviewController.php in Heartbeat 8

File

modules/statusmessage/src/Controller/StatusPreviewController.php
View source
<?php

namespace Drupal\statusmessage\Controller;

require_once DRUPAL_ROOT . '/vendor/autoload.php';
use Drupal\Core\Controller\ControllerBase;
use Drupal\Core\Render\Markup;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\DependencyInjection\ContainerInterface;
use GuzzleHttp\Client;
use Drupal\statusmessage\MarkupGenerator;

/**
 * Class StatusPreviewController.
 *
 * @package Drupal\statusmessage\Controller
 */
class StatusPreviewController extends ControllerBase {
  protected $httpClient;

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

  /**
   * Constructor.
   */
  public function __construct(Client $http_client) {
    $this->httpClient = $http_client;
  }

  /**
   * Generate.
   *
   * @return string
   *   Return Hello string.
   */
  public function generate($url) {
    if ($url == 'build') {
      $url = \Drupal::request()
        ->get('data');
      $generator = new MarkupGenerator();
      if (!strpos($url, 'http://')) {
        $url = 'http://' . $url;
      }
      if ($generator
        ->parseMarkup($url)) {
        $preview = $generator
          ->generatePreview();
        $response = new Response();
        $response
          ->setContent(\GuzzleHttp\json_encode(array(
          'data' => $preview,
        )));
        $response->headers
          ->set('Content-Type', 'application/json');
        return $response;
      }

      //      $contents = file_get_contents('http://' . $url);
      //      $response = new Response();
      //      $this->dom = new \DOMDocument;
      //      $this->dom->loadHTML($contents);
      //
      //      $xpath = new \DomXpath($this->dom);
      //
      //      $anchorAttributes = $this->getAnchorNodeNames();
      //      $imgAttributes = $this->getImgNodeNames();
      //      $imgLogos = $this->searchDom('img', 'logo');
      //      $anchorLogos = $this->searchDom('a', 'logo');
      //
    }
    return false;
  }

}

Classes

Namesort descending Description
StatusPreviewController Class StatusPreviewController.