package Common::Amazon::SQS::OrchardTransferEvents;

use strict;
use warnings;

use File::Basename;

use lib '/app/tools/common/lib';
use base 'Common::Amazon::SQS';

sub qname { 'Orchard-Transfer-Events' }

sub parse_message {
    my $self    = shift;
    my $message = shift;

    my $href = $self->message_ref($message);
    my $data;
    foreach my $rec ( @{ $href->{'Records'} } ) {
        my $file = $rec->{'s3'}->{'object'};
        my $path = File::Basename::dirname( $file->{'key'} );
        my $base = File::Basename::basename( $file->{'key'} );

        my ($orchardClientId) = $path =~ m!.*/([0-9].*?)_!;

        push @{$data},
          {
            'bucket_name'       => $rec->{'s3'}->{'bucket'}->{'name'},
            'bucket_owner'      => $rec->{'s3'}->{'bucket'}->{'ownerIdentity'}->{'principalId'},
            'bucket_arn'        => $rec->{'s3'}->{'bucket'}->{'arn'},
            'orchard_client_id' => $orchardClientId,
            'filepath'          => $path,
            'filename'          => $base,
            'filesize_1k_block' => int( $file->{'size'} / 1024 ),
            'fileseq'           => $file->{'sequencer'},
            'md5sum'            => $file->{'eTag'},
            'event_type'        => $rec->{'eventName'},
            'event_time'        => $self->parse_timestamp( $rec->{'eventTime'} ),
            'event_user'        => $rec->{'userIdentity'}->{'principalId'},
          };
    }
    $data;
}

1;
