File Coverage

blib/lib/Intellexer/API.pm
Criterion Covered Total %
statement 17 221 7.6
branch 0 2 0.0
condition n/a
subroutine 6 36 16.6
pod 27 28 96.4
total 50 287 17.4


line stmt bran cond sub pod time code
1             package Intellexer::API;
2              
3 1     1   426314 use v5.36;
  1         4  
4 1     1   1070 use LWP::UserAgent;
  1         82398  
  1         151  
5 1     1   1511 use Path::Tiny;
  1         22353  
  1         181  
6 1     1   11 use URI;
  1         4  
  1         45  
7 1     1   6 use Carp;
  1         3  
  1         70  
8 1     1   6 use JSON;
  1         2  
  1         12  
9              
10              
11             our $VERSION = q{0.92};
12              
13             my $json = JSON->new()->pretty(1);
14             my $ua = LWP::UserAgent->new();
15              
16 0     0 0   sub new($package, $api_key){
  0            
  0            
  0            
17 0           my $self = {
18             'api_key' => $api_key,
19             'base' => 'http://api.intellexer.com/',
20             };
21              
22 0           return bless $self, $package;
23             }
24              
25             ## TopicModeling
26 0     0 1   sub getTopicsFromUrl($self, $url){
  0            
  0            
  0            
27 0           my $uri_obj = $self->_build_url(
28             'getTopicsFromUrl?',
29             'url'=> $url
30             );
31 0           return $self->_react( $ua->get($uri_obj) );
32              
33             }
34              
35 0     0 1   sub getTopicsFromFile($self, $file){
  0            
  0            
  0            
36 0           my $uri_obj = $self->_build_url(
37             'getTopicsFromFile?');
38              
39 0           return $self->_react(
40             $ua->post(
41             $uri_obj,
42             Content_Type => 'form-data',
43             Content => [ path($file)->basename =>[$file] ],
44             )
45             );
46             }
47              
48 0     0 1   sub getTopicsFromText($self, $text){
  0            
  0            
  0            
49 0           my $uri_obj = $self->_build_url(
50             'getTopicsFromText?');
51              
52 0           return $self->_react(
53             $ua->post(
54             $uri_obj,
55             Content => $text
56             )
57             );
58             }
59              
60             ## Linguistic Processor
61 0     0 1   sub analyzeText($self, $text, %params){
  0            
  0            
  0            
  0            
62 0           my $uri_obj = $self->_build_url(
63             'analyzeText?',
64             %params
65             );
66 0           return $self->_react(
67             $ua->post(
68             $uri_obj,
69             Content => $text,
70             )
71             );
72             }
73              
74             ## Sentiment Analyzer
75 0     0 1   sub analyzeSentiments($self, $reviews, %params){
  0            
  0            
  0            
  0            
76 0           my $uri_obj = $self->_build_url(
77             'analyzeSentiments?',
78             %params
79             );
80              
81 0           return $self->_react(
82             $ua->post(
83             $uri_obj,
84             'Content-Type' => 'application/json',
85             Content => $json->encode($reviews)
86             )
87             );
88             }
89              
90 0     0 1   sub sentimentAnalyzerOntologies($self){
  0            
  0            
91 0           my $uri_obj = $self->_build_url('sentimentAnalyzerOntologies?');
92 0           return $self->_react( $ua->get($uri_obj) );
93             }
94              
95             ## Named Entity Recognizer
96 0     0 1   sub recognizeNe($self, %params){
  0            
  0            
  0            
97 0           my $uri_obj = $self->_build_url(
98             'recognizeNe?',
99             %params
100             );
101 0           return $self->_react( $ua->get($uri_obj) );
102             }
103              
104 0     0 1   sub recognizeNeFileContent($self, $file, %params){
  0            
  0            
  0            
  0            
105              
106 0           my $uri_obj= $self->_build_url(
107             'recognizeNeFileContent?',
108             %params
109             );
110              
111 0           return $self->_react(
112             $ua->post(
113             $uri_obj,
114             Content_Type => 'multipart/form-data',
115             Content => [file => [$file,] ],
116             )
117             );
118             }
119              
120 0     0 1   sub recognizeNeText($self, $text, %params){
  0            
  0            
  0            
  0            
121 0           my $uri_obj = $self->_build_url(
122             'recognizeNeText?',
123             %params
124             );
125              
126 0           return $self->_react(
127             $ua->post(
128             $uri_obj,
129             Content => $text
130             )
131             );
132             }
133              
134             ## Summarizer
135 0     0 1   sub summarize($self, $url, %params){
  0            
  0            
  0            
  0            
136 0           my $uri_obj = $self->_build_url(
137             'summarize?',
138             'url'=> $url,
139             %params,
140             );
141 0           return $self->_react( $ua->get($uri_obj) );
142             }
143              
144 0     0 1   sub summarizeText($self, $text, %params){
  0            
  0            
  0            
  0            
145 0           my $uri_obj = $self->_build_url(
146             'summarizeText?',
147             %params,
148             );
149              
150 0           return $self->_react(
151             $ua->post(
152             $uri_obj,
153             Content => $text,
154             )
155             );
156             }
157              
158 0     0 1   sub summarizeFileContent($self, $file, %params){
  0            
  0            
  0            
  0            
159              
160 0           my $uri_obj= $self->_build_url(
161             'summarizeFileContent?',
162             'filename' => path($file)->basename,
163             %params
164             );
165              
166 0           return $self->_react(
167             $ua->post(
168             $uri_obj,
169             Content_Type => 'multipart/form-data',
170             Content => [path($file)->basename => [$file,] ],
171             )
172             );
173             }
174              
175             ## Multi-Document Summarizer
176 0     0 1   sub multiUrlSummary($self, $url_list, %params){
  0            
  0            
  0            
  0            
177 0           my $uri_obj = $self->_build_url(
178             'multiUrlSummary?',
179             %params,
180             );
181              
182 0           return $self->_react(
183             $ua->post(
184             $uri_obj,
185             'content-type' => 'application/json',
186             Content => $json->encode($url_list),
187             )
188             );
189              
190             }
191              
192             ## Comparator
193 0     0 1   sub compareText($self, $text1, $text2, %params){
  0            
  0            
  0            
  0            
  0            
194 0           my $uri_obj = $self->_build_url(
195             'compareText?',
196             %params,
197             );
198              
199 0           return $self->_react(
200             $ua->post(
201             $uri_obj,
202             'content-type' => 'application/json',
203             Content => $json->encode({'text1' => $text1, 'text2' => $text2}),
204             )
205             );
206             }
207              
208 0     0 1   sub compareUrls($self, $url1, $url2, %params){
  0            
  0            
  0            
  0            
  0            
209 0           my $uri_obj = $self->_build_url(
210             'compareUrls?',
211             'url1' => $url1,
212             'url2' => $url2,
213             %params,
214             );
215              
216 0           return $self->_react(
217             $ua->get(
218             $uri_obj,
219             'content-type' => 'application/json',
220             )
221             );
222              
223             }
224              
225 0     0 1   sub compareUrlwithFile($self, $url, $file, %params){
  0            
  0            
  0            
  0            
  0            
226 0           my $uri_obj = $self->_build_url(
227             'compareUrlwithFile?',
228             'url' => $url,
229             'filename' => path($file)->basename,
230             %params,
231             );
232              
233 0           return $self->_react(
234             $ua->post(
235             $uri_obj,
236             'content-type' => 'multipart/form-data',
237             Content => [path($file)->basename => [$file,] ],
238             )
239             );
240             }
241              
242 0     0 1   sub compareFiles($self, $file1, $file2){
  0            
  0            
  0            
  0            
243 0           my $size = -s $file1;
244 0           my $uri_obj = $self->_build_url(
245             'compareFiles?',
246             'filename1' => path($file1)->basename,
247             'filename2' => path($file2)->basename,
248             'firstFileSize' => $size,
249             );
250              
251 0           return $self->_react(
252             $ua->post(
253             $uri_obj,
254             'content-type' => 'multipart/form-data',
255             Content => [ path($file1)->basename =>[$file1],
256             path($file2)->basename =>[$file2] ],
257             )
258             );
259             }
260              
261             ## Clusterizer
262 0     0 1   sub clusterize($self, $url, %params){
  0            
  0            
  0            
  0            
263 0           my $uri_obj = $self->_build_url(
264             'clusterize?',
265             'url'=> $url,
266             %params,
267             );
268 0           return $self->_react( $ua->get($uri_obj) );
269             }
270              
271 0     0 1   sub clusterizeText($self, $text, %params){
  0            
  0            
  0            
  0            
272 0           my $uri_obj = $self->_build_url(
273             'clusterizeText?',
274             %params,
275             );
276              
277 0           return $self->_react(
278             $ua->post(
279             $uri_obj,
280             Content => $text,
281             )
282             );
283             }
284              
285 0     0 1   sub clusterizeFileContent($self, $file, %params){
  0            
  0            
  0            
  0            
286 0           my $size = -s $file;
287 0           my $uri_obj= $self->_build_url(
288             'clusterizeFileContent?',
289             'filename' => path($file)->basename,
290             'fileSize' => $size,
291             %params
292             );
293              
294 0           return $self->_react(
295             $ua->post(
296             $uri_obj,
297             Content_Type => 'multipart/form-data',
298             Content => [path($file)->basename => [$file,] ],
299             )
300             );
301             }
302              
303             ## Natural Language Interface
304 0     0 1   sub convertQueryToBool($self, $text){
  0            
  0            
  0            
305 0           my $uri_obj = $self->_build_url(
306             'convertQueryToBool?',
307             );
308              
309 0           return $self->_react(
310             $ua->post(
311             $uri_obj,
312             Content => $text,
313             )
314             );
315             }
316              
317             ## Preformator
318 0     0 1   sub supportedDocumentStructures($self){
  0            
  0            
319 0           my $uri_obj = $self->_build_url(
320             'supportedDocumentStructures?',
321             );
322              
323 0           return $self->_react(
324             $ua->get(
325             $uri_obj,
326             )
327             );
328             }
329              
330 0     0 1   sub supportedDocumentTopics($self){
  0            
  0            
331 0           my $uri_obj = $self->_build_url(
332             'supportedDocumentTopics?',
333             );
334              
335 0           return $self->_react(
336             $ua->get(
337             $uri_obj,
338             )
339             );
340             }
341              
342 0     0 1   sub parse($self, $url, %params){
  0            
  0            
  0            
  0            
343 0           my $uri_obj = $self->_build_url(
344             'parse?',
345             'url'=> $url,
346             %params,
347             );
348 0           return $self->_react( $ua->get($uri_obj) );
349             }
350              
351 0     0 1   sub parseFileContent($self, $file){
  0            
  0            
  0            
352 0           my $size = -s $file;
353 0           my $uri_obj= $self->_build_url(
354             'parseFileContent?',
355             'filename' => path($file)->basename,
356             );
357              
358 0           return $self->_react(
359             $ua->post(
360             $uri_obj,
361             Content_Type => 'multipart/form-data',
362             Content => [path($file)->basename => [$file,] ],
363             )
364             );
365             }
366              
367             ## Language Recognizer
368 0     0 1   sub recognizeLanguage($self, $text){
  0            
  0            
  0            
369 0           my $uri_obj = $self->_build_url(
370             'recognizeLanguage?',
371             );
372              
373 0           return $self->_react(
374             $ua->post(
375             $uri_obj,
376             Content => $text,
377             )
378             );
379             }
380              
381             ## SpellChecker
382 0     0 1   sub checkTextSpelling($self, $text, %params){
  0            
  0            
  0            
  0            
383 0           my $uri_obj = $self->_build_url(
384             'checkTextSpelling?',
385             %params,
386             );
387              
388 0           return $self->_react(
389             $ua->post(
390             $uri_obj,
391             Content => $text,
392             )
393             );
394             }
395              
396             ## Support functions
397              
398             # build a URI object with necessary form data
399 0     0     sub _build_url( $self, $endpoint, %form){
  0            
  0            
  0            
  0            
400 0           my $url = URI->new( $self->{base}.$endpoint);
401 0           $form{'apikey'} = $self->{api_key};
402 0           $url->query_form(\%form);
403 0           return $url->as_string;
404             #return $url;
405             }
406              
407 0     0     sub _react($self, $response){
  0            
  0            
  0            
408 0 0         if ($response->is_success) {
409 0           return $json->decode($response->decoded_content);
410             }
411             else {
412 0           croak $response->status_line."\n".$response->content;
413             }
414             }
415              
416              
417             1;
418              
419             # ABSTRACT: Perl API client for the Intellexer, a webservice that, "enables developers to embed Intellexer semantics products using XML or JSON."
420              
421             __END__