^Status|stub| ^Todo|Write me| ====== Request Helper ====== A helper designed to retrieve all kinds of information on the current request. ===== Methods ===== ==== referrer() ==== ''referrer($default = FALSE)'' returns the HTTP referrer, or the default if the referrer is not set. It takes: * **[mixed]** ''$default'' default to return - default FALSE * returns **[mixed]** the referrer if it's set, default if passed **Example:** echo request::referrer(); It could result as: http://www.google.com/search?hl=en&q=kohana&btnG=Google+Search ==== is_ajax() ==== ''is_ajax()'' tests if the current request is an AJAX request by checking the X-Requested-With HTTP request header that most popular JS frameworks now set for AJAX calls. * returns **[bool]** TRUE if the request is an AJAX one, FALSE otherwise **Example:** We can use this method to detect ajax requests in the controller and disable the view template so we can output a properly formatted JSON response. $animals = array('dog', 'cat', 'mouse'); if (request::is_ajax()) { $this->auto_render = FALSE; // disable auto render echo json_encode($animals); } ==== method() ==== ''method()'' returns current HTTP request method (GET, POST, PUT, DELETE for example) * returns **[string]** the request method **Example:** echo request::method(); It could result as: get ==== accepts() ==== ''accepts($type = NULL, $explicit_check = FALSE)'' returns boolean of whether client accepts content type. It takes: * **[string]** ''$type'' the content type * **[bool]** ''$explicit_check'' set to TRUE to disable wildcard checking - default FALSE * returns **[bool]** TRUE if the client accepts the content type passed, FALSE otherwise **Example:** if (request::accepts('xhtml') && request::accepts('xml') && request::accepts('rss') && request::accepts('atom')) { echo 'Client accepts all of them'; } else { echo 'Client doesn\'t accept one/several of xhtml, xml, rss, atom'; } It could result in HTML as: Client accepts all of them ==== preferred_accept() ==== ''preferred_accept($types, $explicit_check = FALSE)'' compare the q values for given array of content types and return the one with the highest value. If items are found to have the same q value, the first one encountered in the given array wins. If all items in the given array have a q value of 0, FALSE is returned. * **[array]** ''$types'' array of the content types * **[bool]** ''$explicit_check'' sets to TRUE to disable wildcard checking - default FALSE * returns **[mixed]** mime type with highest q value, FALSE if none of the given types are accepted **Example:** echo request::preferred_accept(array('xhtml', 'xml')); It could result as: xhtml ==== accepts_at_quality() ==== ''accepts_at_quality($type = NULL, $explicit_check = FALSE)'' returns quality factor at which the client accepts content type. * **[string]** ''$type'' content type (e.g. "image/jpg", "jpg") * **[bool]** ''$explicit_check'' sets to TRUE to disable wildcard checking - default FALSE * returns **[integer|float]** the quality factor **Example:** echo request::accepts_at_quality('image/jpg'); It could result as: 0.8