MediaWiki  1.29.1
MWHttpRequest Class Reference

This wrapper class will call out to curl (if available) or fallback to regular PHP if necessary for handling internal HTTP requests. More...

Inheritance diagram for MWHttpRequest:
Collaboration diagram for MWHttpRequest:

Public Member Functions

 canFollowRedirects ()
 Returns true if the backend can follow redirects. More...
 
 execute ()
 Take care of whatever is necessary to perform the URI request. More...
 
 getContent ()
 Get the body, or content, of the response to the request. More...
 
 getCookieJar ()
 Returns the cookie jar in use. More...
 
 getFinalUrl ()
 Returns the final URL after all redirections. More...
 
 getResponseHeader ( $header)
 Returns the value of the given response header. More...
 
 getResponseHeaders ()
 Returns an associative array of response headers after the request has been executed. More...
 
 getStatus ()
 Get the integer value of the HTTP status code (e.g. More...
 
 isRedirect ()
 Returns true if the last status code was a redirect. More...
 
 read ( $fh, $content)
 A generic callback to read the body of the response from a remote server. More...
 
 setCallback ( $callback)
 Set a read callback to accept data read from the HTTP request. More...
 
 setCookie ( $name, $value, $attr=[])
 Sets a cookie. More...
 
 setCookieJar ( $jar)
 Tells the MWHttpRequest object to use this pre-loaded CookieJar. More...
 
 setData ( $args)
 Set the parameters of the request. More...
 
 setHeader ( $name, $value)
 Set an arbitrary header. More...
 
 setLogger (LoggerInterface $logger)
 
 setOriginalRequest ( $originalRequest)
 Set information about the original request. More...
 
 setUserAgent ( $UA)
 Set the user agent. More...
 

Static Public Member Functions

static canMakeRequests ()
 Simple function to test if we can make any sort of requests at all, using cURL or fopen() More...
 
static factory ( $url, $options=null, $caller=__METHOD__)
 Generate a new request object. More...
 

Public Attributes

 $logger
 
const SUPPORTS_FILE_POSTS = false
 

Protected Member Functions

 __construct ( $url, $options=[], $caller=__METHOD__, $profiler=null)
 
 getHeaderList ()
 Get an array of the headers. More...
 
 parseCookies ()
 Parse the cookies in the response headers and store them in the cookie jar. More...
 
 parseHeader ()
 Parses the headers, including the HTTP status code and any Set-Cookie headers. More...
 
 prepare ()
 
 proxySetup ()
 Take care of setting up the proxy (do nothing if "noProxy" is set) More...
 
 setStatus ()
 Sets HTTPRequest status member to a fatal value with the error message if the returned integer value of the status code was not successful (< 300) or a redirect (>=300 and < 400). More...
 

Protected Attributes

 $caInfo = null
 
callable $callback
 
 $connectTimeout
 
 $content
 
CookieJar $cookieJar
 
 $followRedirects = false
 
 $headerList = []
 
 $headersOnly = null
 
 $maxRedirects = 5
 
 $method = "GET"
 
 $noProxy = false
 
 $parsedUrl
 
 $postData = null
 
string $profileName
 
Profiler $profiler
 
 $proxy = null
 
 $reqHeaders = []
 
 $respHeaders = []
 
 $respStatus = "200 Ok"
 
 $respVersion = "0.9"
 
 $sslVerifyCert = true
 
 $sslVerifyHost = true
 
StatusValue $status
 
 $timeout = 'default'
 
 $url
 
 LoggerInterface
 

Static Private Member Functions

static isLocalURL ( $url)
 Check if the URL can be served by localhost. More...
 

Detailed Description

This wrapper class will call out to curl (if available) or fallback to regular PHP if necessary for handling internal HTTP requests.

Renamed from HttpRequest to MWHttpRequest to avoid conflict with PHP's HTTP extension.

Definition at line 33 of file MWHttpRequest.php.

Constructor & Destructor Documentation

◆ __construct()

MWHttpRequest::__construct (   $url,
  $options = [],
  $caller = __METHOD__,
  $profiler = null 
)
protected
Parameters
string$urlUrl to use. If protocol-relative, will be expanded to an http:// URL
array$options(optional) extra params to pass (see Http::request())
string$callerThe method making this request, for profiling
Profiler$profilerAn instance of the profiler for profiling, or null

Definition at line 89 of file MWHttpRequest.php.

References $options, $profiler, $url, as, global, Http\isValidURI(), StatusValue\newFatal(), StatusValue\newGood(), PROTO_HTTP, setHeader(), setOriginalRequest(), setUserAgent(), wfExpandUrl(), and wfParseUrl().

Member Function Documentation

◆ canFollowRedirects()

MWHttpRequest::canFollowRedirects ( )

Returns true if the backend can follow redirects.

Overridden by the child classes.

Returns
bool

Reimplemented in CurlHttpRequest.

Definition at line 633 of file MWHttpRequest.php.

◆ canMakeRequests()

static MWHttpRequest::canMakeRequests ( )
static

Simple function to test if we can make any sort of requests at all, using cURL or fopen()

Returns
bool

Definition at line 167 of file MWHttpRequest.php.

References wfIniGetBool().

Referenced by Installer\subscribeToMediaWikiAnnounce().

◆ execute()

MWHttpRequest::execute ( )

Take care of whatever is necessary to perform the URI request.

Returns
StatusValue
Note
currently returns Status for B/C

Reimplemented in PhpHttpRequest, and CurlHttpRequest.

Definition at line 380 of file MWHttpRequest.php.

◆ factory()

◆ getContent()

MWHttpRequest::getContent ( )

Get the body, or content, of the response to the request.

Returns
string

Definition at line 218 of file MWHttpRequest.php.

References $content.

◆ getCookieJar()

MWHttpRequest::getCookieJar ( )

Returns the cookie jar in use.

Returns
CookieJar

Definition at line 530 of file MWHttpRequest.php.

References $cookieJar, and parseHeader().

◆ getFinalUrl()

MWHttpRequest::getFinalUrl ( )

Returns the final URL after all redirections.

Relative values of the "Location" header are incorrect as stated in RFC, however they do happen and modern browsers support them. This function loops backwards through all locations in order to build the proper absolute URI - Marooned at wikia-inc.com

Note that the multiple Location: headers are an artifact of CURL – they shouldn't actually get returned this way. Rewrite this when T31232 is taken care of (high-level redirect handling rewrite).

Returns
string

Definition at line 591 of file MWHttpRequest.php.

References $url, captcha-old\count, and getResponseHeaders().

Referenced by parseCookies().

◆ getHeaderList()

MWHttpRequest::getHeaderList ( )
protected

Get an array of the headers.

Returns
array

Definition at line 315 of file MWHttpRequest.php.

References $name, $value, and as.

Referenced by CurlHttpRequest\execute(), and PhpHttpRequest\execute().

◆ getResponseHeader()

MWHttpRequest::getResponseHeader (   $header)

Returns the value of the given response header.

Parameters
string$header
Returns
string|null

Definition at line 501 of file MWHttpRequest.php.

References $header, captcha-old\count, and parseHeader().

Referenced by PhpHttpRequest\execute().

◆ getResponseHeaders()

MWHttpRequest::getResponseHeaders ( )

Returns an associative array of response headers after the request has been executed.

Because some headers (e.g. Set-Cookie) can appear more than once the, each value of the associative array is an array of the values given.

Returns
array

Definition at line 487 of file MWHttpRequest.php.

References $respHeaders, and parseHeader().

Referenced by getFinalUrl().

◆ getStatus()

MWHttpRequest::getStatus ( )

Get the integer value of the HTTP status code (e.g.

200 for "200 Ok") (see RFC2616, section 10, http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html for a list of status codes.)

Returns
int

Definition at line 452 of file MWHttpRequest.php.

References $respStatus, and parseHeader().

◆ isLocalURL()

static MWHttpRequest::isLocalURL (   $url)
staticprivate

Check if the URL can be served by localhost.

Parameters
string$urlFull url to check
Returns
bool

Definition at line 258 of file MWHttpRequest.php.

References $matches, $url, $wgCommandLineMode, captcha-old\count, and global.

◆ isRedirect()

MWHttpRequest::isRedirect ( )

Returns true if the last status code was a redirect.

Returns
bool

Definition at line 465 of file MWHttpRequest.php.

References $status, and parseHeader().

Referenced by PhpHttpRequest\execute().

◆ parseCookies()

MWHttpRequest::parseCookies ( )
protected

Parse the cookies in the response headers and store them in the cookie jar.

Definition at line 562 of file MWHttpRequest.php.

References $url, as, and getFinalUrl().

Referenced by parseHeader().

◆ parseHeader()

MWHttpRequest::parseHeader ( )
protected

Parses the headers, including the HTTP status code and any Set-Cookie headers.

This function expects the headers to be found in an array in the member variable headerList.

Definition at line 407 of file MWHttpRequest.php.

References $header, $last, as, captcha-old\count, and parseCookies().

Referenced by CurlHttpRequest\execute(), PhpHttpRequest\execute(), getCookieJar(), getResponseHeader(), getResponseHeaders(), getStatus(), isRedirect(), and setStatus().

◆ prepare()

MWHttpRequest::prepare ( )
protected

◆ proxySetup()

MWHttpRequest::proxySetup ( )
protected

Take care of setting up the proxy (do nothing if "noProxy" is set)

Returns
void

Definition at line 237 of file MWHttpRequest.php.

References Http\getProxy().

Referenced by prepare().

◆ read()

MWHttpRequest::read (   $fh,
  $content 
)

A generic callback to read the body of the response from a remote server.

Parameters
resource$fh
string$content
Returns
int

Definition at line 369 of file MWHttpRequest.php.

References $content, and content.

◆ setCallback()

MWHttpRequest::setCallback (   $callback)

Set a read callback to accept data read from the HTTP request.

By default, data is appended to an internal buffer which can be retrieved through $req->getContent().

To handle data as it comes in – especially for large files that would not fit in memory – you can instead set your own callback, in the form function($resource, $buffer) where the first parameter is the low-level resource being read (implementation specific), and the second parameter is the data buffer.

You MUST return the number of bytes handled in the buffer; if fewer bytes are reported handled than were passed to you, the HTTP fetch will be aborted.

Parameters
callable | null$callback
Exceptions
InvalidArgumentException

Definition at line 351 of file MWHttpRequest.php.

References $callback.

Referenced by prepare().

◆ setCookie()

MWHttpRequest::setCookie (   $name,
  $value,
  $attr = [] 
)

Sets a cookie.

Used before a request to set up any individual cookies. Used internally after a request to parse the Set-Cookie headers.

See also
Cookie::set
Parameters
string$name
string$value
array$attr

Definition at line 547 of file MWHttpRequest.php.

References $name, $value, and CookieJar\setCookie().

◆ setCookieJar()

MWHttpRequest::setCookieJar (   $jar)

Tells the MWHttpRequest object to use this pre-loaded CookieJar.

To read response cookies from the jar, getCookieJar must be called first.

Parameters
CookieJar$jar

Definition at line 521 of file MWHttpRequest.php.

◆ setData()

MWHttpRequest::setData (   $args)

Set the parameters of the request.

Parameters
array$args
Todo:
overload the args param

Definition at line 228 of file MWHttpRequest.php.

References $args.

◆ setHeader()

MWHttpRequest::setHeader (   $name,
  $value 
)

Set an arbitrary header.

Parameters
string$name
string$value

Definition at line 306 of file MWHttpRequest.php.

References $name, and $value.

Referenced by __construct(), and setUserAgent().

◆ setLogger()

MWHttpRequest::setLogger ( LoggerInterface  $logger)
Parameters
LoggerInterface$logger

Definition at line 158 of file MWHttpRequest.php.

References $logger.

◆ setOriginalRequest()

MWHttpRequest::setOriginalRequest (   $originalRequest)

Set information about the original request.

This can be useful for endpoints/API modules which act as a proxy for some service, and throttling etc. needs to happen in that service. Calling this will result in the X-Forwarded-For and X-Original-User-Agent headers being set.

Parameters
WebRequest | array$originalRequestWhen in array form, it's expected to have the keys 'ip' and 'userAgent'.
Note
IP/user agent is personally identifiable information, and should only be set when the privacy policy of the request target is compatible with that of the MediaWiki installation.

Definition at line 649 of file MWHttpRequest.php.

Referenced by __construct().

◆ setStatus()

MWHttpRequest::setStatus ( )
protected

Sets HTTPRequest status member to a fatal value with the error message if the returned integer value of the status code was not successful (< 300) or a redirect (>=300 and < 400).

(see RFC2616, section 10, http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html for a list of status codes.)

Definition at line 434 of file MWHttpRequest.php.

References $code, list, and parseHeader().

Referenced by CurlHttpRequest\execute(), and PhpHttpRequest\execute().

◆ setUserAgent()

MWHttpRequest::setUserAgent (   $UA)

Set the user agent.

Parameters
string$UA

Definition at line 297 of file MWHttpRequest.php.

References setHeader().

Referenced by __construct(), and prepare().

Member Data Documentation

◆ $caInfo

MWHttpRequest::$caInfo = null
protected

Definition at line 44 of file MWHttpRequest.php.

Referenced by CurlHttpRequest\execute(), and PhpHttpRequest\getCertOptions().

◆ $callback

callable MWHttpRequest::$callback
protected

Definition at line 50 of file MWHttpRequest.php.

Referenced by CurlHttpRequest\execute(), and setCallback().

◆ $connectTimeout

MWHttpRequest::$connectTimeout
protected

Definition at line 53 of file MWHttpRequest.php.

◆ $content

MWHttpRequest::$content
protected

Definition at line 36 of file MWHttpRequest.php.

Referenced by getContent(), read(), and CurlHttpRequest\readHeader().

◆ $cookieJar

CookieJar MWHttpRequest::$cookieJar
protected

Definition at line 58 of file MWHttpRequest.php.

Referenced by getCookieJar().

◆ $followRedirects

MWHttpRequest::$followRedirects = false
protected

Definition at line 52 of file MWHttpRequest.php.

◆ $headerList

MWHttpRequest::$headerList = []
protected

Definition at line 60 of file MWHttpRequest.php.

◆ $headersOnly

MWHttpRequest::$headersOnly = null
protected

Definition at line 38 of file MWHttpRequest.php.

◆ $logger

MWHttpRequest::$logger

Definition at line 81 of file MWHttpRequest.php.

Referenced by setLogger().

◆ $maxRedirects

MWHttpRequest::$maxRedirects = 5
protected

Definition at line 51 of file MWHttpRequest.php.

Referenced by CurlHttpRequest\execute().

◆ $method

MWHttpRequest::$method = "GET"
protected

Definition at line 45 of file MWHttpRequest.php.

Referenced by CurlHttpRequest\execute(), and PhpHttpRequest\execute().

◆ $noProxy

MWHttpRequest::$noProxy = false
protected

Definition at line 41 of file MWHttpRequest.php.

◆ $parsedUrl

MWHttpRequest::$parsedUrl
protected

Definition at line 48 of file MWHttpRequest.php.

Referenced by PhpHttpRequest\urlToTcp().

◆ $postData

MWHttpRequest::$postData = null
protected

Definition at line 39 of file MWHttpRequest.php.

Referenced by CurlHttpRequest\execute(), and PhpHttpRequest\execute().

◆ $profileName

string MWHttpRequest::$profileName
protected

Definition at line 76 of file MWHttpRequest.php.

◆ $profiler

Profiler MWHttpRequest::$profiler
protected

Definition at line 71 of file MWHttpRequest.php.

Referenced by __construct().

◆ $proxy

MWHttpRequest::$proxy = null
protected

Definition at line 40 of file MWHttpRequest.php.

Referenced by CurlHttpRequest\execute().

◆ $reqHeaders

MWHttpRequest::$reqHeaders = []
protected

Definition at line 46 of file MWHttpRequest.php.

◆ $respHeaders

MWHttpRequest::$respHeaders = []
protected

Definition at line 63 of file MWHttpRequest.php.

Referenced by getResponseHeaders().

◆ $respStatus

MWHttpRequest::$respStatus = "200 Ok"
protected

Definition at line 62 of file MWHttpRequest.php.

Referenced by getStatus().

◆ $respVersion

MWHttpRequest::$respVersion = "0.9"
protected

Definition at line 61 of file MWHttpRequest.php.

◆ $sslVerifyCert

MWHttpRequest::$sslVerifyCert = true
protected

Definition at line 43 of file MWHttpRequest.php.

Referenced by CurlHttpRequest\execute(), and PhpHttpRequest\execute().

◆ $sslVerifyHost

MWHttpRequest::$sslVerifyHost = true
protected

Definition at line 42 of file MWHttpRequest.php.

◆ $status

StatusValue MWHttpRequest::$status
protected

Definition at line 66 of file MWHttpRequest.php.

Referenced by isRedirect().

◆ $timeout

MWHttpRequest::$timeout = 'default'
protected

Definition at line 37 of file MWHttpRequest.php.

Referenced by CurlHttpRequest\execute(), and PhpHttpRequest\execute().

◆ $url

◆ LoggerInterface

MWHttpRequest::LoggerInterface
protected

Definition at line 81 of file MWHttpRequest.php.

◆ SUPPORTS_FILE_POSTS

const MWHttpRequest::SUPPORTS_FILE_POSTS = false

Definition at line 34 of file MWHttpRequest.php.


The documentation for this class was generated from the following file: