HumHub Documentation (unofficial)

NativeHttpClient
in package
implements HttpClientInterface, LoggerAwareInterface, ResetInterface uses HttpClientTrait, LoggerAwareTrait

FinalYes

A portable implementation of the HttpClientInterface contracts based on PHP stream wrappers.

PHP stream wrappers are able to fetch response bodies concurrently, but each request is opened synchronously.

Tags
author

Nicolas Grekas p@tchwork.com

Table of Contents

Interfaces

HttpClientInterface
Provides flexible methods for requesting HTTP resources synchronously or asynchronously.
LoggerAwareInterface
Describes a logger-aware instance.
ResetInterface
Provides a way to reset an object to its initial state.

Properties

$logger  : LoggerInterface|null
The logger instance.
$CHUNK_SIZE  : mixed
$defaultOptions  : mixed
$emptyDefaults  : mixed
$multi  : NativeClientState

Methods

__construct()  : mixed
request()  : ResponseInterface
Requests an HTTP resource.
reset()  : mixed
setLogger()  : mixed
Sets a logger.
stream()  : ResponseStreamInterface
Yields responses chunk by chunk as they complete.
withOptions()  : self
{@inheritdoc}
configureHeadersAndProxy()  : bool
createRedirectResolver()  : Closure
Handles redirects - the native logic is too buggy to be used.
dechunk()  : string
dnsResolve()  : string
Resolves the IP of the host using the local DNS cache if possible.
getBodyAsString()  : string
getProxy()  : array<string|int, mixed>|null
Loads proxy configuration from the same environment variables as curl when no proxy is explicitly set.
getProxyUrl()  : string|null
jsonEncode()  : string
mergeDefaultOptions()  : array<string|int, mixed>
mergeQueryString()  : string|null
Merges and encodes a query array with a query string.
normalizeBody()  : string|resource|Closure
normalizeHeaders()  : array<string|int, array<string|int, string>>
normalizePeerFingerprint()  : array<string|int, mixed>
parseHostPort()  : array<string|int, mixed>
Extracts the host and the port from the URL.
parseUrl()  : array<string|int, mixed>
Parses a URL and fixes its encoding if needed.
prepareRequest()  : array<string|int, mixed>
Validates and normalizes method, URL and options, and merges them with defaults.
removeDotSegments()  : mixed
Removes dot-segments from a path.
resolveUrl()  : array<string|int, mixed>
Resolves a URL against a base URI.
shouldBuffer()  : bool

Properties

$emptyDefaults

private static mixed $emptyDefaults = self::OPTIONS_DEFAULTS

Methods

__construct()

public __construct([array<string|int, mixed> $defaultOptions = [] ][, int $maxHostConnections = 6 ]) : mixed
Parameters
$defaultOptions : array<string|int, mixed> = []

Default request's options

$maxHostConnections : int = 6

The maximum number of connections to open

Tags
see
HttpClientInterface::OPTIONS_DEFAULTS

for available options

stream()

Yields responses chunk by chunk as they complete.

public stream(mixed $responses[, float|null $timeout = null ]) : ResponseStreamInterface
Parameters
$responses : mixed

One or more responses created by the current HTTP client

$timeout : float|null = null

The idle timeout before yielding timeout chunks

Return values
ResponseStreamInterface

withOptions()

{@inheritdoc}

public withOptions(array<string|int, mixed> $options) : self
Parameters
$options : array<string|int, mixed>
Return values
self

configureHeadersAndProxy()

private static configureHeadersAndProxy(mixed $context, string $host, array<string|int, mixed> $requestHeaders, array<string|int, mixed>|null $proxy, bool $isSsl) : bool
Parameters
$context : mixed
$host : string
$requestHeaders : array<string|int, mixed>
$proxy : array<string|int, mixed>|null
$isSsl : bool
Return values
bool

createRedirectResolver()

Handles redirects - the native logic is too buggy to be used.

private static createRedirectResolver(array<string|int, mixed> $options, string $host, array<string|int, mixed>|null $proxy, array<string|int, mixed> &$info, Closure|null $onProgress) : Closure
Parameters
$options : array<string|int, mixed>
$host : string
$proxy : array<string|int, mixed>|null
$info : array<string|int, mixed>
$onProgress : Closure|null
Return values
Closure

dechunk()

private static dechunk(string $body) : string
Parameters
$body : string
Return values
string

dnsResolve()

Resolves the IP of the host using the local DNS cache if possible.

private static dnsResolve(mixed $host, NativeClientState $multi, array<string|int, mixed> &$info, Closure|null $onProgress) : string
Parameters
$host : mixed
$multi : NativeClientState
$info : array<string|int, mixed>
$onProgress : Closure|null
Return values
string

getBodyAsString()

private static getBodyAsString(mixed $body) : string
Parameters
$body : mixed
Return values
string

getProxy()

Loads proxy configuration from the same environment variables as curl when no proxy is explicitly set.

private static getProxy(string|null $proxy, array<string|int, mixed> $url, string|null $noProxy) : array<string|int, mixed>|null
Parameters
$proxy : string|null
$url : array<string|int, mixed>
$noProxy : string|null
Return values
array<string|int, mixed>|null

getProxyUrl()

private static getProxyUrl(string|null $proxy, array<string|int, mixed> $url) : string|null
Parameters
$proxy : string|null
$url : array<string|int, mixed>
Return values
string|null

jsonEncode()

private static jsonEncode(mixed $value[, int|null $flags = null ][, int $maxDepth = 512 ]) : string
Parameters
$value : mixed
$flags : int|null = null
$maxDepth : int = 512
Tags
throws
InvalidArgumentException

When the value cannot be json-encoded

Return values
string

mergeDefaultOptions()

private static mergeDefaultOptions(array<string|int, mixed> $options, array<string|int, mixed> $defaultOptions[, bool $allowExtraOptions = false ]) : array<string|int, mixed>
Parameters
$options : array<string|int, mixed>
$defaultOptions : array<string|int, mixed>
$allowExtraOptions : bool = false
Tags
throws
InvalidArgumentException

When an invalid option is found

Return values
array<string|int, mixed>

mergeQueryString()

Merges and encodes a query array with a query string.

private static mergeQueryString(string|null $queryString, array<string|int, mixed> $queryArray, bool $replace) : string|null
Parameters
$queryString : string|null
$queryArray : array<string|int, mixed>
$replace : bool
Tags
throws
InvalidArgumentException

When an invalid query-string value is passed

Return values
string|null

normalizeBody()

private static normalizeBody(array<string|int, mixed>|string|resource|Traversable|Closure $body) : string|resource|Closure
Parameters
$body : array<string|int, mixed>|string|resource|Traversable|Closure
Tags
throws
InvalidArgumentException

When an invalid body is passed

Return values
string|resource|Closure

normalizeHeaders()

private static normalizeHeaders(array<string|int, mixed> $headers) : array<string|int, array<string|int, string>>
Parameters
$headers : array<string|int, mixed>
Tags
throws
InvalidArgumentException

When an invalid header is found

Return values
array<string|int, array<string|int, string>>

normalizePeerFingerprint()

private static normalizePeerFingerprint(string|array<string|int, string> $fingerprint) : array<string|int, mixed>
Parameters
$fingerprint : string|array<string|int, string>
Tags
throws
InvalidArgumentException

When an invalid fingerprint is passed

Return values
array<string|int, mixed>

parseHostPort()

Extracts the host and the port from the URL.

private static parseHostPort(array<string|int, mixed> $url, array<string|int, mixed> &$info) : array<string|int, mixed>
Parameters
$url : array<string|int, mixed>
$info : array<string|int, mixed>
Return values
array<string|int, mixed>

parseUrl()

Parses a URL and fixes its encoding if needed.

private static parseUrl(string $url[, array<string|int, mixed> $query = [] ][, array<string|int, mixed> $allowedSchemes = ['http' => 80, 'https' => 443] ]) : array<string|int, mixed>
Parameters
$url : string
$query : array<string|int, mixed> = []
$allowedSchemes : array<string|int, mixed> = ['http' => 80, 'https' => 443]
Tags
throws
InvalidArgumentException

When an invalid URL is passed

Return values
array<string|int, mixed>

prepareRequest()

Validates and normalizes method, URL and options, and merges them with defaults.

private static prepareRequest(string|null $method, string|null $url, array<string|int, mixed> $options[, array<string|int, mixed> $defaultOptions = [] ][, bool $allowExtraOptions = false ]) : array<string|int, mixed>
Parameters
$method : string|null
$url : string|null
$options : array<string|int, mixed>
$defaultOptions : array<string|int, mixed> = []
$allowExtraOptions : bool = false
Tags
throws
InvalidArgumentException

When a not-supported option is found

Return values
array<string|int, mixed>

resolveUrl()

Resolves a URL against a base URI.

private static resolveUrl(array<string|int, mixed> $url, array<string|int, mixed>|null $base[, array<string|int, mixed> $queryDefaults = [] ]) : array<string|int, mixed>
Parameters
$url : array<string|int, mixed>
$base : array<string|int, mixed>|null
$queryDefaults : array<string|int, mixed> = []
Tags
see
https://tools.ietf.org/html/rfc3986#section-5.2.2
throws
InvalidArgumentException

When an invalid URL is passed

Return values
array<string|int, mixed>

shouldBuffer()

private static shouldBuffer(array<string|int, mixed> $headers) : bool
Parameters
$headers : array<string|int, mixed>
Return values
bool

        
On this page

Search results