File Coverage

blib/lib/WWW/TheBestSpinner.pm
Criterion Covered Total %
statement 24 73 32.8
branch 0 20 0.0
condition 0 12 0.0
subroutine 8 20 40.0
pod 8 10 80.0
total 40 135 29.6


line stmt bran cond sub pod time code
1             package WWW::TheBestSpinner;
2              
3 1     1   21935 use strict;
  1         3  
  1         40  
4 1     1   28 use 5.008_005;
  1         4  
  1         49  
5             our $VERSION = '0.01';
6              
7 1     1   5 use Carp 'croak';
  1         7  
  1         86  
8 1     1   1260 use LWP::UserAgent;
  1         76950  
  1         39  
9 1     1   10 use URI::Escape 'uri_escape';
  1         2  
  1         79  
10 1     1   981 use MIME::Base64;
  1         841  
  1         73  
11 1     1   962 use PHP::Serialization qw(serialize unserialize);
  1         4241  
  1         83  
12              
13 1     1   9 use vars qw/$errstr/;
  1         2  
  1         824  
14 0     0 0   sub errstr { $errstr }
15              
16             sub new {
17 0     0 0   my $class = shift;
18 0 0         my $args = scalar @_ % 2 ? shift : { @_ };
19              
20 0 0         $args->{username} or croak 'username is required';
21 0 0         $args->{password} or croak 'password is required';
22              
23 0           $args->{__url} = "http://thebestspinner.com/api.php";
24              
25 0           bless $args, $class;
26             }
27              
28             sub _authenticate {
29 0     0     my ($self) = @_;
30              
31 0 0         return 1 if $self->{session};
32              
33 0           my $resp = LWP::UserAgent->new->post($self->{__url}, [
34             action => 'authenticate',
35             'format' => 'php',
36             'username' => $self->{username},
37             'password' => $self->{password},
38             ]);
39              
40 0 0         unless ($resp->is_success) {
41 0           $errstr = $resp->status_line;
42 0           return;
43             }
44              
45 0           my $result = unserialize($resp->content);
46 0 0         if ($result->{success} eq 'true') {
47 0           $self->{session} = $result->{session};
48 0           return 1;
49             } else {
50 0           $errstr = $result->{error};
51 0           return;
52             }
53             }
54              
55             sub rewriteText {
56 0     0 1   my ($self, $text, $protectedterms) = @_;
57 0   0       $self->_send_request('rewriteText', [
58             text => $text,
59             protectedterms => $protectedterms || '',
60             ]);
61             }
62              
63             sub rewriteSentences {
64 0     0 1   my ($self, $text) = @_;
65 0           $self->_send_request('rewriteSentences', [
66             text => $text,
67             ]);
68             }
69              
70             sub randomSpin {
71 0     0 1   my ($self, $text) = @_;
72 0           $self->_send_request('randomSpin', [
73             text => $text,
74             ]);
75             }
76              
77             sub identifySynonyms {
78 0     0 1   my ($self, $text, $maxsyns, $protectedterms) = @_;
79 0   0       $self->_send_request('identifySynonyms', [
      0        
80             text => $text,
81             maxsyns => $maxsyns || 3,
82             protectedterms => $protectedterms || '',
83             ]);
84             }
85              
86             sub replaceEveryonesFavorites {
87 0     0 1   my ($self, $text, $maxsyns, $quality, $protectedterms) = @_;
88 0   0       $self->_send_request('replaceEveryonesFavorites', [
      0        
      0        
89             text => $text,
90             maxsyns => $maxsyns || 3,
91             quality => $quality || 1,
92             protectedterms => $protectedterms || '',
93             ]);
94             }
95              
96             sub textCompareUniqueness {
97 0     0 1   my ($self, $text1, $text2) = @_;
98 0           $self->_send_request('textCompareUniqueness', [
99             text1 => $text1,
100             text2 => $text2,
101             ]);
102             }
103              
104             sub textCompare {
105 0     0 1   my ($self, $text1, $text2) = @_;
106 0           $self->_send_request('textCompare', [
107             text1 => $text1,
108             text2 => $text2,
109             ]);
110             }
111              
112             sub apiQueries {
113 0     0 1   my ($self) = @_;
114 0           $self->_send_request('apiQueries');
115             }
116              
117             sub _send_request {
118 0     0     my ($self, $action, $post) = @_;
119              
120 0 0         $self->_authenticate or return;
121 0           unshift @$post, (action => $action, format => 'php', session => $self->{session});
122              
123 0           my $url = $self->{__url};
124 0           my $resp = LWP::UserAgent->new->post($url, $post);
125             # use Data::Dumper; print Dumper(\$resp);
126              
127 0 0         unless ($resp->is_success) {
128 0           $errstr = $resp->status_line;
129 0           return;
130             }
131              
132 0           my $data = unserialize($resp->content);
133              
134 0 0         if ($data->{success} eq 'true') {
135 0 0         return $data->{output} if exists $data->{output};
136 0           return $data;
137             } else {
138 0           $errstr = $data->{error};
139 0           return;
140             }
141             }
142              
143             1;
144             __END__