App-Spoor

 view release on metacpan or  search on metacpan

lib/App/Spoor/TransmissionFormatter.pm  view on Meta::CPAN

package App::Spoor::TransmissionFormatter;

use v5.10;
use strict;
use warnings;

=head1 NAME

App::Spoor::TransmissionFormatter

=head1 VERSION

Version 0.01

=cut

our $VERSION = '0.01';


=head1 SYNOPSIS

Transforms the format of an item so that it is suitable for submission to the Spoor API.

=head1 SUBROUTINES

=head2 format

Takes a hash representation of a hash as input and returns an entry converted into a format suitable for submission to
the Spoor API.

  use Sys::Hostname;
  my $host = hostname;

  my %login_entry = (
    type => 'login',
    event => 'login',
    log_time => DateTime->new(
      year => 2018,
      month => 9,
      day => 19,
      hour => 16,
      minute => 2,
      second => 36,
      time_zone => '+0000'
    )->epoch(),
    scope => 'webmaild',
    ip => '10.10.10.10',
    credential => 'rorymckinley@blah.capefox.co',
    possessor => 'blahuser',
    status => 'success',
    context => 'foobar'
  );

  $formatted_entry = App::Spoor::TransmissionFormatter.format(\%login_entry, $host);

=cut

sub format {
  my $entry = shift;
  my $host = shift;

  if($entry->{event} eq 'login') {
    {
      type => $entry->{event},
      time => $entry->{log_time},
      ip => $entry->{ip},
      mailbox_address => $entry->{credential},
      context => $entry->{context},
      host => $host
    }
  } elsif($entry->{event} eq 'forward_added_partial_ip') {
    {
      type => $entry->{event},
      time => $entry->{log_time},
      ip => $entry->{ip},
      mailbox_address => $entry->{credential},
      context => $entry->{context},
      host => $host
    }
  } elsif($entry->{event} eq 'forward_added_partial_recipient') {
    {
      type => $entry->{event},
      time => $entry->{log_time},
      mailbox_address => $entry->{email},
      forward_recipient => $entry->{forward_to},
      context => $entry->{context},
      host => $host
    }
  } elsif($entry->{event} eq 'forward_removed') {
    {
      type => $entry->{event},
      time => $entry->{log_time},
      mailbox_address => $entry->{credential},
      forward_recipient => $entry->{forward_recipient},
      ip => $entry->{ip},
      context => $entry->{context},
      host => $host



( run in 0.596 second using v1.01-cache-2.11-cpan-d8267643d1d )