Email-Assets

 view release on metacpan or  search on metacpan

lib/Email/Assets/File.pm  view on Meta::CPAN

relative path and filename for a file

=head1 METHODS

=head2 filename

Object accessor method, returns full filename and path (which may not exist if the asset was created from data instead of a file).

=head2 mime_type

Object accessor method, returns MIME type / content-type of the asset

=head2 BUILD

moose method called by constructor, handles validating path to file

=head2 inline_data

Object method to get file as inline-data string, including content type and base64 encoded file contents

<img src="data:[% assets.include('static/foo.gif', {inline_only => 1}).inline_data -%]"> 

t/base64.t  view on Meta::CPAN

my $base64_url_asset = $assets->include_base64($base_64_url_image, 'codeworks.jpg', { url_encoding => 1 } );
is($base64_url_asset->mime_type, 'image/jpeg', 'detected mime type ok');
my $fh = File::Temp->new();
my $fname = $fh->filename;
print $fh decode_base64($base64_url_asset->file_as_base64);
close $fh;
ok(compare($fname, 't/aa/codeworks.jpg') == 0, 'file matches from base64 url data after decoding');

my $mime_part = $base64_url_asset->as_mime_part;
isa_ok($mime_part, 'MIME::Lite');
is($mime_part->attr("content-type"), 'image/jpeg', 'content type correct');

my $mime_body_string = $mime_part->body_as_string;

eq_or_diff($mime_body_string, $base64_url_asset->file_as_base64, "mime lite output matches");

$fh = File::Temp->new();
$fname = $fh->filename;
print $fh decode_base64($mime_body_string);
close $fh;
ok(compare($fname, 't/aa/codeworks.jpg') == 0, 'file matches from base64 url data after decoding');

t/basic.t  view on Meta::CPAN

# This asset won't get attached twice, as Email::Assets will ignore repeats of a path
my $cid = $assets->include($existing_image)->cid;

is ($cid, $asset->cid, 'cid matches for same image');

my $png_filename;
# Or you can iterate (in order)
for my $asset ($assets->exports) {
  my $mime_part = $asset->as_mime_part;
  isa_ok($mime_part, 'MIME::Lite');
  is($mime_part->attr("content-type"), 'image/png', 'content type correct');

  my $data_string = $asset->inline_data;
  my ($content_type, $encoding) = $data_string =~ m/(.*?);(.*?),.*/m;
  is($content_type, 'image/png', 'inline data content type correct');
  is($encoding, 'base64', 'inline data encoding type correct');
  my $fh = File::Temp->new();
  my $fname = $fh->filename;
  $data_string =~ s|image/png;base64,||;
  print $fh decode_base64($data_string);
  close $fh;

t/basic.t  view on Meta::CPAN

$assets = Email::Assets->new( base => [ @test_paths ] );

my $base64 = $asset->file_as_base64;

my $new_asset = $assets->include_base64($base64, 'nosuchfile.png');

is($new_asset->mime_type, 'image/x-png', 'detected mime type ok');
is($new_asset->filename, 'nosuchfile.png');
my $mime_part = $new_asset->as_mime_part;
isa_ok($mime_part, 'MIME::Lite');
is($mime_part->attr("content-type"), 'image/x-png', 'content type correct');

my $fh = File::Temp->new();
my $fname = $fh->filename;
print $fh decode_base64($new_asset->file_as_base64);
close $fh;
ok(compare($fname, $png_filename) == 0, 'file matches from base64 data after decoding');

isa_ok(shift($assets->to_mime_parts), 'MIME::Lite', 'to_mime_parts works ok');

done_testing();



( run in 2.428 seconds using v1.01-cache-2.11-cpan-524268b4103 )