package Reaction::Types::File;
-use Moose::Util::TypeConstraints;
+use MooseX::Types -declare => [qw/File Upload/];
-use Catalyst::Request::Upload;
+use MooseX::Types::Moose 'Object';
+use Path::Class::File;
-subtype 'File'
- => as 'Object'
- => where { $_->isa('Catalyst::Request::Upload') }
- => message { "Must be a file" };
+subtype File, as Object, where { $_->isa('Path::Class::File') },
+ message { "Must be a file" };
+
+subtype Upload, as Object, where { $_->isa('Catalyst::Request::Upload') },
+ message { "Must be a file" };
+
+coerce File, from Upload, via { Path::Class::File->new( $_->tempname ) };
1;