-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCallbackHumanInputHandler.php
More file actions
36 lines (30 loc) · 981 Bytes
/
CallbackHumanInputHandler.php
File metadata and controls
36 lines (30 loc) · 981 Bytes
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
<?php
declare(strict_types=1);
namespace Arcp\Client\Handlers;
use Arcp\Messages\Human\HumanChoiceRequest;
use Arcp\Messages\Human\HumanChoiceResponse;
use Arcp\Messages\Human\HumanInputRequest;
use Arcp\Messages\Human\HumanInputResponse;
/** Closure-backed handler. Ergonomic for tests and small samples. */
final class CallbackHumanInputHandler implements HumanInputHandler
{
/**
* @param \Closure(HumanInputRequest): HumanInputResponse $onInput
* @param \Closure(HumanChoiceRequest): HumanChoiceResponse $onChoice
*/
public function __construct(
private readonly \Closure $onInput,
private readonly \Closure $onChoice,
) {
}
#[\Override]
public function onInputRequest(HumanInputRequest $req): HumanInputResponse
{
return ($this->onInput)($req);
}
#[\Override]
public function onChoiceRequest(HumanChoiceRequest $req): HumanChoiceResponse
{
return ($this->onChoice)($req);
}
}