The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

DTA::CAB::Server::HTTP::Handler::CGI - DTA::CAB::Server::HTTP::Handler class: CGI form processing

SYNOPSIS

##========================================================================
## PRELIMINARIES

use DTA::CAB::Server::HTTP::Handler::CGI;

##========================================================================
## Methods

$h = $class_or_obj->new(%options);
$bool = $h->prepare($server);
undef = $h->finish($server, $clientSocket);

\%params = $h->uriParams($hreq,%opts);
\%params = $h->contentParams($hreq,%opts);
\%params = $h->params($hreq,%opts);
\%vars = $h->cgiParams($srv,$clientConn,$httpRequest, %opts);

\%vars = $h->decodeVars(\%vars,%opts);
\$string = $h->decodeString(\$string,%opts); ##-- decodes in-place;
\$string = $h->decodeStringRef(\$string,%opts); ##-- decodes in-place;
$enc = $h->messageEncoding($httpMessage,$defaultEncoding);
$enc = $h->requestEncoding($httpRequest,\%vars);

\%vars = $h->trimVars(\%vars,%opts);
\%vars = $h->addVars(\%vars,\%push,$mode='push');

DESCRIPTION

Methods

new
$h = $class_or_obj->new(%options);

%option, %$h:

encoding => $defaultEncoding,  ##-- default encoding (UTF-8)
allowGet => $bool,             ##-- allow GET requests? (default=1)
allowPost => $bool,            ##-- allow POST requests? (default=1)
pushMode => $mode,             ##-- push mode for addVars (dfefault='push')
prepare
$bool = $h->prepare($server);

Just returns 1.

finish
undef = $h->finish($server, $clientSocket);

Clean up handler state after run(). Override deletes @$h{qw(cgi vars cgisrc)}.

uriParams
\%params = $h->uriParams($hreq,%opts)

Parses GET-style form parameters from $hreq->uri.

contentParams
\%params = $h->contentParams($hreq,%opts);

Parses POST-style content parameters from $hreq. If $hreq content-type is neither 'application/x-www-form-urlencoded' nor 'multipart/form-data', but content is present, returns $hreq content as the value of the pseudo-variable $opts{defaultName}. Known %opts:

defaultName => $name,       ##-- default parameter name (default='POSTDATA')
defaultCharset => $charset, ##-- default charset
params
\%params = $h->params($hreq,%opts);

Wrapper for $h->pushVars($h->uriParams(),$h->contentParams()) %opts are passed to "uriParams"(), "contentParams"().

cgiParams
\%vars = $h->cgiParams($srv,$clientConn,$httpRequest, %opts);
  • parses cgi parameters from client request

  • only handles GET or POST requests

  • wrapper for $h->uriParams(), $h->contentParams()

  • %opts are passed to uriParams, contentParams

decodeVars
\%vars = $h->decodeVars(\%vars,%opts);

Decodes cgi-style variables using $h->decodeString($str,%opts). Known %opts:

vars    => \@vars,      ##-- list of vars to decode (default=keys(%vars))
someKey => $someVal,    ##-- passed to $h-E<gt>decodeString()
decodeString
\$string = $h->decodeString(\$string,%opts); ##-- decodes in-place;
$decoded = $h->decodeString( $string,%opts); ##-- decode by copy

Wrapper for "decodeStringRef"().

decodeStringRef
\$string = $h->decodeStringRef(\$string,%opts); ##-- decodes in-place;

Decodes string in-place as $h->{encoding}, optionally handling HTML-style escapes. Known %opts:

%opts: allowHtmlEscapes => $bool, ##-- whether to handle HTML escapes (default=false) encoding => $enc, ##-- source encoding (default=$h->{encoding}; see also $h->requestEncoding())

messageEncoding
$enc = $h->messageEncoding($httpMessage,$defaultEncoding);

Atempts to guess messagencoding from (in order of descending priority):

  • HTTP::Message header Content-Type charset variable

  • HTTP::Message header Content-Encoding

  • $defaultEncoding (default=undef)

requestEncoding
$enc = $h->requestEncoding($httpRequest,\%vars);

Attempts to guess request encoding from (in order of descending priority):

  • CGI param 'encoding', from $vars->{encoding}

  • HTTP::Message encoding via $h->messageEncoding($httpRequest)

  • $h->{encoding}

trimVars
\%vars = $h->trimVars(\%vars,%opts);

Trims leading and trailing whitespace from selected values in \%vars. Known %opts:

vars    => \@vars,      ##-- list of vars to trim (default=keys(%vars))
addVars
\%vars = $h->addVars(\%vars,\%push,$mode='push');

CGI-like variable push; destructively adds \%push onto \%vars.

  • if $mode is 'push', dups are treated as array push

  • if $mode is 'clobber', dups in %push clobber values in %vars

  • if $mode is 'keep', dups in %push are ignored

AUTHOR

Bryan Jurish <moocow@cpan.org>

COPYRIGHT AND LICENSE

Copyright (C) 2010-2019 by Bryan Jurish

This package is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.24.1 or, at your option, any later version of Perl 5 you may have available.

SEE ALSO

DTA::CAB::Server::HTTP::Handler(3pm), DTA::CAB::Server::HTTP(3pm), DTA::CAB(3pm), perl(1), ...