Added progress

This commit is contained in:
2026-06-04 23:23:31 +01:00
parent e63eb790e7
commit 34d8014bac
3 changed files with 38 additions and 2 deletions
+4 -1
View File
@@ -29,7 +29,7 @@ class Archive {
throw new Exception("Error $resp processing tasks");
}
static function upload(File $file, $identifier, $filename, $metadata = []) {
static function upload(File $file, $identifier, $filename, $metadata = [], ?Callable $callback = null) {
$headers = [];
$headers[] = "Authorization: LOW " . Config::get("ARCHIVE_KEY") . ":" . Config::get("ARCHIVE_SECRET");
@@ -58,6 +58,9 @@ class Archive {
$req = new HTTPRequest();
if ($callback) {
$req->setCallback($callback);
}
$resp = $req->put("https://s3.us.archive.org/" . $identifier . "/" . $filename, $file->path(), $headers);
if ($resp == 200) {
+21
View File
@@ -10,6 +10,8 @@ class HTTPRequest {
public $connect_timeout = 2;
public $transfer_timeout = 300;
public $callback = null;
public $ch = null;
public function __construct() {
@@ -29,6 +31,11 @@ class HTTPRequest {
curl_setopt($this->ch, CURLOPT_HEADER, true);
curl_setopt($this->ch, CURLOPT_FOLLOWLOCATION, true);
if ($this->callback) {
curl_setopt($this->ch, CURLOPT_XFERINFOFUNCTION, $this->callback);
curl_setopt($this->ch, CURLOPT_NOPROGRESS, false);
}
$this->status = 0;
$response = curl_exec($this->ch);
@@ -78,6 +85,11 @@ class HTTPRequest {
curl_setopt($this->ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($this->ch, CURLOPT_POSTFIELDS, $data);
if ($this->callback) {
curl_setopt($this->ch, CURLOPT_XFERINFOFUNCTION, $this->callback);
curl_setopt($this->ch, CURLOPT_NOPROGRESS, false);
}
$this->status = 0;
$response = curl_exec($this->ch);
@@ -130,6 +142,11 @@ class HTTPRequest {
curl_setopt($this->ch, CURLOPT_INFILE, $fh);
curl_setopt($this->ch, CURLOPT_INFILESIZE, filesize($file));
if ($this->callback) {
curl_setopt($this->ch, CURLOPT_XFERINFOFUNCTION, $this->callback);
curl_setopt($this->ch, CURLOPT_NOPROGRESS, false);
}
$this->status = 0;
$response = curl_exec($this->ch);
@@ -161,4 +178,8 @@ class HTTPRequest {
return $this->status;
}
public function setCallback(Callable $callback) {
$this->callback = $callback;
}
}