SS_HTTPRequest
class SS_HTTPRequest implements ArrayAccess (View source)
Represents a HTTP-request, including a URL that is tokenised for parsing, and a request method (GET/POST/PUT/DELETE). This is used by RequestHandler objects to decide what to do.
Caution: objects of this class are immutable, e.g. echo $request['a']; works as expected, but $request['a'] = '1'; has no effect.
The intention is that a single SS_HTTPRequest object can be passed from one object to another, each object calling match() to get the information that they need out of the URL. This is generally handled by RequestHandler::handleRequest().
Properties
protected | string | $url | ||
protected | $dirParts | The non-extension parts of the passed URL as an array, originally exploded by the "/" separator. |
||
protected | string | $extension | ||
protected | string | $httpMethod | ||
protected | array | $getVars | ||
protected | array | $postVars | ||
protected | array | $headers | HTTP Headers like "Content-Type: text/xml" |
|
protected | string | $body | Raw HTTP body, used by PUT and POST requests. |
|
protected | array | $allParams | ||
protected | array | $latestParams | ||
protected | array | $routeParams | ||
protected | $unshiftedButParsedParts |
Methods
Construct a SS_HTTPRequest from a URL relative to the site root.
Returns all combined HTTP GET and POST parameters passed into this request. If a parameter with the same name exists in both arrays, the POST value is returned.
Returns a possible file extension found in parsing the URL as denoted by a "."-character near the end of the URL.
Checks if the SS_HTTPRequest->getExtension() on this request matches one of the more common media types embedded into a webpage - e.g. css, png.
Add a HTTP header to the response, replacing any header of the same name.
Remove an existing HTTP header by its name, e.g. "Content-Type".
Returns true if this request an ajax request, based on custom HTTP ajax added by common JavaScript libraries, or based on an explicit "ajax" request parameter.
Enables the existence of a key-value pair in the request to be checked using array syntax, so isset($request['title']) will check for $_POST['title'] and $_GET['title']
Access a request variable using array syntax. eg: $request['title'] instead of $request->postVar('title')
Construct an SS_HTTPResponse that will deliver a file to the client.
Matches a URL pattern The pattern can contain a number of segments, separated by / (and an extension indicated by a .)
Shift all the parameter values down a key space, and return the shifted value.
Finds a named URL parameter (denoted by "$"-prefix in $url_handlers) from the full URL, or a parameter specified in the route table
Returns the unparsed part of the original URL separated by commas. This is used by RequestHandler->handleRequest() to determine if further URL processing is necessary.
Returns true if this is a URL that will match without shifting off any of the URL.
Extract an IP address from a header value that has been obtained. Accepts single IP or comma separated string of IPs
Returns all mimetypes from the HTTP "Accept" header as an array.
Gets the "real" HTTP method for a request. This method is no longer used to mitigate the risk of web cache poisoning.
Details
__construct($httpMethod, $url, $getVars = array(), $postVars = array(), $body = null)
Construct a SS_HTTPRequest from a URL relative to the site root.
SS_HTTPRequest
setUrl($url)
Allow the setting of a URL
This is here so that RootURLController can change the URL of the request without us loosing all the other info attached (like headers)
bool
isGET()
No description
bool
isPOST()
No description
bool
isPUT()
No description
bool
isDELETE()
No description
bool
isHEAD()
No description
SS_HTTPRequest
setBody(string $body)
No description
null|string
getBody()
No description
array
getVars()
No description
array
postVars()
No description
array
requestVars()
Returns all combined HTTP GET and POST parameters passed into this request. If a parameter with the same name exists in both arrays, the POST value is returned.
mixed
getVar(string $name)
No description
mixed
postVar(string $name)
No description
mixed
requestVar(string $name)
No description
string
getExtension()
Returns a possible file extension found in parsing the URL as denoted by a "."-character near the end of the URL.
Doesn't necessarily have to belong to an existing file, as extensions can be also used for content-type-switching.
bool
isMedia()
Checks if the SS_HTTPRequest->getExtension() on this request matches one of the more common media types embedded into a webpage - e.g. css, png.
This is useful for things like determining wether to display a fully rendered error page or not. Note that the media file types is not at all comprehensive.
addHeader(string $header, string $value)
Add a HTTP header to the response, replacing any header of the same name.
array
getHeaders()
No description
mixed
getHeader(string $header)
Remove an existing HTTP header
SS_HTTPRequest
removeHeader(string $header)
Remove an existing HTTP header by its name, e.g. "Content-Type".
string
getURL(bool $includeGetVars = false)
Returns the URL used to generate the page
bool
isAjax()
Returns true if this request an ajax request, based on custom HTTP ajax added by common JavaScript libraries, or based on an explicit "ajax" request parameter.
bool
offsetExists(unknown_type $offset)
Enables the existence of a key-value pair in the request to be checked using array syntax, so isset($request['title']) will check for $_POST['title'] and $_GET['title']
unknown
offsetGet(unknown_type $offset)
Access a request variable using array syntax. eg: $request['title'] instead of $request->postVar('title')
offsetSet($offset, $value)
No description
offsetUnset($offset)
No description
static SS_HTTPResponse
send_file($fileData, $fileName, null $mimeType = null)
Construct an SS_HTTPResponse that will deliver a file to the client.
Caution: Since it requires $fileData to be passed as binary data (no stream support), it's only advisable to send small files through this method.
array|bool
match($pattern, bool $shiftOnSuccess = false)
Matches a URL pattern The pattern can contain a number of segments, separated by / (and an extension indicated by a .)
The parts can be either literals, or, if they start with a $ they are interpreted as variables.
- Literals must be provided in order to match
- $Variables are optional
- However, if you put ! at the end of a variable, then it becomes mandatory.
For example:
- admin/crm/list will match admin/crm/$Action/$ID/$OtherID, but it won't match admin/crm/$Action!/$ClassName!
The pattern can optionally start with an HTTP method and a space. For example, "POST $Controller/$Action". This is used to define a rule that only matches on a specific HTTP method.
array
allParams()
No description
string
shiftAllParams()
Shift all the parameter values down a key space, and return the shifted value.
array
latestParams()
No description
string|null
latestParam(string $name)
No description
array
routeParams()
No description
SS_HTTPRequest
setRouteParams($params)
No description
array
params()
No description
string
param(string $name)
Finds a named URL parameter (denoted by "$"-prefix in $url_handlers) from the full URL, or a parameter specified in the route table
string
remaining()
Returns the unparsed part of the original URL separated by commas. This is used by RequestHandler->handleRequest() to determine if further URL processing is necessary.
bool
isEmptyPattern($pattern)
Returns true if this is a URL that will match without shifting off any of the URL.
This is used by the request handler to prevent infinite parsing loops.
string|array
shift(int $count = 1)
Shift one or more parts off the beginning of the URL.
If you specify shifting more than 1 item off, then the items will be returned as an array
bool
allParsed()
Returns true if the URL has been completely parsed.
This will respect parsed but unshifted directory parts.
string
getIP()
Returns the client IP address which originated this request.
protected string
getIPFromHeaderValue(string $headerValue)
Extract an IP address from a header value that has been obtained. Accepts single IP or comma separated string of IPs
array
getAcceptMimetypes(bool $includeQuality = false)
Returns all mimetypes from the HTTP "Accept" header as an array.
string
httpMethod()
No description
$this
setHttpMethod(string $method)
Explicitly set the HTTP method for this request.
static string
detect_method(string $origMethod, array $postVars)
deprecated
deprecated
Gets the "real" HTTP method for a request. This method is no longer used to mitigate the risk of web cache poisoning.