summaryrefslogtreecommitdiffstats
path: root/lib/Web/Request
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2012-07-18 16:21:58 -0500
committerJesse Luehrs <doy@tozt.net>2012-07-18 16:21:58 -0500
commitbc67313aa7191255f4123ae8d89f890e2f0772bc (patch)
tree648e0f19dcbb84e848010e1e041db54fe09eba62 /lib/Web/Request
parentfd116f68e645ddaf7cc63a37b57e7b1c09ff46c8 (diff)
downloadweb-request-bc67313aa7191255f4123ae8d89f890e2f0772bc.tar.gz
web-request-bc67313aa7191255f4123ae8d89f890e2f0772bc.zip
rename this
Diffstat (limited to 'lib/Web/Request')
-rw-r--r--lib/Web/Request/Types.pm38
-rw-r--r--lib/Web/Request/Upload.pm4
2 files changed, 40 insertions, 2 deletions
diff --git a/lib/Web/Request/Types.pm b/lib/Web/Request/Types.pm
new file mode 100644
index 0000000..14c99e3
--- /dev/null
+++ b/lib/Web/Request/Types.pm
@@ -0,0 +1,38 @@
+package Web::Request::Types;
+use strict;
+use warnings;
+
+use Moose::Util::TypeConstraints;
+
+class_type('HTTP::Headers');
+
+subtype 'Web::Request::Types::StringLike',
+ as 'Object',
+ where {
+ return unless overload::Method($_, '""');
+ my $tc = find_type_constraint('Web::Request::Types::PSGIBodyObject');
+ return !$tc->check($_);
+ };
+
+duck_type 'Web::Request::Types::PSGIBodyObject' => ['getline', 'close'];
+
+subtype 'Web::Request::Types::PSGIBody',
+ as 'ArrayRef[Str]|FileHandle|Web::Request::Types::PSGIBodyObject';
+
+subtype 'Web::Request::Types::HTTPStatus',
+ as 'Int',
+ where { /^[1-5][0-9][0-9]$/ };
+
+subtype 'Web::Request::Types::HTTP::Headers',
+ as 'HTTP::Headers';
+coerce 'Web::Request::Types::HTTP::Headers',
+ from 'ArrayRef',
+ via { HTTP::Headers->new(@$_) },
+ from 'HashRef',
+ via { HTTP::Headers->new(%$_) };
+
+coerce 'Web::Request::Types::PSGIBody',
+ from 'Str|Web::Request::Types::StringLike',
+ via { [ $_ ] };
+
+1;
diff --git a/lib/Web/Request/Upload.pm b/lib/Web/Request/Upload.pm
index 5e7bf87..c7d0bf3 100644
--- a/lib/Web/Request/Upload.pm
+++ b/lib/Web/Request/Upload.pm
@@ -3,11 +3,11 @@ use Moose;
use HTTP::Headers;
-use Web::Response::Types;
+use Web::Request::Types;
has headers => (
is => 'ro',
- isa => 'Web::Response::Types::HTTP::Headers',
+ isa => 'Web::Request::Types::HTTP::Headers',
coerce => 1,
handles => ['content_type'],
);