Bb-Collaborate-V3
view release on metacpan or search on metacpan
lib/Bb/Collaborate/V3/_Content.pm view on Meta::CPAN
package Bb::Collaborate::V3::_Content;
use warnings; use strict;
use Mouse;
use Carp;
use Try::Tiny;
use MIME::Base64;
use File::Basename;
extends 'Bb::Collaborate::V3';
=head1 NAME
Bb::Collaborate::V3::_Content - Base class for Presentation and Mulitmedia content
=cut
sub BUILDARGS {
my $class = shift;
my $spec = shift;
my %args;
if (defined $spec && ! ref($spec) ) {
#
# Assume a single string arguments represents the local path of a file
# to be uploaded.
#
my $content_path = $spec;
open ( my $fh, '<', $content_path)
or die "unable to open content file $content_path";
binmode $fh;
my $content = do {local $/; <$fh>};
close $fh;
die "content file is empty: $content_path"
unless length $content;
my $filename = File::Basename::basename( $content_path );
croak "unable to determine a basename for content path: $content_path"
unless length $filename;
%args = (
filename => $content_path,
content => $content,
);
}
elsif (Elive::Util::_reftype($spec) eq 'HASH') {
%args = %$spec;
}
else {
croak 'usage: '.$class.'->new( filepath | {name => $filename, content => $binary_data, ...} )';
}
if ($args{content}) {
$args{size} ||= length( $args{content} );
}
return \%args;
}
sub _freeze {
my $class = shift;
( run in 1.270 second using v1.01-cache-2.11-cpan-ceb78f64989 )