File Coverage

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


line stmt bran cond sub pod time code
1 1     1   5799 use strict;
  1         8  
  1         77  
2 1     1   12 use warnings;
  1         13  
  1         127  
3              
4             package Apache::Tika;
5              
6 1     1   1977 use Encode qw/decode_utf8/;
  1         14629  
  1         117  
7 1     1   24794 use LWP::UserAgent;
  1         121387  
  1         13  
8 1     1   790 use JSON::MaybeXS();
  1         53018  
  1         756  
9              
10             our $VERSION = '0.06';
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) = @_;
56 0 0         my $meta = $self->_request(
57             'put',
58             'rmeta',
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;