#!/usr/bin/perl

#use utf8;
use strict;
use CGI;
use Text::CSV_XS;
use MIME::Base64::Perl;
use Digest::SHA qw(
    sha1_base64
    sha512_hex
    sha1_hex
);
use Opals::Utility qw(
    util_resizeImg
);

use Opals::Context;
use Opals::Template_ajax qw(
    tmpl_read
    tmpl_write
);
use Opals::WebServiceEbookClient qw( 
    wsc_getBidByLidDigMsg
);

use JSON;


my $dbh = Opals::Context->dbh();
END { $dbh->disconnect(); }
use  Opals::Epub;
use XML::SAX;

my $cgi          = CGI->new;
my $input        = $cgi->Vars();

my ($permission, $cookie, $template) = tmpl_read(
        {
            dbh             => $dbh,
            cgi             => $cgi,
            tmplFile        => 'ajax/util/uploadEpub.tmpl',
            reqPermission   => 'ebook_mgmt',
        }
    );
    
   
my $fname = $input->{'epubFile'};
if ($permission && $permission->{'ebook_mgmt'}) {
    if($fname && $fname ne''){
        umask 002;         
        my $uploadFid=_genGUID();
        my $tmpUploadFile="/tmp/$uploadFid";
        #$tmpUploadFile =~ s/\n$//gi;
        #system("chown apache.apache $tmpUploadFile");
        my $upload_filehandle = $cgi->upload("epubFile"); 
        my $epubStr="";
        while ( <$upload_filehandle> ){
            $epubStr .= $_;
        }
        open    UPLOADFILE, ">$tmpUploadFile" ;
        binmode UPLOADFILE;
        print UPLOADFILE $epubStr ;
        close UPLOADFILE;

        # check this library has the epub ...
        my $epubDigMsg = sha512_hex($epubStr);
        my $bid = wsc_getBidByLidDigMsg({epubDigMsg=>$epubDigMsg});

        my $epub=Opals::Epub->new();
        $epub->parse("$tmpUploadFile");
        my $title =$epub->getMetadataField("title"),
        my $author =$epub->getMetadataField("author"),
        my $ISBN =$epub->getMetadataField("ISBN"),
        my $description =$epub->getMetadataField("description"),
        my ($mediaType,$thumbnail) =getThumbnail($epub);

        $template->param(bid        =>$bid,
                         title      =>$title,
                         author     =>$author,
                         ISBN       =>$ISBN,
                         description=>$description,
                         thumbnail  =>$thumbnail,
                         mediaType  =>$mediaType,
                         uploadFid  =>$uploadFid
                    );
       
    }

}

#------------------------------------------------------------------------------
sub getThumbnail{
    my ($book)=@_;
    my ($thumbnail,$mediaType)=(undef,undef);
    #my $bookCoverId=$book->getBookCoverId();
    #if($bookCoverId ne ""){
         my ($bookCoverImg,$mediaType)=$book->getBookCoverImg();
         if(defined $bookCoverImg){
             $thumbnail = util_resizeImg($bookCoverImg,75,100);
             $thumbnail=encode_base64($thumbnail);
         }
    #}
    return ($mediaType,$thumbnail);
}
#------------------------------------------------------------------------------
sub _genGUID{
    my $guid=`uuidgen`;
    chomp $guid;
    $guid = uc($guid);
    return $guid ;
}


tmpl_write($dbh, $cgi, $cookie, $template);

#------------------------------------------------------------------------------
