diff lib/IMPL/Web/OutOfRangeException.pm @ 407:c6e90e02dd17 ref20150831

renamed Lib->lib
author cin
date Fri, 04 Sep 2015 19:40:23 +0300
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/lib/IMPL/Web/OutOfRangeException.pm	Fri Sep 04 19:40:23 2015 +0300
@@ -0,0 +1,51 @@
+package IMPL::Web::OutOfRangeException;
+use strict;
+
+use IMPL::declare {
+    base => {
+        'IMPL::Web::Exception' => '@_'  
+    },
+};
+
+sub CTOR {
+    my ($this,$range) = @_;
+    
+    #TODO: validate args
+    
+    $this->headers({
+        content_range => { $range->{units} . ' */' . $range->{length} } 
+    });
+}
+
+use IMPL::Resources::Strings {
+    message => 'The specified range is invalid'
+};
+
+sub status {
+    "416 Requested Range Not Satisfiable"
+}
+
+1;
+
+__END__
+
+=pod
+
+=head1 NAME
+
+C<IMPL::Web::OutOfRangeException>  A server SHOULD return a response with this
+status code if a request included a Range request-header field (section 14.35),
+and none of the range-specifier values in this field overlap the current extent
+of the selected resource, and the request did not include an If-Range
+request-header field. (For byte-ranges, this means that the first- byte-pos of
+all of the byte-range-spec values were greater than the current length of the
+selected resource.)
+
+=head1 DESCRIPTION
+
+When this status code is returned for a byte-range request, the response SHOULD
+include a Content-Range entity-header field specifying the current length of the
+selected resource (see section 14.16). This response MUST NOT use the
+multipart/byteranges content- type. 
+
+=cut
\ No newline at end of file