vendor/league/flysystem-bundle/src/Adapter/Builder/SftpAdapterDefinitionBuilder.php line 40

Open in your IDE?
  1. <?php
  2. /*
  3.  * This file is part of the flysystem-bundle project.
  4.  *
  5.  * (c) Titouan Galopin <galopintitouan@gmail.com>
  6.  *
  7.  * For the full copyright and license information, please view the LICENSE
  8.  * file that was distributed with this source code.
  9.  */
  10. namespace League\FlysystemBundle\Adapter\Builder;
  11. use League\Flysystem\PhpseclibV2\SftpAdapter as SftpAdapterLegacy;
  12. use League\Flysystem\PhpseclibV2\SftpConnectionProvider as SftpConnectionProviderLegacy;
  13. use League\Flysystem\PhpseclibV3\SftpAdapter;
  14. use League\Flysystem\PhpseclibV3\SftpConnectionProvider;
  15. use Symfony\Component\DependencyInjection\Definition;
  16. use Symfony\Component\OptionsResolver\OptionsResolver;
  17. /**
  18.  * @author Titouan Galopin <galopintitouan@gmail.com>
  19.  *
  20.  * @internal
  21.  */
  22. class SftpAdapterDefinitionBuilder extends AbstractAdapterDefinitionBuilder
  23. {
  24.     public function getName(): string
  25.     {
  26.         return 'sftp';
  27.     }
  28.     protected function getRequiredPackages(): array
  29.     {
  30.         $adapterFqcn SftpAdapter::class;
  31.         $packageRequire 'league/flysystem-sftp-v3';
  32.         // Prevent BC
  33.         if (class_exists(SftpAdapterLegacy::class)) {
  34.             trigger_deprecation('league/flysystem-bundle''2.2''"league/flysystem-sftp" is deprecated, use "league/flysystem-sftp-v3" instead.');
  35.             $adapterFqcn SftpAdapterLegacy::class;
  36.             $packageRequire 'league/flysystem-sftp';
  37.         }
  38.         return [
  39.             $adapterFqcn => $packageRequire,
  40.         ];
  41.     }
  42.     protected function configureOptions(OptionsResolver $resolver)
  43.     {
  44.         $resolver->setRequired('host');
  45.         $resolver->setAllowedTypes('host''string');
  46.         $resolver->setRequired('username');
  47.         $resolver->setAllowedTypes('username''string');
  48.         $resolver->setDefault('password'null);
  49.         $resolver->setAllowedTypes('password', ['string''null']);
  50.         $resolver->setDefault('port'22);
  51.         $resolver->setAllowedTypes('port''scalar');
  52.         $resolver->setDefault('root''');
  53.         $resolver->setAllowedTypes('root''string');
  54.         $resolver->setDefault('privateKey'null);
  55.         $resolver->setAllowedTypes('privateKey', ['string''null']);
  56.         $resolver->setDefault('passphrase'null);
  57.         $resolver->setAllowedTypes('passphrase', ['string''null']);
  58.         $resolver->setDefault('hostFingerprint'null);
  59.         $resolver->setAllowedTypes('hostFingerprint', ['string''null']);
  60.         $resolver->setDefault('timeout'90);
  61.         $resolver->setAllowedTypes('timeout''scalar');
  62.         $resolver->setDefault('directoryPerm'0744);
  63.         $resolver->setAllowedTypes('directoryPerm''scalar');
  64.         $resolver->setDefault('permPrivate'0700);
  65.         $resolver->setAllowedTypes('permPrivate''scalar');
  66.         $resolver->setDefault('permPublic'0744);
  67.         $resolver->setAllowedTypes('permPublic''scalar');
  68.     }
  69.     protected function configureDefinition(Definition $definition, array $options)
  70.     {
  71.         // Prevent BC
  72.         $adapterFqcn SftpAdapter::class;
  73.         $connectionFqcn SftpConnectionProvider::class;
  74.         if (class_exists(SftpAdapterLegacy::class)) {
  75.             $adapterFqcn SftpAdapterLegacy::class;
  76.             $connectionFqcn SftpConnectionProviderLegacy::class;
  77.         }
  78.         $definition->setClass($adapterFqcn);
  79.         $definition->setArgument(0,
  80.             (new Definition($connectionFqcn))
  81.                 ->setFactory([$connectionFqcn'fromArray'])
  82.                 ->addArgument($options)
  83.                 ->setShared(false)
  84.         );
  85.         $definition->setArgument(1$options['root']);
  86.     }
  87. }