-
-
Notifications
You must be signed in to change notification settings - Fork 20
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #192 from buggregator/feature/185
Adds embeddings support
- Loading branch information
Showing
9 changed files
with
172 additions
and
23 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -37,4 +37,3 @@ public function __invoke(EnvironmentInterface $env, string|int $project): Respon | |
); | ||
} | ||
} | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
88 changes: 88 additions & 0 deletions
88
app/modules/Smtp/Interfaces/Http/Controllers/Attachments/PreviewAction.php
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,88 @@ | ||
<?php | ||
|
||
declare(strict_types=1); | ||
|
||
namespace Modules\Smtp\Interfaces\Http\Controllers\Attachments; | ||
|
||
use App\Application\Commands\FindEventByUuid; | ||
use App\Application\Commands\FindSmtpAttachmentByUuid; | ||
use App\Application\Domain\ValueObjects\Uuid; | ||
use App\Application\HTTP\Response\ErrorResource; | ||
use Modules\Smtp\Domain\AttachmentStorageInterface; | ||
use Nyholm\Psr7\Stream; | ||
use Psr\Http\Message\ResponseInterface; | ||
use Spiral\Cqrs\QueryBusInterface; | ||
use Spiral\Http\Exception\ClientException\ForbiddenException; | ||
use Spiral\Http\ResponseWrapper; | ||
use Spiral\Router\Annotation\Route; | ||
use OpenApi\Attributes as OA; | ||
|
||
#[OA\Get( | ||
path: '/api/smtp/{eventUuid}/attachments/preview/{uuid}', | ||
description: 'Preview an attachment by UUID', | ||
tags: ['Smtp'], | ||
parameters: [ | ||
new OA\PathParameter( | ||
name: 'eventUuid', | ||
description: 'Event UUID', | ||
required: true, | ||
schema: new OA\Schema(type: 'string', format: 'uuid'), | ||
), | ||
new OA\PathParameter( | ||
name: 'uuid', | ||
description: 'Attachment UUID', | ||
required: true, | ||
schema: new OA\Schema(type: 'string', format: 'uuid'), | ||
), | ||
], | ||
responses: [ | ||
new OA\Response( | ||
response: 200, | ||
description: 'Success', | ||
headers: [ | ||
new OA\Header(header: 'Content-Type', schema: new OA\Schema(type: 'string', format: 'binary')), | ||
], | ||
), | ||
new OA\Response( | ||
response: 404, | ||
description: 'Not found', | ||
content: new OA\JsonContent( | ||
ref: ErrorResource::class, | ||
), | ||
), | ||
new OA\Response( | ||
response: 403, | ||
description: 'Access denied.', | ||
content: new OA\JsonContent( | ||
ref: ErrorResource::class, | ||
), | ||
), | ||
], | ||
)] | ||
final readonly class PreviewAction | ||
{ | ||
public function __construct( | ||
private AttachmentStorageInterface $storage, | ||
) {} | ||
|
||
#[Route(route: 'smtp/<eventUuid>/attachments/preview/<uuid>', name: 'smtp.attachments.preview', group: 'api_guest')] | ||
public function __invoke( | ||
QueryBusInterface $bus, | ||
ResponseWrapper $responseWrapper, | ||
Uuid $eventUuid, | ||
Uuid $uuid, | ||
): ResponseInterface { | ||
$event = $bus->ask(new FindEventByUuid($eventUuid)); | ||
$attachment = $bus->ask(new FindSmtpAttachmentByUuid($uuid)); | ||
|
||
if (!$attachment->getEventUuid()->equals($event->getUuid())) { | ||
throw new ForbiddenException('Access denied.'); | ||
} | ||
|
||
$stream = Stream::create($this->storage->getContent($attachment->getPath())); | ||
|
||
return $responseWrapper->create(200) | ||
->withHeader('Content-Type', $attachment->getMime()) | ||
->withBody($stream); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters