PluginProbe ʕ •ᴥ•ʔ
JetBackup – Backup, Restore & Migrate / 3.1.22.4
JetBackup – Backup, Restore & Migrate v3.1.22.4
3.1.22.4 3.1.22.3 1.4.3 1.4.4 1.4.5 1.4.6 1.4.7 1.4.8 1.4.8.1 1.4.9 1.5.0 1.5.1 1.5.1.1 1.5.2 1.5.3 1.5.4 1.5.5 1.5.6 1.5.7 1.5.8 1.6.0 1.6.10 1.6.11 1.6.12 1.6.13 1.6.15 1.6.5.1 1.6.8.8 1.6.9 1.6.9.1 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7.5 2.0.8.7 2.0.9.11 2.0.9.14 2.0.9.15 2.0.9.6 2.0.9.7 2.0.9.9 3.1.10.7 3.1.11.1 3.1.12.3 3.1.13.4 3.1.14.17 3.1.15.4 3.1.16.1 3.1.17.5 3.1.18.10 3.1.18.8 3.1.18.9 3.1.19.8 3.1.20.3 3.1.21.3 3.1.7.9 3.1.9.2 trunk 1.1.90 1.1.91 1.2.0 1.2.5 1.2.6 1.2.7 1.2.8 1.2.9 1.3.0 1.3.1 1.3.2 1.3.3 1.3.4 1.3.6 1.3.7 1.3.8 1.3.9 1.4.0 1.4.1 1.4.2
backup / src / JetBackup / Destination / Vendors / GoogleDrive / ChunkedUpload.php
backup / src / JetBackup / Destination / Vendors / GoogleDrive Last commit date
Client 1 year ago .htaccess 1 year ago Cache.php 1 year ago ChunkedDownload.php 1 year ago ChunkedUpload.php 1 year ago DirIterator.php 1 year ago GoogleDrive.php 1 year ago index.html 1 year ago web.config 1 year ago
ChunkedUpload.php
85 lines
1 <?php
2
3 namespace JetBackup\Destination\Vendors\GoogleDrive;
4
5 use JetBackup\Destination\Integration\DestinationChunkedUpload;
6 use JetBackup\Destination\Vendors\GoogleDrive\Client\Client;
7 use JetBackup\Exception\IOException;
8 use JetBackup\Web\File\FileChunk;
9 use JetBackup\Web\File\FileException;
10 use JetBackup\Web\File\FileStream;
11
12 if (!defined( '__JETBACKUP__')) die('Direct access is not allowed');
13
14 class ChunkedUpload implements DestinationChunkedUpload {
15
16 private GoogleDrive $_client;
17 private FileStream $_source;
18 private string $_destination;
19 private string $_parent;
20 private object $_data;
21
22 /**
23 * @throws FileException
24 */
25 public function __construct(GoogleDrive $client, $source, $destination, $parent) {
26 $this->_client = $client;
27 $this->_source = new FileStream($source);
28 $this->_destination = $destination;
29 $this->_parent = $parent;
30 $this->_data = new \stdClass();
31 }
32
33 /**
34 * @return object|mixed
35 * @throws IOException
36 */
37 public function prepare():object {
38 $this->_client->getLogController()->logDebug("[ChunkedUpload prepare]");
39 return $this->_client->_retries(function() {
40 $output = new \stdClass();
41 $output->upload_url = $this->_client->getClient()->getUploadURL($this->_source, $this->_destination, $this->_parent);
42 return $output;
43 }, "Failed fetching upload URL");
44 }
45
46 public function setData(object $data):void {
47 $this->_data = $data;
48 }
49
50 /**
51 * @return int
52 * @throws IOException
53 */
54 public function getOffset():int {
55 if(!isset($this->_data->upload_url)) throw new IOException("No upload url was found");
56
57 return $this->_client->_retries(function() {
58 return $this->_client->getClient()->getUploadOffset($this->_data->upload_url);
59 }, "Failed fetching upload offset");
60 }
61
62 /**
63 * @return int|null
64 */
65 public function getChunkSize():?int { return null; }
66
67 /**
68 * @param FileChunk $chunk
69 *
70 * @return void
71 * @throws IOException
72 */
73 public function upload(FileChunk $chunk):void {
74 if(!isset($this->_data->upload_url)) throw new IOException("No upload url was found");
75
76 $this->_client->_retries(function() use($chunk) {
77 $this->_client->getClient()->uploadChunk($chunk, $this->_data->upload_url);
78 }, "Failed uploading chunk");
79 }
80
81 /**
82 * @return void
83 */
84 public function finalize():void {}
85 }