File Coverage

blib/lib/EBook/FB2/Binary.pm
Criterion Covered Total %
statement 1 3 33.3
branch n/a
condition n/a
subroutine 1 1 100.0
pod n/a
total 2 4 50.0


line stmt bran cond sub pod time code
1             # Copyright (c) 2009, 2010 Oleksandr Tymoshenko <gonzo@bluezbox.com>
2             # All rights reserved.
3              
4             # Redistribution and use in source and binary forms, with or without
5             # modification, are permitted provided that the following conditions
6             # are met:
7             # 1. Redistributions of source code must retain the above copyright
8             # notice, this list of conditions and the following disclaimer.
9             # 2. Redistributions in binary form must reproduce the above copyright
10             # notice, this list of conditions and the following disclaimer in the
11             # documentation and/or other materials provided with the distribution.
12              
13             # THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
14             # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15             # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
16             # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
17             # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
18             # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
19             # OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
20             # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
21             # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
22             # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
23             # SUCH DAMAGE.
24              
25             package EBook::FB2::Binary;
26              
27 1     1   12035 use Moose;
  0            
  0            
28             use MIME::Base64;
29              
30             has [qw/content_type data id/] => ( isa => 'Str', is => 'rw' );
31              
32             sub load
33             {
34             my ($self, $node) = @_;
35              
36             my @nodes = $node->findnodes('@id');
37             if (@nodes) {
38             $self->id($nodes[0]->getValue());
39             }
40              
41             @nodes = $node->findnodes('@content-type');
42             if (@nodes) {
43             $self->content_type($nodes[0]->getValue());
44             }
45              
46             # XXX: eval this, it might fail with invalid data
47             my $decoded = MIME::Base64::decode($node->string_value());
48             $self->data($decoded)
49             }
50              
51             1;
52              
53             __END__
54             =head1 NAME
55              
56             EBook::FB2::Binary
57              
58             =head1 SYNOPSIS
59              
60             EBook::FB2::Binary - class that represents <binary> element
61              
62             =head1 SUBROUTINES/METHODS
63              
64             =over 4
65              
66             =item id()
67              
68             Returns id of binary element
69              
70             =item data()
71              
72             Returns content of binary element (base64-decoded)
73              
74             =item content_type()
75              
76             Returns content-type of binary element
77              
78             =back
79              
80             =head1 AUTHOR
81              
82             Oleksandr Tymoshenko, E<lt>gonzo@bluezbox.comE<gt>
83              
84             =head1 BUGS
85              
86             Please report any bugs or feature requests to E<lt>gonzo@bluezbox.comE<gt>
87              
88             =head1 LICENSE AND COPYRIGHT
89              
90             Copyright 2009, 2010 Oleksandr Tymoshenko.
91              
92             L<http://bluezbox.com>
93              
94             This module is free software; you can redistribute it and/or
95             modify it under the terms of the BSD license. See the F<LICENSE> file
96             included with this distribution.