forked from sergix44/gradio-client-php
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMessageResolver.php
More file actions
37 lines (33 loc) · 1.4 KB
/
MessageResolver.php
File metadata and controls
37 lines (33 loc) · 1.4 KB
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
<?php
namespace SergiX44\Gradio\DTO\Resolvers;
use InvalidArgumentException;
use SergiX44\Gradio\DTO\Messages\Estimation;
use SergiX44\Gradio\DTO\Messages\Log;
use SergiX44\Gradio\DTO\Messages\Message;
use SergiX44\Gradio\DTO\Messages\ProcessCompleted;
use SergiX44\Gradio\DTO\Messages\ProcessGenerating;
use SergiX44\Gradio\DTO\Messages\ProcessStarts;
use SergiX44\Gradio\DTO\Messages\QueueFull;
use SergiX44\Gradio\DTO\Messages\SendData;
use SergiX44\Gradio\DTO\Messages\SendHash;
use SergiX44\Hydrator\Annotation\ConcreteResolver;
#[\Attribute] class MessageResolver extends ConcreteResolver
{
public function concreteFor(array $data, array $all): ?string
{
$msg = $data['msg'] ?? throw new InvalidArgumentException('Missing msg key');
return match ($msg) {
MessageType::SEND_HASH->value => SendHash::class,
MessageType::SEND_DATA->value => SendData::class,
MessageType::QUEUE_FULL->value => QueueFull::class,
MessageType::QUEUE_ESTIMATION->value => Estimation::class,
MessageType::PROCESS_STARTS->value => ProcessStarts::class,
MessageType::PROCESS_GENERATING->value => ProcessGenerating::class,
MessageType::PROCESS_COMPLETED->value => ProcessCompleted::class,
MessageType::LOG->value => Log::class,
default => (new class extends Message
{
})::class,
};
}
}