]> git.deb.at Git - deb/packages.git/blobdiff - lib/Packages/DoIndex.pm
Packages::DoIndex: Send Content-Length and Last-Modified
[deb/packages.git] / lib / Packages / DoIndex.pm
index 0ed874a24ce31a4dcf5865a3036c0cd25330fe58..0c5d89dfa57ef48a618b0e423facb5e115843236 100644 (file)
@@ -21,17 +21,11 @@ sub do_allpackages {
     return send_file( 'allpackages', @_ );
 }
 
-# no real need for more flexibility here, I think...
-my %mime_types = (
-                 txt => 'text/plain',
-                 'txt.gz' => 'text/plain',
-                 html => 'text/html',
-                 );
 my %encoding = (
                'txt.gz' => 'x-gzip',
                );
 sub send_file {
-    my ($file, $params, $opts, $html_header) = @_;
+    my ($file, $params, $opts) = @_;
 
     if ($params->{errors}{suite}) {
        fatal_error( _g( "suite not valid or not specified" ) );
@@ -59,8 +53,11 @@ sub send_file {
        if (open( INDEX, '<', "$wwwdir/$path" )) {
            my %headers;
            $headers{'-charset'} = get_charset( $opts->{lang} );
-           $headers{'-type'} = $mime_types{$opts->{format}} || 'text/plain';
+           $headers{'-type'} = get_mime( $opts->{format}, 'text/plain' );
            $headers{'-content-encoding'} = $encoding{$opts->{format}} if exists $encoding{$opts->{format}};
+           my ($size,$mtime) = (stat("$wwwdir/$path"))[7,9];
+           $headers{'-content-length'} = $size;
+           $headers{'-last-modified'} = gmtime($mtime);
            print header( %headers );
 
            binmode INDEX;