8e5fdc6df7d6352b9f1a429101488de9116a9f6a
[catagits/Web-Simple.git] / lib / Web / Dispatch / Upload.pm
1 use strictures 1;
2
3 {
4   package Web::Dispatch::Upload;
5   use base qw(Plack::Request::Upload);
6   use overload '""' => 'tempname', fallback => 1;
7
8   sub is_upload { 1 }
9
10   sub reason { '' }
11 }
12
13 {
14   package Web::Dispatch::NotAnUpload;
15
16   use overload '""' => '_explode', fallback => 1;
17
18   sub new {
19     my ($class, %args) = @_;
20     bless {
21       filename => $args{filename},
22       reason => $args{reason}
23     }, $class;
24   }
25
26   sub is_upload { 0 }
27
28   sub reason { $_[0]->{reason} }
29
30   sub _explode {
31     die "Not actually an upload: ".$_[0]->{reason}
32   }
33
34   sub filename { $_[0]->_explode }
35   sub headers { $_[0]->_explode }
36   sub size { $_[0]->_explode }
37   sub tempname { $_[0]->_explode }
38   sub path { $_[0]->_explode }
39   sub content_type { $_[0]->_explode }
40   sub type { $_[0]->_explode }
41   sub basename { $_[0]->_explode }
42 }
43
44 1;