Files
nextcloud-app-api/lib/ProxyResponse.php
Oleksander Piskun c207a7a7b1 chore(ci): update to Psalm 6
Signed-off-by: Oleksander Piskun <oleksandr2088@icloud.com>
2025-06-05 15:50:14 +03:00

44 lines
1.2 KiB
PHP

<?php
declare(strict_types=1);
/**
* SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
namespace OCA\AppAPI;
use OCP\AppFramework\Http as HttpAlias;
use OCP\AppFramework\Http\ICallbackResponse;
use OCP\AppFramework\Http\IOutput;
use OCP\AppFramework\Http\Response;
/** @template-extends Response<HttpAlias::STATUS_*, array<string, mixed>> */
class ProxyResponse extends Response implements ICallbackResponse {
private mixed $data;
public function __construct(int $status = HttpAlias::STATUS_OK,
array $headers = [], mixed $data = null, int $lastModified = 0) {
parent::__construct();
$this->data = $data;
$this->setStatus($status);
$this->setHeaders(array_merge($this->getHeaders(), $headers));
if ($lastModified !== 0) {
$lastModifiedDate = new \DateTime();
$lastModifiedDate->setTimestamp($lastModified);
$this->setLastModified($lastModifiedDate);
}
}
public function callback(IOutput $output): void {
if ($output->getHttpResponseCode() !== HttpAlias::STATUS_NOT_MODIFIED) {
if (is_resource($this->data)) {
fpassthru($this->data);
} else {
print $this->data;
}
}
}
}