{ "translations": { "today" : "今日", "yesterday" : "昨日", "last month" : "前一月", "_%n month ago_::_%n months ago_" : ["%n 月前"], "last year" : "上年", "_%n hour ago_::_%n hours ago_" : ["%n 小時前"], "_%n minute ago_::_%n minutes ago_" : ["%n 分鐘前"], "seconds ago" : "秒前", "__language_name__" : "繁體中文(香港)", "Help" : "幫助", "Apps" : "軟件", "Settings" : "設定", "Log out" : "登出", "Users" : "用戶", "Sunday" : "星期日", "Monday" : "星期一", "Tuesday" : "星期二", "Wednesday" : "星期三", "Thursday" : "星期四", "Friday" : "星期五", "Saturday" : "星期六", "January" : "一月", "February" : "二月", "March" : "三月", "April" : "四月", "May" : "五月", "June" : "六月", "July" : "七月", "August" : "八月", "September" : "九月", "October" : "十月", "November" : "十一月", "December" : "十二月", "Create" : "新增", "Delete" : "刪除", "Share" : "分享", "Sharing" : "分享", "Unlimited" : "無限" },"pluralForm" :"nplurals=1; plural=0;" }='3rdparty/stable30/sabre-dav-itip-broker'>3rdparty/stable30/sabre-dav-itip-broker Nextcloud server, a safe home for all your data: https://github.com/nextcloud/serverwww-data
summaryrefslogtreecommitdiffstats
path: root/apps/dav/bin/chunkperf.php
blob: a8652654bca07fa835b6136449f444f2f7632f41 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
<?php
/**
 * @copyright Copyright (c) 2016, ownCloud, Inc.
 *
 * @author Christoph Wurst <christoph@winzerhof-wurst.at>
 * @author Thomas Müller <thomas.mueller@tmit.eu>
 *
 * @license AGPL-3.0
 *
 * This code is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Affero General Public License, version 3,
 * as published by the Free Software Foundation.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 * GNU Affero General Public License for more details.
 *
 * You should have received a copy of the GNU Affero General Public License, version 3,
 * along with this program. If not, see <http://www.gnu.org/licenses/>
 *
 */
require '../../../../3rdparty/autoload.php';

if ($argc !== 6) {
	echo "Invalid number of arguments" . PHP_EOL;
	exit;
}

/**
 * @param \Sabre\DAV\Client $client
 * @param $uploadUrl
 * @return mixed
 */
function request($client, $method, $uploadUrl, $data = null, $headers = []) {
	echo "$method $uploadUrl ... ";
	$t0 = microtime(true);
	$result = $client->request($method, $uploadUrl, $data, $headers);
	$t1 = microtime(true);
	echo $result['statusCode'] . " - " . ($t1 - $t0) . ' seconds' . PHP_EOL;
	if (!in_array($result['statusCode'],  [200, 201])) {
		echo $result['body'] . PHP_EOL;
	}
	return $result;
}

$baseUri = $argv[1];
$userName = $argv[2];
$password = $argv[3];
$file = $argv[4];
$chunkSize = $argv[5] * 1024 * 1024;

$client = new \Sabre\DAV\Client([
	'baseUri' => $baseUri,
	'userName' => $userName,
	'password' => $password
]);

$transfer = uniqid('transfer', true);
$uploadUrl = "$baseUri/uploads/$userName/$transfer";

request($client, 'MKCOL', $uploadUrl);

$size = filesize($file);
$stream = fopen($file, 'r');

$index = 0;
while (!feof($stream)) {
	request($client, 'PUT', "$uploadUrl/$index", fread($stream, $chunkSize));
	$index++;
}

$destination = pathinfo($file, PATHINFO_BASENAME);
//echo "Moving $uploadUrl/.file to it's final destination $baseUri/files/$userName/$destination" . PHP_EOL;
request($client, 'MOVE', "$uploadUrl/.file", null, [
	'Destination' => "$baseUri/files/$userName/$destination",
	'OC-Total-Length' => filesize($file),
	'X-OC-MTime' => filemtime($file)
]);