# Contributte PSR-7

PSR-7 is HTTP message interface. It's very useful interface especially for middleware / relay pattern. Read more on official PHP-FIG (opens new window) website.

This package is based on great guzzle/psr7 (opens new window) implementation. Only adds some extra features for convenient usage in Nette Framework (opens new window).

# Content

# Setup

composer require contributte/psr7-http-message
1

# Psr7Request

The easiest way is to create request using Psr7RequestFactory.

use Contributte\Psr7\Psr7RequestFactory;

$psr7 = Psr7RequestFactory::fromGlobal();
1
2
3

In Nette application we can use existing Nette\Http\Request.

use Contributte\Psr7\Psr7RequestFactory;

$httpRequest = new Request();
$psr7 = Psr7RequestFactory::fromNette($httpRequest);
1
2
3
4

You can fill httpRequest (opens new window) and applicationRequest (opens new window) over methods:

use Contributte\Psr7\Psr7RequestFactory;

$psr7 = Psr7RequestFactory::fromGlobal();
$psr7 = $psr7->withHttpRequest($httpRequest);
$psr7 = $psr7->withApplicationRequest($applicationRequest);
1
2
3
4
5

Additional methods (against PSR7 interface):

  • of(RequestInterface $request): self
  • getContents(): mixed
  • getContentsCopy(): mixed
  • getJsonBody(bool $associative = true): mixed
  • getJsonBodyCopy(bool $associative = true): mixed
  • withNewUri(string $uri): self - returns clone with given url

# Psr7ServerRequest

Additional methods (against PSR7 interface):

  • normalizeNetteFiles(Nette\Http\FileUpload[] $files): Psr7UploadedFile[]
  • of(ServerRequestInterface $request): self
  • fromGlobals(): self
  • withAttributes(array $attributes): self
  • hasQueryParam(string $name): bool
  • getQueryParam(string $name, mixed $default = null): mixed

# Psr7Response

The easiest way is to create request using Psr7ResponseFactory.

use Contributte\Psr7\Psr7ResponseFactory;

$psr7 = Psr7ResponseFactory::fromGlobal();
1
2
3

In Nette application we can use existing Nette\Http\Response.

use Contributte\Psr7\Psr7ResponseFactory;

$httpResponse = new Response();
$psr7 = Psr7ResponseFactory::fromNette($httpResponse);
1
2
3
4

You can fill httpResponse (opens new window) and applicationResponse (opens new window) over methods:

use Contributte\Psr7\Psr7ResponseFactory;

$psr7 = Psr7ResponseFactory::fromGlobal();
$psr7 = $psr7->withHttpResponse($httpResponse);
$psr7 = $psr7->withApplicationResponse($applicationResponse);
1
2
3
4
5

Additional methods (against PSR7 interface):

  • of(ResponseInterface $response): self
  • fromGlobals(): self
  • appendBody(mixed $body): self
  • rewindBody(): self
  • writeBody(mixed $body): self
  • writeJsonBody(array $data): self
  • writeJsonObject(JsonSerializable $object): self
  • getJsonBody(bool $associative = true): mixed
  • getContents(bool $rewind = true): mixed
  • withHeaders(array $headers): self
  • getHttpResponse(): ?Nette\Http\IResponse
  • withHttpResponse(Nette\Http\IResponse $response)
  • hasHttpResponse(): bool
  • getApplicationResponse(): ?Nette\Application\IResponse
  • withApplicationResponse(Nette\Application\IResponse $response)
  • hasApplicationResponse(): bool
  • send(): void
  • sendHeaders(): void
  • sendBody(): void

# API

MessageInterface

  • getProtocolVersion: string
  • withProtocolVersion(string $version): static
  • getHeaders(): array
  • hasHeader(string $name): bool
  • getHeader(string $name): string[]
  • getHeaderLine(string $name): string
  • withHeader(string $name, string|string[] $value): static
  • withAddedHeader(string $name, string|string[] $value): static
  • withoutHeader(string $name): static
  • getBody(): StreamInterface
  • withBody(StreamInterface $body): static

RequestInterface << MessageInterface

  • getRequestTarget(): string
  • withRequestTarget($requestTarget): static
  • getMethod(): string
  • withMethod(string $method): static
  • getUri(): UriInterface
  • withUri(UriInterface $uri, bool $preserveHost = false): static

ServerRequestInterface << RequestInterface

  • getServerParams(): array
  • getCookieParams(): array
  • withCookieParams(array $cookies): static
  • getQueryParams(): array
  • withQueryParams(array $query): static
  • getUploadedFiles(): UploadedFileInterface[]
  • withUploadedFiles(array $uploadedFiles): static
  • getParsedBody(): mixed
  • withParsedBody($data): static
  • getAttributes(): mixed[]
  • getAttribute(string $name, $default = null): mixed
  • withAttribute(string $name, $value): static
  • withoutAttribute(string $name): static

ResponseInterface << MessageInterface

  • getStatusCode(): int
  • withStatus(int $code, string $reasonPhrase = ''): static
  • getReasonPhrase(): string

StreamInterface

  • __toString(): string
  • close(): void
  • detach(): ?resource
  • getSize(): ?int
  • tell(): int
  • eof(): bool
  • isSeekable(): bool
  • seek(int $offset, int $whence = SEEK_SET): void
  • rewind(): void
  • isWritable(): bool
  • write($string): void
  • isReadable(): bool
  • read($length): string
  • getContents(): string
  • getMetadata(?string $key = null): mixed

UriInterface

  • getScheme(): string
  • withScheme(string $scheme): static
  • getAuthority(): string
  • getUserInfo(): string
  • withUserInfo(string $user, ?string $password = null): static
  • getHost(): string
  • withHost(string $host): static
  • getPort(): ?int
  • withPort(?int $port): static
  • getPath(): string
  • withPath(string $path): static
  • getQuery(): string
  • withQuery(string $query): static
  • getFragment(): string
  • withFragment(string $fragment): static
  • __toString(): string

UploadedFileInterface

  • getStream(): StreamInterface
  • moveTo($targetPath): void
  • getSize(): ?int
  • getError(): int
  • getClientFilename(): ?string
  • getClientMediaType(): ?string