Immutable value objects and interfaces to abstract http messages.
Important: you must use vimeo/psalm
to make sure you use this library correctly.
use Innmind\Http\Factory\ServerRequestFactory;
use Innmind\TimeContinuum\Clock;
$request = ServerRequestFactory::native(Clock::live())();
use Innmind\Http\{
Response,
Response\StatusCode,
Response\Sender\Native,
ProtocolVersion,
Headers,
Header,
Header\ContentType,
};
use Innmind\Filesystem\File\Content;
use Innmind\TimeContinuum\Clock;
$response = Response::of(
StatusCode::ok,
ProtocolVersion::v11,
Headers::of(
ContentType::of('application', 'json'),
),
Content::ofString('{"some": "data"}'),
);
Native::of(Clock::live()))($response);
will build the following message:
HTTP/1.1 200 OK
Date: Wed, 04 May 2016 14:24:14 +0000
Content-Type : application/json
{"some": "data"}
use Innmind\Http\{
Request,
Method,
Content\Multipart,
Header\ContentType\Boundary,
Headers,
ProtocolVersion,
};
use Innmind\Filesystem\{
File,
File\Content,
};
use Innmind\Url\Url;
$boundary = Boundary::uuid();
$request = Request::of(
Url::of('http://some-server.com/')
Method::post,
ProtocolVersion::v11,
Headers::of($boundary->toHeader()),
Multipart::boundary($boundary)
->with('some[key]', 'some value')
->withFile('some[file]', File::named(
'whatever.txt',
Content::ofString(' can be any file content'),
)),
);