File Coverage

blib/lib/Apache/Tika.pm
Criterion Covered Total %
statement 15 36 41.6
branch 0 8 0.0
condition 0 5 0.0
subroutine 5 12 41.6
pod 6 6 100.0
total 26 67 38.8


line stmt bran cond sub pod time code
1 1     1   3615 use strict;
  1         20  
  1         53  
2 1     1   9 use warnings;
  1         9  
  1         100  
3              
4             package Apache::Tika;
5              
6 1     1   506 use Encode qw/decode_utf8/;
  1         7966  
  1         86  
7 1     1   524 use LWP::UserAgent;
  1         34936  
  1         17  
8 1     1   396 use JSON::MaybeXS();
  1         4655  
  1         387  
9              
10             our $VERSION = '0.07';
11              
12             sub new {
13 0     0 1   my ($this, %pars) = @_;
14              
15 0           my $self = bless {}, $this;
16 0   0       $self->{ua} = $pars{ua} // LWP::UserAgent->new();
17 0   0       $self->{url} = $pars{url} // 'http://localhost:9998';
18 0           $self->{json} = JSON::MaybeXS->new();
19              
20 0           return $self;
21             }
22              
23             sub _request {
24 0     0     my ($self, $method, $path, $headers, $bodyBytes) = @_;
25              
26             # Perform request
27             my $response = $self->{ua}->$method(
28 0           $self->{url} . '/' . $path,
29             %$headers,
30             Content => $bodyBytes
31             );
32              
33             # Check for errors
34             # TODO
35              
36 0           return decode_utf8($response->decoded_content(charset => 'none'));
37             }
38              
39             sub meta {
40 0     0 1   my ($self, $bytes, $contentType) = @_;
41 0 0         my $meta = $self->_request(
42             'put',
43             'meta',
44             {
45             'Accept' => 'application/json',
46             $contentType? ('Content-type' => $contentType) : ()
47             },
48             $bytes
49             );
50              
51 0           return $self->{json}->decode($meta);
52             }
53              
54             sub rmeta {
55 0     0 1   my ($self, $bytes, $contentType, $format) = @_;
56 0 0         my $meta = $self->_request(
    0          
57             'put',
58             'rmeta' . ($format? "/$format" : ''),
59             {
60             'Accept' => 'application/json',
61             $contentType? ('Content-type' => $contentType) : ()
62             },
63             $bytes
64             );
65              
66 0           return $self->{json}->decode($meta);
67             }
68              
69             sub tika {
70 0     0 1   my ($self, $bytes, $contentType) = @_;
71 0 0         return $self->_request(
72             'put',
73             'tika',
74             {
75             'Accept' => 'text/plain',
76             $contentType? ('Content-type' => $contentType) : ()
77             },
78             $bytes
79             );
80             }
81              
82             sub detect_stream {
83 0     0 1   my ($self, $bytes) = @_;
84 0           return $self->_request(
85             'put',
86             'detect/stream',
87             {'Accept' => 'text/plain'},
88             $bytes
89             );
90             }
91              
92             sub language_stream {
93 0     0 1   my ($self, $bytes) = @_;
94 0           return $self->_request(
95             'put',
96             'language/stream',
97             {'Accept' => 'text/plain'},
98             $bytes
99             );
100             }
101              
102             1;