smsplatform-1.0.x-dev/src/SmsIncomingController.php

src/SmsIncomingController.php
<?php

declare(strict_types=1);

namespace Drupal\smsplatform;

use Drupal\Core\Controller\ControllerBase;
use Drupal\smsplatform\Entity\SmsGatewayInterface;
use Drupal\smsplatform\Provider\SmsProviderInterface;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpKernel\Controller\ArgumentResolverInterface;

/**
 * Provides a controller for receiving incoming messages.
 */
class SmsIncomingController extends ControllerBase {

  /**
   * Creates an incoming route controller.
   *
   * @param \Symfony\Component\HttpKernel\Controller\ArgumentResolverInterface $argumentResolver
   *   The argument resolver.
   * @param \Drupal\smsplatform\Provider\SmsProviderInterface $smsProvider
   *   The SMS service provider.
   */
  public function __construct(
    protected ArgumentResolverInterface $argumentResolver,
    protected SmsProviderInterface $smsProvider,
  ) {
  }

  /**
   * Receives incoming messages for a gateway.
   *
   * @param \Symfony\Component\HttpFoundation\Request $request
   *   The current HTTP request.
   * @param \Drupal\smsplatform\Entity\SmsGatewayInterface $sms_gateway
   *   The gateway which is handling the incoming request.
   *
   * @return mixed
   *   A response to return.
   */
  public function processIncoming(Request $request, SmsGatewayInterface $sms_gateway) {
    $controller = [$sms_gateway->getPlugin(), 'processIncoming'];
    $arguments = $this->argumentResolver
      ->getArguments($request, $controller);

    /** @var \Drupal\smsplatform\SmsProcessingResponse $response */
    $response = call_user_func_array($controller, $arguments);

    foreach ($response->getMessages() as $message) {
      $this->smsProvider->queue($message);
    }

    return $response->getResponse();
  }

}

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

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