|
|
|
@ -20,11 +20,19 @@ has id => (is => 'rw', required => 1); |
|
|
|
|
has width => (is => 'rw', required => 1); |
|
|
|
|
has height => (is => 'rw', required => 1); |
|
|
|
|
|
|
|
|
|
has _cached_data => (is => 'rw', default => undef); |
|
|
|
|
|
|
|
|
|
sub render($this, $container) |
|
|
|
|
{ |
|
|
|
|
# hard coded into external URL mode |
|
|
|
|
say STDERR $this->{_cached_data} if $DEBUG; |
|
|
|
|
my $image_element = $container->image(id => $this->{id}); |
|
|
|
|
$image_element->{href} = $this->{fetch} ? $this->_fetch_base64() : $this->{source}; |
|
|
|
|
my $href = $this->{source}; |
|
|
|
|
if ($this->{fetch}) |
|
|
|
|
{ |
|
|
|
|
$this->_fetch_base64 unless defined($this->{_cached_data}); |
|
|
|
|
$href = $this->{_cached_data}; |
|
|
|
|
} |
|
|
|
|
$image_element->{href} = $href; |
|
|
|
|
$image_element->{width} = $this->{width} if defined($this->{width}); |
|
|
|
|
$image_element->{height} = $this->{height} if defined($this->{height}); |
|
|
|
|
return $image_element; |
|
|
|
@ -37,7 +45,8 @@ sub _fetch_base64($this) |
|
|
|
|
my $response = $USER_AGENT->get($this->{source}); |
|
|
|
|
my $content_type = $response->headers->content_type; |
|
|
|
|
my $encoded_content = encode_base64($response->content); |
|
|
|
|
return "data:$content_type;base64, $encoded_content"; |
|
|
|
|
$this->{_cached_data} = "data:$content_type;base64, $encoded_content"; |
|
|
|
|
return $this->{_cached_data}; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
sub DEBUG { $DEBUG = 1; } |
|
|
|
|