-
-
26 Apr 2012 00:21:18 UTC
- Distribution: REST-Utils
- Module version: 0.6
- Source (raw)
- Browse (raw)
- Changes
- Homepage
- How to Contribute
- Repository
- Issues (1)
- Testers (1244 / 26 / 0)
- Kwalitee
Bus factor: 0- 98.61% Coverage
- License: perl_5
- Perl: v5.8.0
- Activity
24 month- Tools
- Download (20.82KB)
- MetaCPAN Explorer
- Permissions
- Subscribe to distribution
- Permalinks
- This version
- Latest version
- Dependencies
- unknown
- Reverse dependencies
- CPAN Testers List
- Dependency graph
NAME
REST::Utils - Utility functions for REST applications
SYNOPSIS
use REST::Utils qw( :all );
VERSION
This document describes REST::Utils Version 0.6
DESCRIPTION
This module contains some functions that are useful for implementing REST applications.
FUNCTIONS
The following functions are available. None of them are exported by default. You can give the tag :all to the
use REST::Utils
statement to import all the functions at once.best_match(\@supported, $header)
Takes an arrayref of supported MIME types and finds the best match for all the media-ranges listed in $header. The value of $header must be a string that conforms to the format of the HTTP Accept: header. The value of @supported is a list of MIME types. If no type can be matched,
undef
is returned.Example:
print best_match(['application/xbel+xml', 'text/xml'], 'text/*;q=0.5,*/*; q=0.1'); # text/xml
get_body($cgi)
This function takes a CGI or compatible object as its first parameter.
It will retrieve the body of an HTTP request regardless of the request method.
If the body is larger than CGI.pms' POST_MAX variable allows or if
$ENV{CONTENT_LENGTH}
reports a bigger size than is actually available, get_body() will return undef.If there is no body or if
$ENV{CONTENT_LENGTH}
is undefined, it will return an empty string.Otherwise it will return a scalar containing the body as a sequence of bytes up to the size of
$ENV{CONTENT_LENGTH}
It is up to you to turn the bytes returned by get_body() into something useful.
fitness_and_quality_parsed($mime_type, @parsed_ranges)
Find the best match for a given mime-type against a list of media_ranges that have already been parsed by parse_media_range(). Returns a list of the fitness value and the value of the 'q' quality parameter of the best match, or (-1, 0) if no match was found. Just as for quality_parsed(), @parsed_ranges must be a list of parsed media ranges.
media_type($cgi, \@types)
This function takes a CGI or compatible object as its first parameter and a reference to a list of MIME media types as the second parameter. It returns the member of the list most preferred by the requestor.
Example:
my $preferred = media_type($cgi, ['text/html', 'text/plain', '*/*']);
If the incoming request is a
HEAD
orGET
, the function will return the member of thetypes
listref which is most preferred based on theAccept
HTTP headers sent by the requestor. If the requestor wants a type which is not on the list, the function will returnundef
. (HINT: you can specify ' */*' to match every MIME media type.)For
POST
orPUT
requests, the function will compare the MIME media type in theContent-type
HTTP header provided by the requestor with the list and return that type if it matches a member of the list orundef
if it doesn't.For other HTTP requests (such as
DELETE
) this function will always return an empty string.parse_media_range($range)
Carves up a media range and returns a list of the
($type, $subtype,\%params)
where %params is a hash of all the parameters for the media range.For example, the media range 'application/*;q=0.5' would get parsed into:
('application', '*', { q => 0.5 })
In addition this function also guarantees that there is a value for 'q' in the %params hash, filling it in with a proper default if necessary.
parse_mime_type($mime_type)
Carves up a MIME type and returns a list of the ($type, $subtype, \%params) where %params is a hash of all the parameters for the media range.
For example, the media range 'application/xhtml;q=0.5' would get parsed into:
('application', 'xhtml', { q => 0.5 })
quality($mime_type, $ranges)
Returns the quality 'q' of a MIME type when compared against the media-ranges in $ranges. For example:
print quality('text/html', 'text/*;q=0.3, text/html;q=0.7, text/html;level # 0.7
quality_parsed($mime_type, @parsed_ranges)
Find the best match for a given MIME type against a list of media_ranges that have already been parsed by parse_media_range(). Returns the 'q' quality parameter of the best match, 0 if no match was found. This function behaves the same as quality() except that @parsed_ranges must be a list of parsed media ranges.
request_method($cgi)
This function returns the query's HTTP request method.
Example 1:
my $method = request_method($cgi);
This function takes a CGI or compatible object as its first parameter.
Because many web sites don't allow the full set of HTTP methods needed for REST, you can "tunnel" methods through
GET
orPOST
requests in the following ways:In the query with the
_method
parameter. This will work even withPOST
requests where parameters are usually passed in the request body.Example 2:
http://localhost/index.cgi?_method=DELETE
Or with the
X-HTTP-Method-Override
HTTP header.Example 3:
X-HTTP-METHOD-OVERRIDE: PUT
if more than one of these are present, the HTTP header will override the query parameter, which will override the "real" method.
Any method can be tunneled through a
POST
request. OnlyGET
andHEAD
can be tunneled through aGET
request. You cannot tunnel through aHEAD
,PUT
,DELETE
, or any other request. If an invalid tunnel is attempted, it will be ignored.SUPPORT
You can find documentation for this module with the perldoc command.
perldoc Rest::Utils
You can also look for information at:
RT: CPAN's request tracker
AnnoCPAN: Annotated CPAN documentation
CPAN Ratings
Search CPAN
BUGS
There are no known problems with this module.
Please report any bugs or feature requests to
bug-rest-Utils at rt.cpan.org
, or through the web interface at http://rt.cpan.org/NoAuth/ReportBug.html?Queue=REST-Utils. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.THANKS
MIME type parsing code borrowed from MIMEParser.pm by: Joe Gregorio
joe at bitworking.org
Stanis Trendelenburgstanis.trendelenburg at gmail.com
(http://code.google.com/p/mimeparse/)AUTHOR
Jaldhar H. Vyas,
<jaldhar at braincells.com>
LICENSE AND COPYRIGHT
Copyright (c) 2012 Consolidated Braincells Inc. All rights reserved.
This distribution is free software; you can redistribute it and/or modify it under the terms of either:
a) the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version, or
b) the Artistic License version 2.0.
The full text of the license can be found in the LICENSE file included with this distribution.
Module Install Instructions
To install REST::Utils, copy and paste the appropriate command in to your terminal.
cpanm REST::Utils
perl -MCPAN -e shell install REST::Utils
For more information on module installation, please visit the detailed CPAN module installation guide.