Log-FreeSWITCH-Line

 view release on metacpan or  search on metacpan

Line/Data.pm  view on Meta::CPAN

package Log::FreeSWITCH::Line::Data;

use strict;
use warnings;

use English;
use Error::Pure::Always;
use Error::Pure qw(err);
use Mo qw(builder is required);

our $VERSION = 0.08;

has date => (
	'is' => 'ro',
	'required' => 1,
);
has datetime_obj => (
	'is' => 'ro',
	'builder' => '_datetime',
);
has file => (
	'is' => 'ro',
	'required' => 1,
);
has file_line => (
	'is' => 'ro',
	'required' => 1,
);
has message => (
	'is' => 'ro',
);
has raw => (
	'is' => 'rw',
);
has time => (
	'is' => 'ro',
	'required' => 1,
);
has type => (
	'is' => 'ro',
	'required' => 1,
);

# Create DateTime object.
sub _datetime {
	my $self = shift;
	eval {
		require DateTime;
	};
	if ($EVAL_ERROR) {
		err "Cannot load 'DateTime' class.",
			'Error', $EVAL_ERROR;
	}
	my ($year, $month, $day) = split m/-/ms, $self->date;
	my ($hour, $min, $sec_mili) = split m/:/ms, $self->time;
	my ($sec, $mili) = split m/\./ms, $sec_mili;
	if (! defined $mili) {
		$mili = 0;
	}
	my $dt = eval {
		DateTime->new(
			'year' => $year,
			'month' => $month,
			'day' => $day,
			'hour' => $hour,
			'minute' => $min,
			'second' => $sec,
			'nanosecond' => $mili * 1000,
		);
	};
	if ($EVAL_ERROR) {
		err 'Cannot create DateTime object.',
			'Error', $EVAL_ERROR;
	}
	return $dt;
}

1;

__END__

=pod

=encoding utf8

=head1 NAME

Log::FreeSWITCH::Line::Data - Data object which represents FreeSWITCH log line.

=head1 SYNOPSIS

 use Log::FreeSWITCH::Line::Data;

 my $obj = Log::FreeSWITCH::Line::Data->new(%params);
 my $date = $obj->date;
 my $datetime_o = $obj->datetime_obj;
 my $file = $obj->file;
 my $file_line = $obj->file_line;
 my $message = $obj->message;
 my $raw = $obj->raw($raw);
 my $time = $obj->time;
 my $type = $obj->type;

=head1 METHODS

=head2 C<new>

 my $obj = Log::FreeSWITCH::Line::Data->new(%params);

Constructor.

Returns instance of object.

=over 8

=item * C<date>



( run in 0.434 second using v1.01-cache-2.11-cpan-71847e10f99 )