commercetools-8.x-1.2-alpha1/src/Plugin/commercetools/SubscriptionDestinationType/SqsSubscriptionDestination.php

src/Plugin/commercetools/SubscriptionDestinationType/SqsSubscriptionDestination.php
<?php

namespace Drupal\commercetools\Plugin\commercetools\SubscriptionDestinationType;

use Drupal\commercetools\Attribute\SubscriptionDestinationType;
use Drupal\commercetools\Form\SubscriptionSettingsForm;
use Drupal\commercetools\SubscriptionDestinationTypeBase;
use Drupal\Core\Render\Element\Password;
use Drupal\Core\StringTranslation\TranslatableMarkup;

/**
 * Provides a AWS SQS subscription.
 *
 * @SubscriptionDestinationType(
 *   id = "sqs",
 *   label = @Translation("AWS SQS"),
 *   config_name = "commercetools.subscriptions_destination_sqs",
 * )
 */
#[SubscriptionDestinationType(
  id: "sqs",
  label: new TranslatableMarkup('AWS SQS'),
  config_name: "commercetools.subscriptions_destination_sqs",
)]
class SqsSubscriptionDestination extends SubscriptionDestinationTypeBase {

  /**
   * {@inheritdoc}
   */
  public function getSettingsFormFields(): array {
    $fields = [];

    $fields['queue_url'] = [
      '#type' => 'textfield',
      '#title' => $this->t('Queue URL'),
      '#required' => TRUE,
      '#size' => 120,
    ];
    $fields['access_key'] = [
      '#type' => 'textfield',
      '#title' => $this->t('Access Key'),
      '#required' => TRUE,
    ];
    $fields['access_secret'] = [
      '#type' => 'password',
      '#title' => $this->t('Access Secret'),
      '#required' => TRUE,
      '#pre_render' => [
        [Password::class, 'preRenderPassword'],
        // A trick to prefill the stored secret value.
        [SubscriptionSettingsForm::class, 'fillStoredPasswordCallback'],
      ],
    ];
    $fields['region'] = [
      '#type' => 'textfield',
      '#title' => $this->t('Region'),
      '#required' => TRUE,
    ];

    return $fields;
  }

  /**
   * {@inheritdoc}
   */
  public function getDestinationQueryPart(array $formValues): array {
    $filedNames = [
      'queue_url' => 'queueUrl',
      'access_key' => 'accessKey',
      'access_secret' => 'accessSecret',
      'region' => 'region',
    ];

    $result = [];
    foreach ($filedNames as $fieldNameForm => $fieldNameQuery) {
      if (!empty($formValues[$fieldNameForm])) {
        $result[$fieldNameQuery] = $formValues[$fieldNameForm];
      }
    }
    $result['authenticationMode'] = 'Credentials';
    return $result;
  }

  /**
   * {@inheritdoc}
   */
  public function getDestinationQueryName(): string {
    return 'SQS';
  }

}

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

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