forked from phpro/http-tools
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathResourceStreamEncoder.php
More file actions
36 lines (30 loc) · 928 Bytes
/
ResourceStreamEncoder.php
File metadata and controls
36 lines (30 loc) · 928 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 Phpro\HttpTools\Encoding\ResourceStream;
use Http\Discovery\Psr17FactoryDiscovery;
use Phpro\HttpTools\Encoding\EncoderInterface;
use Phpro\ResourceStream\ResourceStream;
use Psr\Http\Message\RequestInterface;
use Psr\Http\Message\StreamFactoryInterface;
/**
* @implements EncoderInterface<ResourceStream<resource>>
*/
final class ResourceStreamEncoder implements EncoderInterface
{
public function __construct(
private StreamFactoryInterface $streamFactory,
) {
}
public static function createWithAutodiscoveredPsrFactories(): self
{
return new self(
Psr17FactoryDiscovery::findStreamFactory(),
);
}
public function __invoke(RequestInterface $request, $data): RequestInterface
{
return $request->withBody(
$this->streamFactory->createStreamFromResource($data->unwrap()),
);
}
}