summaryrefslogtreecommitdiff
path: root/lib/Net/HTTP/Spore/Request.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Net/HTTP/Spore/Request.pm')
-rw-r--r--lib/Net/HTTP/Spore/Request.pm119
1 files changed, 114 insertions, 5 deletions
diff --git a/lib/Net/HTTP/Spore/Request.pm b/lib/Net/HTTP/Spore/Request.pm
index 908cce7..267ec0b 100644
--- a/lib/Net/HTTP/Spore/Request.pm
+++ b/lib/Net/HTTP/Spore/Request.pm
@@ -1,8 +1,11 @@
package Net::HTTP::Spore::Request;
+# ABSTRACT: Net::HTTP::Spore::Request - Portable HTTP request object from SPORE env hash
+
use strict;
use warnings;
+use Carp ();
use URI;
use HTTP::Headers;
use HTTP::Request;
@@ -13,18 +16,23 @@ use Net::HTTP::Spore::Response;
sub new {
my ( $class, $env ) = @_;
+
+ Carp::croak('$env is required') unless defined $env && ref($env) eq 'HASH';
bless { env => $env }, $class;
}
-sub env { $_[0]->{env}; }
+sub env { $_[0]->{env} }
sub method { $_[0]->{env}->{REQUEST_METHOD} }
sub port { $_[0]->{env}->{SERVER_PORT} }
sub script_name { $_[0]->{env}->{SCRIPT_NAME} }
-sub path { $_[0]->{env}->{PATH_INFO} || '/' }
+sub path { $_[0]->path_info }
sub request_uri { $_[0]->{env}->{REQUEST_URI} }
-sub protocol { $_[0]->{env}->{SERVER_PROTOCOL} }
-sub content { $_[0]->{env}->{'spore.payload'} }
sub scheme { $_[0]->{env}->{'spore.scheme'} }
+sub logger { $_[0]->{env}->{'sporex.logger'} }
+sub secure { $_[0]->scheme eq 'https' }
+sub content { $_[0]->{env}->{'spore.payload'} }
+sub body { $_[0]->{env}->{'spore.payload'} }
+sub input { $_[0]->{env}->{'spore.payload'} }
sub path_info {
my $self = shift;
@@ -97,7 +105,7 @@ sub uri {
my $path = URI::Escape::uri_escape($path_info || '', $path_escape_class);
- if ($query_string) {
+ if (defined $query_string) {
$path .= '?' . $query_string;
}
@@ -105,6 +113,7 @@ sub uri {
return URI->new( $base . $path )->canonical;
}
+# retourner les query parameters ? vu qu'on a pas encore peuple l'url, on gere comment ?
sub query_parameters {
my $self = shift;
}
@@ -153,3 +162,103 @@ sub finalize {
}
1;
+
+__END__
+
+=head1 SYNOPSIS
+
+ use Net::HTTP::Spore::Request;
+
+ my $request = Net::HTTP::Spore::Request->new($env);
+
+=head1 DESCRIPTION
+
+Net::HTTP::Spore::Request create a HTTP request
+
+=head1 METHODS
+
+=over 4
+
+=item new
+
+ my $req = Net::HTTP::Spore::Request->new();
+
+Creates a new Net::HTTP::Spore::Request object.
+
+=item env
+
+ my $env = $request->env;
+
+Get the environment for the given request
+
+=item method
+
+ my $method = $request->method;
+
+Get the HTTP method for the given request
+
+=item port
+
+ my $port = $request->port;
+
+Get the HTTP port from the URL
+
+=item script_name
+
+ my $script_name = $request->script_name;
+
+Get the script name part from the URL
+
+=item path
+
+=item path_info
+
+ my $path = $request->path_info;
+
+Get the path info part from the URL
+
+=item request_uri
+
+ my $request_uri = $request->request_uri;
+
+Get the request uri from the URL
+
+=item scheme
+
+ my $scheme = $request->scheme;
+
+Get the scheme from the URL
+
+=item secure
+
+ my $secure = $request->secure;
+
+Return true if the URL is HTTPS
+
+=item content
+
+=item body
+
+=item input
+
+ my $input = $request->input;
+
+Get the content that will be posted
+
+=item query_string
+
+=item headers
+
+=item header
+
+=item uri
+
+=item query_parameters
+
+=item base
+
+=item new_response
+
+=item finalize
+
+=back