zend-blog-3-backend
64 строки · 1.8 Кб
1<?php
2/**
3* User: morontt
4* Date: 19.10.2024
5* Time: 21:57
6*/
7
8namespace App\Service\BackUp;
9
10use App\Entity\SystemParameters;
11use App\Service\SystemParametersStorage;
12use App\Utils\Flysystem\WebDAVAdapter;
13use League\Flysystem\Filesystem;
14use Sabre\DAV\Client as SabreClient;
15use Spatie\Dropbox\Client as DropboxClient;
16use Spatie\FlysystemDropbox\DropboxAdapter;
17
18class FlysystemFactory
19{
20private string $spaceLogin;
21private string $spacePassword;
22
23private SystemParametersStorage $storage;
24
25/**
26* @param SystemParametersStorage $storage
27* @param string $spaceLogin
28* @param string $spacePassword
29*/
30public function __construct(SystemParametersStorage $storage, string $spaceLogin, string $spacePassword)
31{
32$this->spaceLogin = $spaceLogin;
33$this->spacePassword = $spacePassword;
34
35$this->storage = $storage;
36}
37
38public function createFlysystem(string $name): Filesystem
39{
40$options = [];
41if ($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),
52null,
532097152
54);
55
56$adapter = new DropboxAdapter($client);
57$options['case_sensitive'] = false;
58} else {
59throw new \InvalidArgumentException('invalid flysystem name: ' . $name);
60}
61
62return new Filesystem($adapter, $options);
63}
64}
65