line |
stmt |
bran |
cond |
sub |
pod |
time |
code |
1
|
|
|
|
|
|
|
package Locale::Utils::Autotranslator::ApiMymemoryTranslatedNet; ## no critic (TidyCode)
|
2
|
|
|
|
|
|
|
|
3
|
2
|
|
|
2
|
|
3838
|
use strict;
|
|
2
|
|
|
|
|
5
|
|
|
2
|
|
|
|
|
59
|
|
4
|
2
|
|
|
2
|
|
10
|
use warnings;
|
|
2
|
|
|
|
|
4
|
|
|
2
|
|
|
|
|
56
|
|
5
|
2
|
|
|
2
|
|
932
|
use HTML::Entities qw(decode_entities);
|
|
2
|
|
|
|
|
11381
|
|
|
2
|
|
|
|
|
145
|
|
6
|
2
|
|
|
2
|
|
996
|
use HTTP::Request::Common qw(GET);
|
|
2
|
|
|
|
|
39591
|
|
|
2
|
|
|
|
|
141
|
|
7
|
2
|
|
|
2
|
|
671
|
use JSON qw(decode_json);
|
|
2
|
|
|
|
|
8183
|
|
|
2
|
|
|
|
|
11
|
|
8
|
2
|
|
|
2
|
|
1608
|
use LWP::UserAgent;
|
|
2
|
|
|
|
|
47239
|
|
|
2
|
|
|
|
|
69
|
|
9
|
2
|
|
|
2
|
|
15
|
use Moo;
|
|
2
|
|
|
|
|
5
|
|
|
2
|
|
|
|
|
13
|
|
10
|
2
|
|
|
2
|
|
1167
|
use MooX::StrictConstructor;
|
|
2
|
|
|
|
|
13241
|
|
|
2
|
|
|
|
|
15
|
|
11
|
2
|
|
|
2
|
|
23297
|
use URI;
|
|
2
|
|
|
|
|
5
|
|
|
2
|
|
|
|
|
53
|
|
12
|
2
|
|
|
2
|
|
448
|
use namespace::autoclean;
|
|
2
|
|
|
|
|
11139
|
|
|
2
|
|
|
|
|
11
|
|
13
|
|
|
|
|
|
|
|
14
|
|
|
|
|
|
|
our $VERSION = '1.010';
|
15
|
|
|
|
|
|
|
|
16
|
|
|
|
|
|
|
extends qw(
|
17
|
|
|
|
|
|
|
Locale::Utils::Autotranslator
|
18
|
|
|
|
|
|
|
);
|
19
|
|
|
|
|
|
|
|
20
|
|
|
|
|
|
|
has user_agent => (
|
21
|
|
|
|
|
|
|
is => 'ro',
|
22
|
|
|
|
|
|
|
duck_type => 'request',
|
23
|
|
|
|
|
|
|
lazy => 1,
|
24
|
|
|
|
|
|
|
default => sub { LWP::UserAgent->new },
|
25
|
|
|
|
|
|
|
);
|
26
|
|
|
|
|
|
|
|
27
|
|
|
|
|
|
|
sub translate_text {
|
28
|
11
|
|
|
11
|
1
|
24
|
my ( $self, $msgid ) = @_;
|
29
|
|
|
|
|
|
|
|
30
|
11
|
|
|
|
|
297
|
$self->comment('translated by: api.mymemory.translated.net');
|
31
|
11
|
|
|
|
|
497
|
my $uri = URI->new('http://api.mymemory.translated.net/get');
|
32
|
11
|
|
|
|
|
7788
|
$uri->query_form(
|
33
|
|
|
|
|
|
|
q => $msgid,
|
34
|
|
|
|
|
|
|
langpair => join q{|}, $self->developer_language, $self->language,
|
35
|
|
|
|
|
|
|
);
|
36
|
11
|
|
|
|
|
1498
|
my $response = $self->user_agent->request(
|
37
|
|
|
|
|
|
|
GET
|
38
|
|
|
|
|
|
|
$uri->as_string,
|
39
|
|
|
|
|
|
|
'User-Agent' => 'Mozilla/5.0 (Windows NT 5.1; rv:26.0) Gecko/20100101 Firefox/26.0',
|
40
|
|
|
|
|
|
|
'Accept' => 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
|
41
|
|
|
|
|
|
|
'Accept-Language' => 'de-de,en-us;q=0.7,en;q=0.3',
|
42
|
|
|
|
|
|
|
'Accept-Encoding' => 'gzip, deflate',
|
43
|
|
|
|
|
|
|
'DNT' => 1,
|
44
|
|
|
|
|
|
|
'Connection' => 'keep-alive',
|
45
|
|
|
|
|
|
|
'Cache-Control' => 'max-age=0',
|
46
|
|
|
|
|
|
|
);
|
47
|
11
|
50
|
|
|
|
5132
|
$response->is_success
|
48
|
|
|
|
|
|
|
or die $response->status_line, "\n";
|
49
|
11
|
|
|
|
|
59
|
my $json = decode_json( $response->decoded_content );
|
50
|
|
|
|
|
|
|
$json->{responseStatus} eq '200'
|
51
|
11
|
50
|
|
|
|
540
|
or die $json->{responseDetails}, "\n";
|
52
|
|
|
|
|
|
|
|
53
|
|
|
|
|
|
|
# Not clear why decode_entities here.
|
54
|
|
|
|
|
|
|
# Looks like bad interface.
|
55
|
11
|
|
|
|
|
93
|
return decode_entities( $json->{responseData}->{translatedText} );
|
56
|
|
|
|
|
|
|
}
|
57
|
|
|
|
|
|
|
|
58
|
|
|
|
|
|
|
__PACKAGE__->meta->make_immutable;
|
59
|
|
|
|
|
|
|
|
60
|
|
|
|
|
|
|
1;
|
61
|
|
|
|
|
|
|
|
62
|
|
|
|
|
|
|
__END__
|