package RSApache::Response::Download;

use strict;
use warnings;

use Apache2::Const qw(OK);

use lib ('/app/tools/common/lib');
use RSApache::Response;
use base 'RSApache::Response';

use Data::Dumper;

sub _init {
    my ( $self, $fh, $contentType, $fileName, $fileSize ) = @_;
    $contentType = 'application/octet-stream' unless $contentType;
    $fileName    = 'RoyaltyShareFileDownload' unless $fileName;

    $self->{fileHandle}  = $fh;
    $self->{contentType} = $contentType;
    $self->{fileName}    = $fileName;
    $self->{fileSize}    = $fileSize;
}

sub respond {
    my ( $self, $apache ) = @_;

    my $filename = $self->{fileName};
    if ( $self->{fileSize} ) {
        $apache->headers_out->add( 'Content-Length' => $self->{fileSize} );
    }

    $apache->headers_out->add( 'Content-Disposition' => "attachment; filename=\"$filename\"" );

    $apache->send_http_header( $self->{contentType} );

    $apache->send_fd( $self->{fileHandle} );
    close $self->{fileHandle};

    return OK;
}

###
1;    # Play nicely.
###
