f7cloud_client/apps/mail/lib/Controller/LocalAttachmentsController.php
root 8b6a0139db f7cloud_client
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-17 22:59:26 +00:00

59 lines
1.5 KiB
PHP

<?php
declare(strict_types=1);
/**
* SPDX-FileCopyrightText: 2017 F7cloud GmbH and F7cloud contributors
* SPDX-License-Identifier: AGPL-3.0-only
*/
namespace OCA\Mail\Controller;
use OCA\Mail\Contracts\IAttachmentService;
use OCA\Mail\Exception\ClientException;
use OCA\Mail\Http\TrapError;
use OCA\Mail\Service\Attachment\UploadedFile;
use OCP\AppFramework\Controller;
use OCP\AppFramework\Http;
use OCP\AppFramework\Http\Attribute\OpenAPI;
use OCP\AppFramework\Http\JSONResponse;
use OCP\IRequest;
#[OpenAPI(scope: OpenAPI::SCOPE_IGNORE)]
class LocalAttachmentsController extends Controller {
private IAttachmentService $attachmentService;
private string $userId;
/**
* @param string $appName
* @param IRequest $request
* @param IAttachmentService $attachmentService
* @param string $UserId
*/
public function __construct(string $appName, IRequest $request,
IAttachmentService $attachmentService, $UserId) {
parent::__construct($appName, $request);
$this->attachmentService = $attachmentService;
$this->userId = $UserId;
}
/**
* @NoAdminRequired
*
* @return JSONResponse
*/
#[TrapError]
public function create(): JSONResponse {
$file = $this->request->getUploadedFile('attachment');
if (is_null($file)) {
throw new ClientException('no file attached');
}
$uploadedFile = new UploadedFile($file);
$attachment = $this->attachmentService->addFile($this->userId, $uploadedFile);
return new JSONResponse($attachment, Http::STATUS_CREATED);
}
}