package BookPub::RDAS::Parser::ProductSearch::Google::JSON;

use JSON::XS;

use lib '/app/tools/rdas/lib';
use base 'RDAS::Parser::Item';

use lib '/app/tools/common/lib';
use Common::UTF8;

use Data::Dumper;

sub value {
    my $self  = shift;
    my $token = $self->token();

    return unless ($token);

    my @scripts = $token->find('script');
    my $jsonScript;

    foreach my $script (@scripts) {
        my $html = $script->as_HTML();
        if ( $html && $html =~ /_OC_RunWsCollection/ ) {
            $jsonScript = $html;
            last;
        }
    }

    return unless ($jsonScript);

    Log->debug("Parsing JSON Response");

    $jsonScript =~ s/<script type="text\/javascript">_OC_RunWsCollection\(//;

    #$jsonScript =~ s/\);<\/script>//;
    $jsonScript =~ s/, \{.*//;

    Log->debug($jsonScript);

    my $jsonObj = $coder = JSON::XS->new();

    my $json = $jsonObj->decode($jsonScript);
    Log->debug( Dumper $json );

    my $volumeCount = scalar @{ $json->{volumes} } if ( $json && $json->{volumes} );
    Log->debug("Volume Count: $volumeCount") if ( defined($volumeCount) );

    if ($volumeCount) {
        my $volume = $json->{volumes}->[0];
        return $self->_value($volume);
    } else {
        Log->info("No volume information found");
        return undef;
    }
}

sub _value { die "overload" }

1;
