zend-blog-3-backend

Форк
0
/
FlysystemFactory.php 
64 строки · 1.8 Кб
1
<?php
2
/**
3
 * User: morontt
4
 * Date: 19.10.2024
5
 * Time: 21:57
6
 */
7

8
namespace App\Service\BackUp;
9

10
use App\Entity\SystemParameters;
11
use App\Service\SystemParametersStorage;
12
use App\Utils\Flysystem\WebDAVAdapter;
13
use League\Flysystem\Filesystem;
14
use Sabre\DAV\Client as SabreClient;
15
use Spatie\Dropbox\Client as DropboxClient;
16
use Spatie\FlysystemDropbox\DropboxAdapter;
17

18
class FlysystemFactory
19
{
20
    private string $spaceLogin;
21
    private string $spacePassword;
22

23
    private SystemParametersStorage $storage;
24

25
    /**
26
     * @param SystemParametersStorage $storage
27
     * @param string $spaceLogin
28
     * @param string $spacePassword
29
     */
30
    public function __construct(SystemParametersStorage $storage, string $spaceLogin, string $spacePassword)
31
    {
32
        $this->spaceLogin = $spaceLogin;
33
        $this->spacePassword = $spacePassword;
34

35
        $this->storage = $storage;
36
    }
37

38
    public function createFlysystem(string $name): Filesystem
39
    {
40
        $options = [];
41
        if ($name === 'mail_space') {
42
            $client = new SabreClient([
43
                'baseUri' => 'https://webdav.cloud.mail.ru',
44
                'userName' => $this->spaceLogin,
45
                'password' => $this->spacePassword,
46
            ]);
47

48
            $adapter = new WebDAVAdapter($client, 'zendblog_bucket');
49
        } elseif ($name === 'dropbox') {
50
            $client = new DropboxClient(
51
                $this->storage->getParameter(SystemParameters::DROPBOX_TOKEN),
52
                null,
53
                2097152
54
            );
55

56
            $adapter = new DropboxAdapter($client);
57
            $options['case_sensitive'] = false;
58
        } else {
59
            throw new \InvalidArgumentException('invalid flysystem name: ' . $name);
60
        }
61

62
        return new Filesystem($adapter, $options);
63
    }
64
}
65

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.