.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .if !\nF .nr F 0 .if \nF>0 \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} .\} .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "UR::Service::WebServer 3pm" .TH UR::Service::WebServer 3pm "2016-10-31" "perl v5.24.1" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" UR::Service::WebServer \- A PSGI\-based web server .SH "SYNOPSIS" .IX Header "SYNOPSIS" .Vb 2 \& my $s = UR::Service::WebServer(port => 4321); \& $s\->run( \e&handle_request ); .Ve .SH "DESCRIPTION" .IX Header "DESCRIPTION" Implements a simple, standalone web server based on HTTP::Server::PSGI. The event loop is entered by calling the \fIrun()\fR method. .SS "Properties" .IX Subsection "Properties" .IP "host" 4 .IX Item "host" The \s-1IP\s0 address to listen on for connections. The default value is \&'localhost'. host can be changed any time before the server is created, usually the first time \fIrun()\fR is called. .IP "port" 4 .IX Item "port" The \s-1TCP\s0 port to listen on for connections. The detault value is undef, meaning that the system will pick an unused port. port can be changed any time before the server is created, usually the first time \fIrun()\fR is called. .IP "server" 4 .IX Item "server" Holds a reference to an object that isa HTTP::Server::PSGI. This will be automatically created the first time \fIrun()\fR is called. .IP "cb" 4 .IX Item "cb" Holds a \s-1CODE\s0 reference used as the default request handler within \fIrun()\fR. .SS "Methods" .IX Subsection "Methods" .ie n .IP "$self\->\fIannounce()\fR" 4 .el .IP "\f(CW$self\fR\->\fIannounce()\fR" 4 .IX Item "$self->announce()" This method is called when the \s-1PSGI\s0 server is ready to accept requests. The base-class behavior is to print the listening \s-1URL\s0 on \s-1STDOUT. \s0 Subclasses can override it to implement their own behavior. .ie n .IP "my $code = $self\->file_handler_for_directory($path)" 4 .el .IP "my \f(CW$code\fR = \f(CW$self\fR\->file_handler_for_directory($path)" 4 .IX Item "my $code = $self->file_handler_for_directory($path)" A helper method used for implementing server for files located in the directory \f(CW$path\fR. It returns a \s-1CODE\s0 ref that takes 2 arguments, \f(CW$env\fR (the standard \s-1PSGI\s0 env hashref) and \f(CW$pathname\fR (a path relative to \f(CW$path\fR). It returns the standard tuple a \s-1PSGI\s0 server expects. .Sp \&\f(CW$pathname\fR is pre-processed by removing all occurrences of \*(L"..\*(R" to keep requests within the provided \f(CW$path\fR. If the requested file is not found, then it returns a 404. .ie n .IP "$self\->run(<$cb>)" 4 .el .IP "\f(CW$self\fR\->run(<$cb>)" 4 .IX Item "$self->run(<$cb>)" Enter the request loop. If a callback is not provided to \fIrun()\fR, then the object's cb property is used instead. If neither have a value, then \fIrun()\fR returns immediately. .Sp For each request \f(CW$cb\fR is called with one argument, the standard \s-1PSGI\s0 env hashref. .SH "SEE ALSO" .IX Header "SEE ALSO" UR::Service::UrlRouter