The Perl and Raku Conference 2025: Greenville, South Carolina - June 27-29 Learn more

# ABSTRACT: An RDAP request object.
sub from_cgi {
my ($package, $cgi) = @_;
my $url = URI->new(sprintf(
$cgi->protocol,
$cgi->virtual_host,
$cgi->server_port,
$cgi->request_uri,
))->canonical;
my $request = $package->new($cgi->request_method, $url);
foreach my $name (map { lc } $cgi->http) {
my $value = $cgi->http($name);
$name =~ s/^http_//i;
$name =~ s/_/-/g;
$request->header($name => $value);
}
$request->{_cgi} = $cgi;
return $request;
}
sub cgi { shift->{_cgi} }
sub type {
my $self = shift;
return [ grep { length > 0 } $self->uri->path_segments ]->[0];
}
sub object {
my $self = shift;
# get the segments from the path...
my @segments = grep { length > 0 } $self->uri->path_segments;
# remove the leading value (which is the type)
shift(@segments);
# join the remaining segments (because CIDR prefixes will contain a slash)
return join('/', @segments);
}
1;
__END__
=pod
=encoding UTF-8
=head1 NAME
Net::RDAP::Server::Request - An RDAP request object.
=head1 VERSION
version 0.05
=head1 DESCRIPTION
L<Net::RDAP::Server::Request> represents an RDAP query.
L<Net::RDAP::Server::Response> extends L<HTTP::Response>.
=head1 ADDITIONAL METHODS
=head2 from_cgi($cgi)
This method constructs a L<Net::RDAP::Server::Request> object from a L<CGI>
object (L<Net::RDAP::Server> is based on L<HTTP::Server::Simple::CGI> which uses
the CGI API).
=head2 cgi()
This returns the L<CGI> object from which this object was constructed.
=head2 type()
This returns a string containing the RDAP query type (e.g. C<domain>, C<ip>,
etc).
=head2 object()
This returns a string containing the requested object. This value is irrelevant
for help queries and searches.
=head1 AUTHOR
Gavin Brown <gavin.brown@fastmail.uk>
=head1 COPYRIGHT AND LICENSE
This software is copyright (c) 2024 by Gavin Brown.
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
=cut