cloud-8.x-2.0-beta1/modules/cloud_service_providers/aws_cloud/src/Controller/Ec2/AwsCloudKeyPairController.php

modules/cloud_service_providers/aws_cloud/src/Controller/Ec2/AwsCloudKeyPairController.php
<?php

namespace Drupal\aws_cloud\Controller\Ec2;

use Drupal\aws_cloud\Entity\Ec2\KeyPair;
use Drupal\Core\Controller\ControllerBase;
use Drupal\Core\Messenger\Messenger;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Symfony\Component\HttpFoundation\BinaryFileResponse;

/**
 * Controller responsible for AWS KeyPair.
 */
class AwsCloudKeyPairController extends ControllerBase {

  /**
   * ApiController constructor.
   *
   * @param \Drupal\Core\Messenger\Messenger $messenger
   *   Messenger Object.
   */
  public function __construct(Messenger $messenger) {
    $this->messenger = $messenger;
  }

  /**
   * Dependency Injection.
   */
  public static function create(ContainerInterface $container) {
    return new static(
      $container->get('messenger')
    );
  }

  /**
   * Download Key.
   *
   * @param string $cloud_context
   *   Cloud context string.
   * @param \Drupal\aws_cloud\Entity\Ec2\KeyPair $aws_cloud_key_pair
   *   AWS Cloud KeyPair.
   *
   * @return \Symfony\Component\HttpFoundation\BinaryFileResponse|\Symfony\Component\HttpFoundation\RedirectResponse
   *   A binary file response object or redirect if key file doesn't exist.
   */
  public function downloadKey($cloud_context, KeyPair $aws_cloud_key_pair) {
    $file = $aws_cloud_key_pair->getKeyFileLocation();
    if ($file != FALSE) {
      $response = new BinaryFileResponse($file, 200, [], FALSE, 'attachment');
      $response->setContentDisposition('attachment', $aws_cloud_key_pair->getKeyPairName() . '.pem');
      $response->deleteFileAfterSend(TRUE);
      return $response;
    }
    else {
      // Just redirect to Key Pair listing page.
      return $this->redirect('view.aws_cloud_key_pair.list', [
        'cloud_context' => $cloud_context,
      ]);
    }
  }

}

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

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