From 9b1cf93af934967318903723e5d32c6754527475 Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Tue, 12 May 2020 18:30:03 +0000 Subject: [PATCH] chore(release): 2.9.0 [skip ci] # [2.9.0](https://github.com/hexonet/perl-sdk/compare/v2.8.1...v2.9.0) (2020-05-12) ### Features * **logger:** possibility to override debug mode's default logging mechanism. See README.md ([038cc0c](https://github.com/hexonet/perl-sdk/commit/038cc0cd8657e0b3e1e30eb6655ff6f61ad68a41)) --- HISTORY.md | 7 + WebService-Hexonet-Connector-latest.tar.gz | Bin 659931 -> 700699 bytes ...exonet-Connector-APIClient-pm--branch.html | 69 +- ...net-Connector-APIClient-pm--condition.html | 11 +- ...et-Connector-APIClient-pm--subroutine.html | 77 +- ...ervice-Hexonet-Connector-APIClient-pm.html | 800 +++++++++--------- ...ebService-Hexonet-Connector-Column-pm.html | 42 +- ...e-Hexonet-Connector-Logger-pm--branch.html | 31 + ...xonet-Connector-Logger-pm--subroutine.html | 37 + ...ebService-Hexonet-Connector-Logger-pm.html | 55 ++ ...ebService-Hexonet-Connector-Record-pm.html | 26 +- ...Service-Hexonet-Connector-Response-pm.html | 342 ++++---- ...e-Hexonet-Connector-ResponseParser-pm.html | 80 +- ...Hexonet-Connector-ResponseTemplate-pm.html | 88 +- ...-Connector-ResponseTemplateManager-pm.html | 72 +- ...ice-Hexonet-Connector-SocketConfig-pm.html | 100 +-- ...b-lib-WebService-Hexonet-Connector-pm.html | 22 +- cover_db/cover.14 | 2 +- cover_db/coverage.html | 9 +- cover_db/digests | 2 +- .../1583fe367ca2a568f400de5d0bd55489 | 1 + ... => 1583fe367ca2a568f400de5d0bd55489.lock} | 0 .../1d16b00cb822f2fb8a63bd668e67bba1 | 1 + ... => 1d16b00cb822f2fb8a63bd668e67bba1.lock} | 0 .../264620c1b17904d453faf51be18ded85 | 1 - .../2cf476c10389b1415009b9bdd6a60ffd | 1 + ... => 2cf476c10389b1415009b9bdd6a60ffd.lock} | 0 .../2ea74b848f63c415cc8921df64285b2a | 1 + ... => 2ea74b848f63c415cc8921df64285b2a.lock} | 0 .../3f8ff6b6cde2a0710e13a192161a00b8 | 1 + ... => 3f8ff6b6cde2a0710e13a192161a00b8.lock} | 0 .../4ef1a0e328b76c5ee107fc395385c43d | 1 - .../50b4a4fa4fd1e78419115635e1b9b4fc | 1 + ... => 50b4a4fa4fd1e78419115635e1b9b4fc.lock} | 0 .../52f56d6774eedd84d6e806eba9cad7c3 | 1 + ... => 52f56d6774eedd84d6e806eba9cad7c3.lock} | 0 .../54a3bce575e5495a8933b15319b453fd | 1 + ... => 54a3bce575e5495a8933b15319b453fd.lock} | 0 .../58d6ec4465b0f609ee8b04d3ee46bdb3 | 1 - .../84a88d969f5d28dcdead50371b604404 | 1 - .../947dd9f16a5b7381d8db9097f98991af | 1 + ... => 947dd9f16a5b7381d8db9097f98991af.lock} | 0 .../980cbae1a854f2ac49186d1e3095da25 | 1 - .../a1a74cc6dd1f8834201b84f13cb28e43 | 1 + .../a1a74cc6dd1f8834201b84f13cb28e43.lock | 0 .../af75ac8648e24cd828a69ba0feb455d7 | 1 - .../c6ad7e7011e471e418ff17ff9ba346e6 | 1 - .../ca269cda063bdef314df91348a8e3d9e | 1 - .../de351d4e7270d7378bf18fcd163b88c7 | 1 - docs/apiclient.html | 2 +- docs/column.html | 2 +- docs/connector.html | 2 +- docs/hexonet.html | 2 +- docs/logger.html | 89 ++ docs/record.html | 2 +- docs/response.html | 2 +- docs/responseparser.html | 2 +- docs/responsetemplate.html | 2 +- docs/responsetemplatemanager.html | 2 +- docs/socketconfig.html | 2 +- lib/WebService/Hexonet.pm | 2 +- lib/WebService/Hexonet/Connector.pm | 2 +- lib/WebService/Hexonet/Connector/APIClient.pm | 2 +- lib/WebService/Hexonet/Connector/Column.pm | 2 +- lib/WebService/Hexonet/Connector/Logger.pm | 2 +- lib/WebService/Hexonet/Connector/Record.pm | 2 +- lib/WebService/Hexonet/Connector/Response.pm | 2 +- .../Hexonet/Connector/ResponseParser.pm | 2 +- .../Hexonet/Connector/ResponseTemplate.pm | 2 +- .../Connector/ResponseTemplateManager.pm | 2 +- .../Hexonet/Connector/SocketConfig.pm | 2 +- 71 files changed, 1129 insertions(+), 893 deletions(-) create mode 100644 cover_db/blib-lib-WebService-Hexonet-Connector-Logger-pm--branch.html create mode 100644 cover_db/blib-lib-WebService-Hexonet-Connector-Logger-pm--subroutine.html create mode 100644 cover_db/blib-lib-WebService-Hexonet-Connector-Logger-pm.html create mode 100644 cover_db/structure/1583fe367ca2a568f400de5d0bd55489 rename cover_db/structure/{264620c1b17904d453faf51be18ded85.lock => 1583fe367ca2a568f400de5d0bd55489.lock} (100%) create mode 100644 cover_db/structure/1d16b00cb822f2fb8a63bd668e67bba1 rename cover_db/structure/{4ef1a0e328b76c5ee107fc395385c43d.lock => 1d16b00cb822f2fb8a63bd668e67bba1.lock} (100%) delete mode 100644 cover_db/structure/264620c1b17904d453faf51be18ded85 create mode 100644 cover_db/structure/2cf476c10389b1415009b9bdd6a60ffd rename cover_db/structure/{58d6ec4465b0f609ee8b04d3ee46bdb3.lock => 2cf476c10389b1415009b9bdd6a60ffd.lock} (100%) create mode 100644 cover_db/structure/2ea74b848f63c415cc8921df64285b2a rename cover_db/structure/{84a88d969f5d28dcdead50371b604404.lock => 2ea74b848f63c415cc8921df64285b2a.lock} (100%) create mode 100644 cover_db/structure/3f8ff6b6cde2a0710e13a192161a00b8 rename cover_db/structure/{980cbae1a854f2ac49186d1e3095da25.lock => 3f8ff6b6cde2a0710e13a192161a00b8.lock} (100%) delete mode 100644 cover_db/structure/4ef1a0e328b76c5ee107fc395385c43d create mode 100644 cover_db/structure/50b4a4fa4fd1e78419115635e1b9b4fc rename cover_db/structure/{af75ac8648e24cd828a69ba0feb455d7.lock => 50b4a4fa4fd1e78419115635e1b9b4fc.lock} (100%) create mode 100644 cover_db/structure/52f56d6774eedd84d6e806eba9cad7c3 rename cover_db/structure/{c6ad7e7011e471e418ff17ff9ba346e6.lock => 52f56d6774eedd84d6e806eba9cad7c3.lock} (100%) create mode 100644 cover_db/structure/54a3bce575e5495a8933b15319b453fd rename cover_db/structure/{ca269cda063bdef314df91348a8e3d9e.lock => 54a3bce575e5495a8933b15319b453fd.lock} (100%) delete mode 100644 cover_db/structure/58d6ec4465b0f609ee8b04d3ee46bdb3 delete mode 100644 cover_db/structure/84a88d969f5d28dcdead50371b604404 create mode 100644 cover_db/structure/947dd9f16a5b7381d8db9097f98991af rename cover_db/structure/{de351d4e7270d7378bf18fcd163b88c7.lock => 947dd9f16a5b7381d8db9097f98991af.lock} (100%) delete mode 100644 cover_db/structure/980cbae1a854f2ac49186d1e3095da25 create mode 100644 cover_db/structure/a1a74cc6dd1f8834201b84f13cb28e43 create mode 100644 cover_db/structure/a1a74cc6dd1f8834201b84f13cb28e43.lock delete mode 100644 cover_db/structure/af75ac8648e24cd828a69ba0feb455d7 delete mode 100644 cover_db/structure/c6ad7e7011e471e418ff17ff9ba346e6 delete mode 100644 cover_db/structure/ca269cda063bdef314df91348a8e3d9e delete mode 100644 cover_db/structure/de351d4e7270d7378bf18fcd163b88c7 create mode 100644 docs/logger.html diff --git a/HISTORY.md b/HISTORY.md index e9c4209..b3384fa 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -1,3 +1,10 @@ +# [2.9.0](https://github.com/hexonet/perl-sdk/compare/v2.8.1...v2.9.0) (2020-05-12) + + +### Features + +* **logger:** possibility to override debug mode's default logging mechanism. See README.md ([038cc0c](https://github.com/hexonet/perl-sdk/commit/038cc0cd8657e0b3e1e30eb6655ff6f61ad68a41)) + ## [2.8.1](https://github.com/hexonet/perl-sdk/compare/v2.8.0...v2.8.1) (2020-05-12) diff --git a/WebService-Hexonet-Connector-latest.tar.gz b/WebService-Hexonet-Connector-latest.tar.gz index d30f7987566b3777a8f5bbb9052ac78cc47aa96a..49cf403d45a64df0d1644d61b5c2fe9088f4e6e2 100644 GIT binary patch delta 44677 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 diff --git a/cover_db/blib-lib-WebService-Hexonet-Connector-APIClient-pm--branch.html b/cover_db/blib-lib-WebService-Hexonet-Connector-APIClient-pm--branch.html index 6c76828..4b99c77 100644 --- a/cover_db/blib-lib-WebService-Hexonet-Connector-APIClient-pm--branch.html +++ b/cover_db/blib-lib-WebService-Hexonet-Connector-APIClient-pm--branch.html @@ -20,44 +20,45 @@

Branch Coverage

- +
File:blib/lib/WebService/Hexonet/Connector/APIClient.pm
Coverage:86.4%
Coverage:83.8%

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
line%coveragebranch
59100TFif (defined $secured and $secured == 1)
63100TFif (ref $cmd eq 'HASH') { }
65100TFif (defined $cmd->{$key})
74100TFif (defined $secured and $secured == 1)
78100TFif (utf8::is_utf8($tmp))
89100TFif (length $sessid)
104100TFunless (length $self->{'ua'})
120100TFif (defined $modules and length $modules > 0)
130100TFif (exists $self->{'curlopts'}{'PROXY'})
139100TFif (length $proxy == 0) { }
150100TFif (exists $self->{'curlopts'}{'REFERER'})
159100TFif (length $referer == 0) { }
241100TFif ($rr->isSuccess)
24450TFif (defined $col)
25850TFunless (defined $otpc)
26750TFif ($rr->isSuccess)
27050TFif (defined $col)
283100TFif ($rr->isSuccess)
30750TFif ($referer)
31150TFif ($proxy)
316100TFif ($r->is_success) { }
318100TFif ($self->{'debugMode'})
32650TFif ($self->{'debugMode'})
33950TFif (defined $mycmd->{'LAST'})
343100TFif (defined $mycmd->{'FIRST'})
349100TFif ($first < $total)
421100TFif ($newkey ne $key)
424100TFif (ref $cmd->{$newkey} eq "ARRAY")
441100TFif ($cmd->{'COMMAND'} =~ /^CONVERTIDN$/imsux)
445100TFif (scalar @keys == 0)
452100TFif ($val =~ /[^[:lower:]\d. -]/imsux)
462100TFif ($r->isSuccess)
46450TFif ($col)
540TFif (defined $logger and $logger->can("log"))
78100TFif (defined $secured and $secured == 1)
82100TFif (ref $cmd eq 'HASH') { }
84100TFif (defined $cmd->{$key})
93100TFif (defined $secured and $secured == 1)
97100TFif (utf8::is_utf8($tmp))
108100TFif (length $sessid)
123100TFunless (length $self->{'ua'})
139100TFif (defined $modules and length $modules > 0)
149100TFif (exists $self->{'curlopts'}{'PROXY'})
158100TFif (length $proxy == 0) { }
169100TFif (exists $self->{'curlopts'}{'REFERER'})
178100TFif (length $referer == 0) { }
260100TFif ($rr->isSuccess)
26350TFif (defined $col)
27750TFunless (defined $otpc)
28650TFif ($rr->isSuccess)
28950TFif (defined $col)
302100TFif ($rr->isSuccess)
32650TFif ($referer)
33050TFif ($proxy)
335100TFif ($r->is_success) { }
337100TFif ($self->{'debugMode'})
34250TFif ($self->{'debugMode'})
35350TFif (defined $mycmd->{'LAST'})
357100TFif (defined $mycmd->{'FIRST'})
363100TFif ($first < $total)
435100TFif ($newkey ne $key)
438100TFif (ref $cmd->{$newkey} eq "ARRAY")
455100TFif ($cmd->{'COMMAND'} =~ /^CONVERTIDN$/imsux)
459100TFif (scalar @keys == 0)
466100TFif ($val =~ /[^[:lower:]\d. -]/imsux)
476100TFif ($r->isSuccess)
47850TFif ($col)
diff --git a/cover_db/blib-lib-WebService-Hexonet-Connector-APIClient-pm--condition.html b/cover_db/blib-lib-WebService-Hexonet-Connector-APIClient-pm--condition.html index 77edb1b..a8671f5 100644 --- a/cover_db/blib-lib-WebService-Hexonet-Connector-APIClient-pm--condition.html +++ b/cover_db/blib-lib-WebService-Hexonet-Connector-APIClient-pm--condition.html @@ -20,15 +20,16 @@

Condition Coverage

- +
File:blib/lib/WebService/Hexonet/Connector/APIClient.pm
Coverage:63.6%
Coverage:50.0%

- - - - + + + + +
line%coveragecondition
5967
ABdec
0X0
100
111
defined $secured and $secured == 1
7467
ABdec
0X0
100
111
defined $secured and $secured == 1
12067
ABdec
0X0
100
111
defined $modules and length $modules > 0
23950
Adec
00
11
$otp || ''
540
ABdec
0X0
100
111
defined $logger and $logger->can("log")
7867
ABdec
0X0
100
111
defined $secured and $secured == 1
9367
ABdec
0X0
100
111
defined $secured and $secured == 1
13967
ABdec
0X0
100
111
defined $modules and length $modules > 0
25850
Adec
00
11
$otp || ''
diff --git a/cover_db/blib-lib-WebService-Hexonet-Connector-APIClient-pm--subroutine.html b/cover_db/blib-lib-WebService-Hexonet-Connector-APIClient-pm--subroutine.html index c4e0a7e..d406d44 100644 --- a/cover_db/blib-lib-WebService-Hexonet-Connector-APIClient-pm--subroutine.html +++ b/cover_db/blib-lib-WebService-Hexonet-Connector-APIClient-pm--subroutine.html @@ -20,7 +20,7 @@

Subroutine Coverage

- +
File:blib/lib/WebService/Hexonet/Connector/APIClient.pm
Coverage:100.0%
Coverage:98.1%

@@ -38,42 +38,45 @@

Subroutine Coverage

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
13
BEGIN
14
BEGIN
15
BEGIN
22
BEGIN
28
new
43
enableDebugMode
50
disableDebugMode
57
getPOSTData
87
getSession
97
getURL
103
getUserAgent
115
setUserAgent
129
getProxy
138
setProxy
149
getReferer
158
setReferer
169
getVersion
175
saveSession
185
reuseSession
193
setURL
200
setOTP
207
setSession
214
setRemoteIPAddress
221
setCredentials
229
setRoleCredentials
237
login
255
loginExtended
281
logout
291
request
337
requestNextResponsePage
359
requestAllResponsePages
378
setUserView
385
resetUserView
392
useDefaultConnectionSetup
398
useHighPerformanceConnectionSetup
404
useOTESystem
411
useLIVESystem
418
_flattenCommand
440
_autoIDNConvert
16
BEGIN
23
BEGIN
29
new
46
setDefaultLogger
53
setCustomLogger
62
enableDebugMode
69
disableDebugMode
76
getPOSTData
106
getSession
116
getURL
122
getUserAgent
134
setUserAgent
148
getProxy
157
setProxy
168
getReferer
177
setReferer
188
getVersion
194
saveSession
204
reuseSession
212
setURL
219
setOTP
226
setSession
233
setRemoteIPAddress
240
setCredentials
248
setRoleCredentials
256
login
274
loginExtended
300
logout
310
request
351
requestNextResponsePage
373
requestAllResponsePages
392
setUserView
399
resetUserView
406
useDefaultConnectionSetup
412
useHighPerformanceConnectionSetup
418
useOTESystem
425
useLIVESystem
432
_flattenCommand
454
_autoIDNConvert
diff --git a/cover_db/blib-lib-WebService-Hexonet-Connector-APIClient-pm.html b/cover_db/blib-lib-WebService-Hexonet-Connector-APIClient-pm.html index 03b39d6..b11d390 100644 --- a/cover_db/blib-lib-WebService-Hexonet-Connector-APIClient-pm.html +++ b/cover_db/blib-lib-WebService-Hexonet-Connector-APIClient-pm.html @@ -20,409 +20,419 @@

File Coverage

- +
File:blib/lib/WebService/Hexonet/Connector/APIClient.pm
Coverage:95.0%
Coverage:93.6%

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
linestmtbrancondsubpodtimecode
1package WebService::Hexonet::Connector::APIClient;
2
3
1
1
7
2
use 5.026_000;
4
1
1
1
2
1
8
use strict;
5
1
1
1
2
1
8
use warnings;
6
1
1
1
214
6
3
use utf8;
7
1
1
1
262
2
23
use WebService::Hexonet::Connector::Response;
8
1
1
1
3
1
12
use WebService::Hexonet::Connector::ResponseTemplateManager;
9
1
1
1
383
2
14
use WebService::Hexonet::Connector::SocketConfig;
10
1
1
1
264
24663
24
use LWP::UserAgent;
11
1
1
1
6
1
49
use Carp;
12
1
1
1
3
1
23
use Readonly;
13
1
1
1
297
3220
44
use Data::Dumper;
14
1
1
1
4
1
19
use Config;
15
1
1
1
3
1
8
use POSIX;
16
17Readonly my $SOCKETTIMEOUT                => 300;                                      # 300s or 5 min
18Readonly my $IDX4                         => 4;                                        # Index 4 constant
19Readonly our $ISPAPI_CONNECTION_URL       => 'https://api.ispapi.net/api/call.cgi';    # Default Connection Setup URL
20Readonly our $ISPAPI_CONNECTION_URL_PROXY => 'http://127.0.0.1/api/call.cgi';          # High Speed Connection Setup URL
21
22
1
1
1
1234
22
7
use version 0.9917; our $VERSION = version->declare('v2.8.1');
23
24my $rtm = WebService::Hexonet::Connector::ResponseTemplateManager->getInstance();
25
26
27sub new {
28
2
1
10
    my $class = shift;
29
2
13
    my $self  = bless {
30        socketURL    => $ISPAPI_CONNECTION_URL,
31        debugMode    => 0,
32        socketConfig => WebService::Hexonet::Connector::SocketConfig->new(),
33        ua           => q{},
34        curlopts     => {}
35    }, $class;
36
2
22
    $self->setURL($ISPAPI_CONNECTION_URL);
37
2
8
    $self->useLIVESystem();
38
2
4
    return $self;
39}
40
41
42sub enableDebugMode {
43
2
1
316
    my $self = shift;
44
2
5
    $self->{debugMode} = 1;
45
2
5
    return $self;
46}
47
48
49sub disableDebugMode {
50
2
1
7
    my $self = shift;
51
2
6
    $self->{debugMode} = 0;
52
2
3
    return $self;
53}
54
55
56sub getPOSTData {
57
54
1
983
    my ( $self, $cmd, $secured ) = @_;
58
54
151
    my $post = $self->{socketConfig}->getPOSTData();
59
54
146
    if ( defined($secured) && $secured == 1 ) {
60
20
42
        $post->{s_pw} = '***';
61    }
62
54
67
    my $tmp = q{};
63
54
102
    if ( ( ref $cmd ) eq 'HASH' ) {
64
53
53
50
125
        foreach my $key ( sort keys %{$cmd} ) {
65
95
128
            if ( defined $cmd->{$key} ) {
66
94
102
                my $val = $cmd->{$key};
67
94
111
                $val =~ s/[\r\n]//msx;
68
94
161
                $tmp .= "${key}=${val}\n";
69            }
70        }
71    } else {
72
1
4
        $tmp = $cmd;
73    }
74
54
122
    if ( defined($secured) && $secured == 1 ) {
75
20
42
        $tmp =~ s/PASSWORD\=[^\n]+/PASSWORD=***/gmsx;
76    }
77
54
131
    $tmp =~ s/\n$//msx;
78
54
101
    if ( utf8::is_utf8($tmp) ) {
79
2
3
        utf8::encode($tmp);
2
3
1
1
7
1
use 5.026_000;
4
1
1
1
1
1
7
use strict;
5
1
1
1
1
1
7
use warnings;
6
1
1
1
179
7
1
use utf8;
7
1
1
1
239
1
12
use WebService::Hexonet::Connector::Logger;
8
1
1
1
275
1
14
use WebService::Hexonet::Connector::Response;
9
1
1
1
3
1
11
use WebService::Hexonet::Connector::ResponseTemplateManager;
10
1
1
1
279
1
12
use WebService::Hexonet::Connector::SocketConfig;
11
1
1
1
235
20482
16
use LWP::UserAgent;
12
1
1
1
4
1
30
use Carp;
13
1
1
1
3
1
25
use Readonly;
14
1
1
1
3
1
14
use Data::Dumper;
15
1
1
1
3
1
12
use Config;
16
1
1
1
2
1
4
use POSIX;
17
18Readonly my $SOCKETTIMEOUT                => 300;                                      # 300s or 5 min
19Readonly my $IDX4                         => 4;                                        # Index 4 constant
20Readonly our $ISPAPI_CONNECTION_URL       => 'https://api.ispapi.net/api/call.cgi';    # Default Connection Setup URL
21Readonly our $ISPAPI_CONNECTION_URL_PROXY => 'http://127.0.0.1/api/call.cgi';          # High Speed Connection Setup URL
22
23
1
1
1
1024
14
4
use version 0.9917; our $VERSION = version->declare('v2.9.0');
24
25my $rtm = WebService::Hexonet::Connector::ResponseTemplateManager->getInstance();
26
27
28sub new {
29
2
1
6
    my $class = shift;
30
2
7
    my $self  = bless {
31        socketURL    => $ISPAPI_CONNECTION_URL,
32        debugMode    => 0,
33        socketConfig => WebService::Hexonet::Connector::SocketConfig->new(),
34        ua           => q{},
35        curlopts     => {},
36        logger       => WebService::Hexonet::Connector::Logger->new()
37    }, $class;
38
2
17
    $self->setURL($ISPAPI_CONNECTION_URL);
39
2
11
    $self->useLIVESystem();
40
2
4
    $self->setDefaultLogger();
41
2
3
    return $self;
42}
43
44
45sub setDefaultLogger {
46
2
0
3
    my $self = shift;
47
2
10
    $self->{logger} = WebService::Hexonet::Connector::Logger->new();
48
2
4
    return $self;
49}
50
51
52sub setCustomLogger {
53
0
0
0
    my ( $self, $logger ) = shift;
54
0
0
    if ( defined($logger) && $logger->can('log') ) {
55
0
0
        $self->{logger} = $logger;
56    }
57
0
0
    return $self;
58}
59
60
61sub enableDebugMode {
62
2
1
292
    my $self = shift;
63
2
5
    $self->{debugMode} = 1;
64
2
3
    return $self;
65}
66
67
68sub disableDebugMode {
69
2
1
10
    my $self = shift;
70
2
4
    $self->{debugMode} = 0;
71
2
3
    return $self;
72}
73
74
75sub getPOSTData {
76
54
1
717
    my ( $self, $cmd, $secured ) = @_;
77
54
126
    my $post = $self->{socketConfig}->getPOSTData();
78
54
113
    if ( defined($secured) && $secured == 1 ) {
79
20
26
        $post->{s_pw} = '***';
80    }
81
54
68
    $post->{'s_command'} = $tmp;
82
54
89
    return $post;
83}
84
85
86sub getSession {
87
2
1
10
    my $self   = shift;
88
2
8
    my $sessid = $self->{socketConfig}->getSession();
89
2
7
    if ( length $sessid ) {
90
1
3
        return $sessid;
91    }
92
1
2
    return;
93}
94
95
96sub getURL {
97
5
1
16
    my $self = shift;
98
5
12
    return $self->{socketURL};
99}
100
101
102sub getUserAgent {
103
22
1
54
    my $self = shift;
104
22
52
    if ( !( length $self->{ua} ) ) {
105
1
12
        my $arch = (POSIX::uname)[ $IDX4 ];
106
1
5
        my $os   = (POSIX::uname)[ 0 ];
107
1
4
        my $rv   = $self->getVersion();
108
1
46
        $self->{ua} = "PERL-SDK ($os; $arch; rv:$rv) perl/$Config{version}";
109    }
110
22
59
    return $self->{ua};
111}
112
113
114sub setUserAgent {
115
2
1
961
    my ( $self, $str, $rv, $modules ) = @_;
116
2
17
    my $arch = (POSIX::uname)[ $IDX4 ];
117
2
16
    my $os   = (POSIX::uname)[ 0 ];
118
2
8
    my $rv2  = $self->getVersion();
119
2
5
    my $mods = q{};
120
2
12
    if ( defined $modules && length($modules) > 0 ) {
121
1
1
3
6
        $mods = q{ } . join q{ }, @{$modules};
122    }
123
2
16
    $self->{ua} = "$str ($os; $arch; rv:$rv)$mods perl-sdk/$rv2 perl/$Config{version}";
124
2
11
    return $self;
125}
126
127
128sub getProxy {
129
21
1
38
    my ($self) = @_;
130
21
52
    if ( exists $self->{curlopts}->{'PROXY'} ) {
131
1
3
        return $self->{curlopts}->{'PROXY'};
132    }
133
20
25
    return;
134}
135
136
137sub setProxy {
138
2
1
5
    my ( $self, $proxy ) = @_;
139
2
8
    if ( length($proxy) == 0 ) {
140
1
3
        delete $self->{curlopts}->{'PROXY'};
141    } else {
142
1
3
        $self->{curlopts}->{'PROXY'} = $proxy;
143    }
144
2
3
    return $self;
145}
146
147
148sub getReferer {
149
21
1
54
    my ($self) = @_;
150
21
59
    if ( exists $self->{curlopts}->{'REFERER'} ) {
151
1
12
        return $self->{curlopts}->{'REFERER'};
152    }
153
20
35
    return;
154}
155
156
157sub setReferer {
158
2
1
341
    my ( $self, $referer ) = @_;
159
2
223
    if ( length($referer) == 0 ) {
160
1
3
        delete $self->{curlopts}->{'REFERER'};
161    } else {
162
1
6
        $self->{curlopts}->{'REFERER'} = $referer;
163    }
164
2
7
    return $self;
165}
166
167
168sub getVersion {
169
4
1
19
    my $self = shift;
170
4
10
    return $VERSION;
171}
172
173
174sub saveSession {
175
1
1
8
    my ( $self, $session ) = @_;
176    $session->{socketcfg} = {
177        entity  => $self->{socketConfig}->getSystemEntity(),
178        session => $self->{socketConfig}->getSession()
179
1
6
    };
180
1
2
    return $self;
181}
182
183
184sub reuseSession {
185
1
1
5
    my ( $self, $session ) = @_;
186
1
4
    $self->{socketConfig}->setSystemEntity( $session->{socketcfg}->{entity} );
187
1
3
    $self->setSession( $session->{socketcfg}->{session} );
188
1
2
    return $self;
189}
190
191
192sub setURL {
193
8
1
381
    my ( $self, $value ) = @_;
194
8
40
    $self->{socketURL} = $value;
195
8
17
    return $self;
196}
197
198
199sub setOTP {
200
8
1
384
    my ( $self, $value ) = @_;
201
8
34
    $self->{socketConfig}->setOTP($value);
202
8
8
    return $self;
203}
204
205
206sub setSession {
207
13
1
2525
    my ( $self, $value ) = @_;
208
13
45
    $self->{socketConfig}->setSession($value);
209
13
19
    return $self;
210}
211
212
213sub setRemoteIPAddress {
214
3
1
354
    my ( $self, $value ) = @_;
215
3
11
    $self->{socketConfig}->setRemoteAddress($value);
216
3
4
    return $self;
217}
218
219
220sub setCredentials {
221
12
1
1006
    my ( $self, $uid, $pw ) = @_;
222
12
59
    $self->{socketConfig}->setLogin($uid);
223
12
42
    $self->{socketConfig}->setPassword($pw);
224
12
17
    return $self;
225}
226
227
228sub setRoleCredentials {
229
4
1
949
    my ( $self, $uid, $role, $pw ) = @_;
230
4
13
    my $myuid = "${uid}!${role}";
231
4
10
    $myuid =~ s/^\!$//msx;
232
4
13
    return $self->setCredentials( $myuid, $pw );
233}
234
235
236sub login {
237
4
1
13
    my $self = shift;
238
4
7
    my $otp  = shift;
239
4
31
    $self->setOTP( $otp || q{} );
240
4
19
    my $rr = $self->request( { COMMAND => 'StartSession' } );
241
4
13
    if ( $rr->isSuccess() ) {
242
2
85
        my $col    = $rr->getColumn('SESSION');
243
2
3
        my $sessid = q{};
244
2
5
        if ( defined $col ) {
245
2
7
            my @d = $col->getData();
246
2
4
            $sessid = $d[ 0 ];
247        }
248
2
7
        $self->setSession($sessid);
249    }
250
4
45
    return $rr;
251}
252
253
254sub loginExtended {
255
1
1
2
    my $self   = shift;
256
1
2
    my $params = shift;
257
1
2
    my $otpc   = shift;
258
1
3
    if ( !defined $otpc ) {
259
1
2
        $otpc = q{};
260    }
261
1
4
    $self->setOTP($otpc);
262
1
2
    my $cmd = { COMMAND => 'StartSession' };
263
1
1
1
3
    foreach my $key ( keys %{$params} ) {
264
1
3
        $cmd->{$key} = $params->{$key};
265    }
266
1
4
    my $rr = $self->request($cmd);
267
1
3
    if ( $rr->isSuccess() ) {
268
1
3
        my $col    = $rr->getColumn('SESSION');
269
1
1
        my $sessid = q{};
270
1
3
        if ( defined $col ) {
271
1
4
            my @d = $col->getData();
272
1
2
            $sessid = $d[ 0 ];
273        }
274
1
3
        $self->setSession($sessid);
275    }
276
1
5
    return $rr;
277}
278
279
280sub logout {
281
2
1
4
    my $self = shift;
282
2
10
    my $rr = $self->request( { COMMAND => 'EndSession' } );
283
2
9
    if ( $rr->isSuccess() ) {
284
1
4
        $self->setSession(q{});
285    }
286
2
16
    return $rr;
287}
288
289
290sub request {
291
19
1
47
    my ( $self, $cmd ) = @_;
292    # flatten nested api command bulk parameters
293
19
68
    my $newcmd = $self->_flattenCommand($cmd);
294    # auto convert umlaut names to punycode
295
19
59
    $newcmd = $self->_autoIDNConvert($newcmd);
296
297    # request command to API
298
19
46
    my $cfg     = { CONNECTION_URL => $self->{socketURL} };
299
19
63
    my $post    = $self->getPOSTData($newcmd);
300
19
36
    my $secured = $self->getPOSTData( $newcmd, 1 );
301
302
19
138
    my $ua = LWP::UserAgent->new();
303
19
6920
    $ua->agent( $self->getUserAgent() );
304
19
672
    $ua->default_header( 'Expect', q{} );
305
19
525
    $ua->timeout($SOCKETTIMEOUT);
306
19
337
    my $referer = $self->getReferer();
307
19
39
    if ($referer) {
308
0
0
        $ua->default_header( 'Referer', $referer );
309    }
310
19
54
    my $proxy = $self->getProxy();
311
19
44
    if ($proxy) {
312
0
0
        $ua->proxy( [ 'http', 'https' ], $proxy );
313    }
314
315
19
62
    my $r = $ua->post( $cfg->{CONNECTION_URL}, $post );
316
19
12872974
    if ( $r->is_success ) {
317
18
193
        $r = $r->decoded_content;
318
18
13921
        if ( $self->{debugMode} ) {
319
2
2
3
13
            print {*STDOUT} Dumper($newcmd);
320
2
2
530
10
            print {*STDOUT} Dumper($secured);
321
2
2
123
7
            print {*STDOUT} Dumper($r);
322        }
323    } else {
324
1
12
        my $err = $r->status_line;
325
1
12
        $r = $rtm->getTemplate('httperror')->getPlain();
326
1
11
        if ( $self->{debugMode} ) {
327
0
0
0
0
            print {*STDERR} Dumper($newcmd);
328
0
0
0
0
            print {*STDERR} Dumper($secured);
329
0
0
0
0
            print {*STDERR} Dumper($r);
330        }
331    }
332
19
326
    return WebService::Hexonet::Connector::Response->new( $r, $newcmd, $cfg );
333}
334
335
336sub requestNextResponsePage {
337
6
1
16
    my ( $self, $rr ) = @_;
338
6
24
    my $mycmd = $rr->getCommand();
339
6
19
    if ( defined $mycmd->{LAST} ) {
340
0
0
        croak 'Parameter LAST in use! Please remove it to avoid issues in requestNextPage.';
341    }
342
6
7
    my $first = 0;
343
6
16
    if ( defined $mycmd->{FIRST} ) {
344
5
8
        $first = $mycmd->{FIRST};
81
54
49
    my $tmp = q{};
82
54
85
    if ( ( ref $cmd ) eq 'HASH' ) {
83
53
53
55
118
        foreach my $key ( sort keys %{$cmd} ) {
84
95
109
            if ( defined $cmd->{$key} ) {
85
94
96
                my $val = $cmd->{$key};
86
94
111
                $val =~ s/[\r\n]//msx;
87
94
130
                $tmp .= "${key}=${val}\n";
88            }
89        }
90    } else {
91
1
2
        $tmp = $cmd;
92    }
93
54
104
    if ( defined($secured) && $secured == 1 ) {
94
20
30
        $tmp =~ s/PASSWORD\=[^\n]+/PASSWORD=***/gmsx;
95    }
96
54
119
    $tmp =~ s/\n$//msx;
97
54
99
    if ( utf8::is_utf8($tmp) ) {
98
2
3
        utf8::encode($tmp);
99    }
100
54
68
    $post->{'s_command'} = $tmp;
101
54
70
    return $post;
102}
103
104
105sub getSession {
106
2
1
7
    my $self   = shift;
107
2
5
    my $sessid = $self->{socketConfig}->getSession();
108
2
5
    if ( length $sessid ) {
109
1
2
        return $sessid;
110    }
111
1
2
    return;
112}
113
114
115sub getURL {
116
5
1
13
    my $self = shift;
117
5
10
    return $self->{socketURL};
118}
119
120
121sub getUserAgent {
122
22
1
45
    my $self = shift;
123
22
55
    if ( !( length $self->{ua} ) ) {
124
1
6
        my $arch = (POSIX::uname)[ $IDX4 ];
125
1
5
        my $os   = (POSIX::uname)[ 0 ];
126
1
2
        my $rv   = $self->getVersion();
127
1
35
        $self->{ua} = "PERL-SDK ($os; $arch; rv:$rv) perl/$Config{version}";
128    }
129
22
39
    return $self->{ua};
130}
131
132
133sub setUserAgent {
134
2
1
971
    my ( $self, $str, $rv, $modules ) = @_;
135
2
15
    my $arch = (POSIX::uname)[ $IDX4 ];
136
2
76
    my $os   = (POSIX::uname)[ 0 ];
137
2
5
    my $rv2  = $self->getVersion();
138
2
3
    my $mods = q{};
139
2
10
    if ( defined $modules && length($modules) > 0 ) {
140
1
1
2
4
        $mods = q{ } . join q{ }, @{$modules};
141    }
142
2
17
    $self->{ua} = "$str ($os; $arch; rv:$rv)$mods perl-sdk/$rv2 perl/$Config{version}";
143
2
9
    return $self;
144}
145
146
147sub getProxy {
148
21
1
32
    my ($self) = @_;
149
21
37
    if ( exists $self->{curlopts}->{'PROXY'} ) {
150
1
3
        return $self->{curlopts}->{'PROXY'};
151    }
152
20
25
    return;
153}
154
155
156sub setProxy {
157
2
1
4
    my ( $self, $proxy ) = @_;
158
2
528
    if ( length($proxy) == 0 ) {
159
1
2
        delete $self->{curlopts}->{'PROXY'};
160    } else {
161
1
4
        $self->{curlopts}->{'PROXY'} = $proxy;
162    }
163
2
3
    return $self;
164}
165
166
167sub getReferer {
168
21
1
35
    my ($self) = @_;
169
21
54
    if ( exists $self->{curlopts}->{'REFERER'} ) {
170
1
4
        return $self->{curlopts}->{'REFERER'};
171    }
172
20
24
    return;
173}
174
175
176sub setReferer {
177
2
1
299
    my ( $self, $referer ) = @_;
178
2
6
    if ( length($referer) == 0 ) {
179
1
2
        delete $self->{curlopts}->{'REFERER'};
180    } else {
181
1
3
        $self->{curlopts}->{'REFERER'} = $referer;
182    }
183
2
3
    return $self;
184}
185
186
187sub getVersion {
188
4
1
16
    my $self = shift;
189
4
8
    return $VERSION;
190}
191
192
193sub saveSession {
194
1
1
5
    my ( $self, $session ) = @_;
195    $session->{socketcfg} = {
196        entity  => $self->{socketConfig}->getSystemEntity(),
197        session => $self->{socketConfig}->getSession()
198
1
4
    };
199
1
2
    return $self;
200}
201
202
203sub reuseSession {
204
1
1
3
    my ( $self, $session ) = @_;
205
1
2
    $self->{socketConfig}->setSystemEntity( $session->{socketcfg}->{entity} );
206
1
1
    $self->setSession( $session->{socketcfg}->{session} );
207
1
2
    return $self;
208}
209
210
211sub setURL {
212
8
1
321
    my ( $self, $value ) = @_;
213
8
32
    $self->{socketURL} = $value;
214
8
16
    return $self;
215}
216
217
218sub setOTP {
219
8
1
313
    my ( $self, $value ) = @_;
220
8
28
    $self->{socketConfig}->setOTP($value);
221
8
10
    return $self;
222}
223
224
225sub setSession {
226
13
1
1689
    my ( $self, $value ) = @_;
227
13
48
    $self->{socketConfig}->setSession($value);
228
13
15
    return $self;
229}
230
231
232sub setRemoteIPAddress {
233
3
1
290
    my ( $self, $value ) = @_;
234
3
9
    $self->{socketConfig}->setRemoteAddress($value);
235
3
4
    return $self;
236}
237
238
239sub setCredentials {
240
12
1
881
    my ( $self, $uid, $pw ) = @_;
241
12
46
    $self->{socketConfig}->setLogin($uid);
242
12
42
    $self->{socketConfig}->setPassword($pw);
243
12
15
    return $self;
244}
245
246
247sub setRoleCredentials {
248
4
1
872
    my ( $self, $uid, $role, $pw ) = @_;
249
4
10
    my $myuid = "${uid}!${role}";
250
4
7
    $myuid =~ s/^\!$//msx;
251
4
9
    return $self->setCredentials( $myuid, $pw );
252}
253
254
255sub login {
256
4
1
11
    my $self = shift;
257
4
5
    my $otp  = shift;
258
4
24
    $self->setOTP( $otp || q{} );
259
4
43
    my $rr = $self->request( { COMMAND => 'StartSession' } );
260
4
11
    if ( $rr->isSuccess() ) {
261
2
5
        my $col    = $rr->getColumn('SESSION');
262
2
2
        my $sessid = q{};
263
2
4
        if ( defined $col ) {
264
2
6
            my @d = $col->getData();
265
2
3
            $sessid = $d[ 0 ];
266        }
267
2
6
        $self->setSession($sessid);
268    }
269
4
38
    return $rr;
270}
271
272
273sub loginExtended {
274
1
1
3
    my $self   = shift;
275
1
1
    my $params = shift;
276
1
2
    my $otpc   = shift;
277
1
4
    if ( !defined $otpc ) {
278
1
3
        $otpc = q{};
279    }
280
1
6
    $self->setOTP($otpc);
281
1
3
    my $cmd = { COMMAND => 'StartSession' };
282
1
1
2
3
    foreach my $key ( keys %{$params} ) {
283
1
3
        $cmd->{$key} = $params->{$key};
284    }
285
1
5
    my $rr = $self->request($cmd);
286
1
3
    if ( $rr->isSuccess() ) {
287
1
2
        my $col    = $rr->getColumn('SESSION');
288
1
1
        my $sessid = q{};
289
1
2
        if ( defined $col ) {
290
1
3
            my @d = $col->getData();
291
1
2
            $sessid = $d[ 0 ];
292        }
293
1
3
        $self->setSession($sessid);
294    }
295
1
5
    return $rr;
296}
297
298
299sub logout {
300
2
1
4
    my $self = shift;
301
2
12
    my $rr = $self->request( { COMMAND => 'EndSession' } );
302
2
7
    if ( $rr->isSuccess() ) {
303
1
3
        $self->setSession(q{});
304    }
305
2
17
    return $rr;
306}
307
308
309sub request {
310
19
1
43
    my ( $self, $cmd ) = @_;
311    # flatten nested api command bulk parameters
312
19
60
    my $newcmd = $self->_flattenCommand($cmd);
313    # auto convert umlaut names to punycode
314
19
49
    $newcmd = $self->_autoIDNConvert($newcmd);
315
316    # request command to API
317
19
48
    my $cfg     = { CONNECTION_URL => $self->{socketURL} };
318
19
58
    my $post    = $self->getPOSTData($newcmd);
319
19
33
    my $secured = $self->getPOSTData( $newcmd, 1 );
320
321
19
115
    my $ua = LWP::UserAgent->new();
322
19
5475
    $ua->agent( $self->getUserAgent() );
323
19
655
    $ua->default_header( 'Expect', q{} );
324
19
492
    $ua->timeout($SOCKETTIMEOUT);
325
19
267
    my $referer = $self->getReferer();
326
19
32
    if ($referer) {
327
0
0
        $ua->default_header( 'Referer', $referer );
328    }
329
19
39
    my $proxy = $self->getProxy();
330
19
35
    if ($proxy) {
331
0
0
        $ua->proxy( [ 'http', 'https' ], $proxy );
332    }
333
334
19
52
    my $r = $ua->post( $cfg->{CONNECTION_URL}, $post );
335
19
11821096
    if ( $r->is_success ) {
336
18
180
        $r = WebService::Hexonet::Connector::Response->new( $r->decoded_content, $newcmd, $cfg );
337
18
58
        if ( $self->{debugMode} ) {
338
2
11
            $self->{logger}->log( $secured, $r );
339        }
340    } else {
341
1
11
        $r = WebService::Hexonet::Connector::Response->new( $rtm->getTemplate('httperror')->getPlain(), $newcmd, $cfg );
342
1
4
        if ( $self->{debugMode} ) {
343
0
0
            $self->{logger}->log( $secured, $r, $r->status_line );
344        }
345    }
346
6
18
    my $total = $rr->getRecordsTotalCount();
347
6
12
    my $limit = $rr->getRecordsLimitation();
348
6
9
    $first += $limit;
349
6
17
    if ( $first < $total ) {
350
5
23
        $mycmd->{FIRST} = $first;
351
5
9
        $mycmd->{LIMIT} = $limit;
352
5
16
        return $self->request($mycmd);
353    }
354
1
2
    return;
355}
356
357
358sub requestAllResponsePages {
359
1
1
10
    my ( $self, $cmd ) = @_;
360
1
2
    my @responses = ();
361
1
2
    my $command   = {};
362
1
1
3
4
    foreach my $key ( keys %{$cmd} ) {
363
3
7
        $command->{$key} = $cmd->{$key};
364    }
365
1
3
    $command->{FIRST} = 0;
366
1
5
    my $rr  = $self->request($command);
367
1
2
    my $tmp = $rr;
368
1
2
    my $idx = 0;
369
1
4
    while ( defined $tmp ) {
370
4
6
        push @responses, $tmp;
371
4
16
        $tmp = $self->requestNextResponsePage($tmp);
372    }
373
1
22
    return \@responses;
374}
375
376
377sub setUserView {
378
1
1
561
    my ( $self, $uid ) = @_;
379
1
7
    $self->{socketConfig}->setUser($uid);
380
1
1
    return $self;
381}
382
383
384sub resetUserView {
385
1
1
2
    my $self = shift;
386
1
8
    $self->{socketConfig}->setUser(q{});
387
1
2
    return $self;
346
19
422
    return $r;
347}
348
349
350sub requestNextResponsePage {
351
6
1
17
    my ( $self, $rr ) = @_;
352
6
16
    my $mycmd = $rr->getCommand();
353
6
13
    if ( defined $mycmd->{LAST} ) {
354
0
0
        croak 'Parameter LAST in use! Please remove it to avoid issues in requestNextPage.';
355    }
356
6
8
    my $first = 0;
357
6
14
    if ( defined $mycmd->{FIRST} ) {
358
5
9
        $first = $mycmd->{FIRST};
359    }
360
6
17
    my $total = $rr->getRecordsTotalCount();
361
6
13
    my $limit = $rr->getRecordsLimitation();
362
6
10
    $first += $limit;
363
6
9
    if ( $first < $total ) {
364
5
8
        $mycmd->{FIRST} = $first;
365
5
7
        $mycmd->{LIMIT} = $limit;
366
5
13
        return $self->request($mycmd);
367    }
368
1
3
    return;
369}
370
371
372sub requestAllResponsePages {
373
1
1
8
    my ( $self, $cmd ) = @_;
374
1
2
    my @responses = ();
375
1
2
    my $command   = {};
376
1
1
2
3
    foreach my $key ( keys %{$cmd} ) {
377
3
7
        $command->{$key} = $cmd->{$key};
378    }
379
1
3
    $command->{FIRST} = 0;
380
1
3
    my $rr  = $self->request($command);
381
1
2
    my $tmp = $rr;
382
1
2
    my $idx = 0;
383
1
3
    while ( defined $tmp ) {
384
4
5
        push @responses, $tmp;
385
4
11
        $tmp = $self->requestNextResponsePage($tmp);
386    }
387
1
18
    return \@responses;
388}
389
390
391sub useDefaultConnectionSetup {
392
1
1
351
    my $self = shift;
393
1
4
    return $self->setURL($ISPAPI_CONNECTION_URL);
394}
395
396
397sub useHighPerformanceConnectionSetup {
398
1
1
381
    my $self = shift;
399
1
4
    return $self->setURL($ISPAPI_CONNECTION_URL_PROXY);
400}
401
402
403sub useOTESystem {
404
1
0
322
    my $self = shift;
405
1
5
    $self->{socketConfig}->setSystemEntity('1234');
406
1
1
    return $self;
407}
408
409
410sub useLIVESystem {
411
2
1
3
    my $self = shift;
412
2
9
    $self->{socketConfig}->setSystemEntity('54cd');
413
2
2
    return $self;
389
390
391sub setUserView {
392
1
1
523
    my ( $self, $uid ) = @_;
393
1
7
    $self->{socketConfig}->setUser($uid);
394
1
1
    return $self;
395}
396
397
398sub resetUserView {
399
1
1
2
    my $self = shift;
400
1
7
    $self->{socketConfig}->setUser(q{});
401
1
2
    return $self;
402}
403
404
405sub useDefaultConnectionSetup {
406
1
1
295
    my $self = shift;
407
1
4
    return $self->setURL($ISPAPI_CONNECTION_URL);
408}
409
410
411sub useHighPerformanceConnectionSetup {
412
1
1
308
    my $self = shift;
413
1
3
    return $self->setURL($ISPAPI_CONNECTION_URL_PROXY);
414}
415
416
417sub _flattenCommand {
418
19
49
    my ( $self, $cmd ) = @_;
419
19
19
25
52
    for my $key ( keys %{$cmd} ) {
420
37
51
        my $newkey = uc $key;
421
37
71
        if ( $newkey ne $key ) {
422
1
1
            $cmd->{$newkey} = delete $cmd->{$key};
423        }
424
37
80
        if ( ref( $cmd->{$newkey} ) eq 'ARRAY' ) {
425
4
4
5
9
            my @val = @{ $cmd->{$newkey} };
426
4
7
            my $idx = 0;
427
4
6
            for my $str (@val) {
428
6
10
                $str =~ s/[\r\n]//gmsx;
429
6
14
                $cmd->{"${key}${idx}"} = $str;
430
6
6
                $idx++;
431            }
432
4
7
            delete $cmd->{$newkey};
433        }
434    }
435
19
32
    return $cmd;
436}
437
438
439sub _autoIDNConvert {
440
19
43
    my ( $self, $cmd ) = @_;
441
19
72
    if ( $cmd->{'COMMAND'} =~ /^CONVERTIDN$/imsx ) {
442
2
2
        return $cmd;
443    }
444
17
35
17
30
99
33
    my @keys = grep {/^(DOMAIN|NAMESERVER|DNSZONE)(\d*)$/imsx} keys %{$cmd};
445
17
46
    if ( scalar @keys == 0 ) {
446
15
45
        return $cmd;
447    }
448
2
4
    my @toconvert = ();
449
2
3
    my @idxs      = ();
450
2
6
    foreach my $key (@keys) {
451
5
7
        my $val = $cmd->{$key};
452
5
10
        if ( $val =~ /[^[:lower:]\d. -]/imsx ) {
453
1
2
            push @toconvert, $val;
454
1
2
            push @idxs,      $key;
455        }
456    }
457
2
11
    my $r = $self->request(
458        {   COMMAND => 'ConvertIDN',
459            DOMAIN  => \@toconvert
460        }
461    );
462
2
6
    if ( $r->isSuccess() ) {
463
1
2
        my $col = $r->getColumn('ACE');
464
1
3
        if ($col) {
465
1
3
            my $data = $col->getData();
466
1
2
            my $idx  = 0;
467
1
1
1
1
            foreach my $pc ( @{$data} ) {
468
1
3
                $cmd->{ $idxs[ $idx ] } = $pc;
469
1
2
                $idx++;
470            }
471        }
472    }
473
2
11
    return $cmd;
474}
475
4761;
477
+415416417sub useOTESystem { +418
1
0
285
    my $self = shift; +419
1
3
    $self->{socketConfig}->setSystemEntity('1234'); +420
1
1
    return $self; +421} +422423424sub useLIVESystem { +425
2
1
4
    my $self = shift; +426
2
6
    $self->{socketConfig}->setSystemEntity('54cd'); +427
2
3
    return $self; +428} +429430431sub _flattenCommand { +432
19
30
    my ( $self, $cmd ) = @_; +433
19
19
22
52
    for my $key ( keys %{$cmd} ) { +434
37
53
        my $newkey = uc $key; +435
37
54
        if ( $newkey ne $key ) { +436
1
2
            $cmd->{$newkey} = delete $cmd->{$key}; +437        } +438
37
70
        if ( ref( $cmd->{$newkey} ) eq 'ARRAY' ) { +439
4
4
6
8
            my @val = @{ $cmd->{$newkey} }; +440
4
6
            my $idx = 0; +441
4
6
            for my $str (@val) { +442
6
9
                $str =~ s/[\r\n]//gmsx; +443
6
12
                $cmd->{"${key}${idx}"} = $str; +444
6
7
                $idx++; +445            } +446
4
8
            delete $cmd->{$newkey}; +447        } +448    } +449
19
28
    return $cmd; +450} +451452453sub _autoIDNConvert { +454
19
29
    my ( $self, $cmd ) = @_; +455
19
65
    if ( $cmd->{'COMMAND'} =~ /^CONVERTIDN$/imsx ) { +456
2
4
        return $cmd; +457    } +458
17
35
17
23
87
32
    my @keys = grep {/^(DOMAIN|NAMESERVER|DNSZONE)(\d*)$/imsx} keys %{$cmd}; +459
17
38
    if ( scalar @keys == 0 ) { +460
15
27
        return $cmd; +461    } +462
2
4
    my @toconvert = (); +463
2
3
    my @idxs      = (); +464
2
3
    foreach my $key (@keys) { +465
5
7
        my $val = $cmd->{$key}; +466
5
9
        if ( $val =~ /[^[:lower:]\d. -]/imsx ) { +467
1
2
            push @toconvert, $val; +468
1
2
            push @idxs,      $key; +469        } +470    } +471
2
14
    my $r = $self->request( +472        {   COMMAND => 'ConvertIDN', +473            DOMAIN  => \@toconvert +474        } +475    ); +476
2
8
    if ( $r->isSuccess() ) { +477
1
2
        my $col = $r->getColumn('ACE'); +478
1
3
        if ($col) { +479
1
3
            my $data = $col->getData(); +480
1
1
            my $idx  = 0; +481
1
1
2
2
            foreach my $pc ( @{$data} ) { +482
1
3
                $cmd->{ $idxs[ $idx ] } = $pc; +483
1
2
                $idx++; +484            } +485        } +486    } +487
2
12
    return $cmd; +488} +4894901; +491 diff --git a/cover_db/blib-lib-WebService-Hexonet-Connector-Column-pm.html b/cover_db/blib-lib-WebService-Hexonet-Connector-Column-pm.html index bc415cd..afc2293 100644 --- a/cover_db/blib-lib-WebService-Hexonet-Connector-Column-pm.html +++ b/cover_db/blib-lib-WebService-Hexonet-Connector-Column-pm.html @@ -26,37 +26,37 @@

File Coverage

- - - - + + + + - - - - - - + + + + + + - - + + - - + + - - - + + + - + - - - + + +
linestmtbrancondsubpodtimecode
1package WebService::Hexonet::Connector::Column;
2
3
1
1
6
1
use 5.026_000;
4
1
1
1
2
1
8
use strict;
5
1
1
1
2
1
11
use warnings;
6
7
1
1
1
1
12
5
use version 0.9917; our $VERSION = version->declare('v2.8.1');
2
3
1
1
5
2
use 5.026_000;
4
1
1
1
2
0
7
use strict;
5
1
1
1
1
1
10
use warnings;
6
7
1
1
1
2
12
2
use version 0.9917; our $VERSION = version->declare('v2.9.0');
8
9
10sub new {
11
156
1
1726
    my ( $class, $key, @data ) = @_;
12
156
126
    my $self = {};
13
156
180
    $self->{key} = $key;
14
156
156
127
755
    @{ $self->{data} } = @data;
15
156
156
    $self->{length} = scalar @data;
16
156
228
    return bless $self, $class;
11
156
1
1495
    my ( $class, $key, @data ) = @_;
12
156
120
    my $self = {};
13
156
149
    $self->{key} = $key;
14
156
156
119
348
    @{ $self->{data} } = @data;
15
156
127
    $self->{length} = scalar @data;
16
156
217
    return bless $self, $class;
17}
18
19
20sub getKey {
21
1
1
374
    my $self = shift;
22
1
7
    return $self->{key};
21
1
1
331
    my $self = shift;
22
1
6
    return $self->{key};
23}
24
25
26sub getData {
27
4
1
7
    my $self = shift;
28
4
7
    return $self->{data};
27
4
1
6
    my $self = shift;
28
4
5
    return $self->{data};
29}
30
31
32sub getDataByIndex {
33
18751
1
11868
    my $self = shift;
34
18751
12521
    my $idx  = shift;
35
18751
15846
    return $self->{data}[ $idx ]
33
18763
1
12039
    my $self = shift;
34
18763
11397
    my $idx  = shift;
35
18763
14808
    return $self->{data}[ $idx ]
36        if $self->hasDataIndex($idx);
37
15421
12084
    return;
37
15431
12013
    return;
38}
39
40
41sub hasDataIndex {
42
18751
1
11608
    my $self = shift;
43
18751
11374
    my $idx  = shift;
44
18751
20245
    return $idx < $self->{length};
42
18763
1
11691
    my $self = shift;
43
18763
11146
    my $idx  = shift;
44
18763
18393
    return $idx < $self->{length};
45}
46
471;
48
diff --git a/cover_db/blib-lib-WebService-Hexonet-Connector-Logger-pm--branch.html b/cover_db/blib-lib-WebService-Hexonet-Connector-Logger-pm--branch.html new file mode 100644 index 0000000..1d459ed --- /dev/null +++ b/cover_db/blib-lib-WebService-Hexonet-Connector-Logger-pm--branch.html @@ -0,0 +1,31 @@ + + + + + + + + + Branch Coverage: blib/lib/WebService/Hexonet/Connector/Logger.pm + + +

Branch Coverage

+ + + +
File:blib/lib/WebService/Hexonet/Connector/Logger.pm
Coverage:50.0%
+

+ + + +
line%coveragebranch
1950TFif (defined $error) { }
+ + diff --git a/cover_db/blib-lib-WebService-Hexonet-Connector-Logger-pm--subroutine.html b/cover_db/blib-lib-WebService-Hexonet-Connector-Logger-pm--subroutine.html new file mode 100644 index 0000000..7ec1c1b --- /dev/null +++ b/cover_db/blib-lib-WebService-Hexonet-Connector-Logger-pm--subroutine.html @@ -0,0 +1,37 @@ + + + + + + + + + Subroutine Coverage: blib/lib/WebService/Hexonet/Connector/Logger.pm + + +

Subroutine Coverage

+ + + +
File:blib/lib/WebService/Hexonet/Connector/Logger.pm
Coverage:100.0%
+

+ + + + + + + + + +
linesubroutine
3
BEGIN
4
BEGIN
5
BEGIN
6
BEGIN
8
BEGIN
12
new
18
log
+ + diff --git a/cover_db/blib-lib-WebService-Hexonet-Connector-Logger-pm.html b/cover_db/blib-lib-WebService-Hexonet-Connector-Logger-pm.html new file mode 100644 index 0000000..2ecaf1b --- /dev/null +++ b/cover_db/blib-lib-WebService-Hexonet-Connector-Logger-pm.html @@ -0,0 +1,55 @@ + + + + + + + + + File Coverage: blib/lib/WebService/Hexonet/Connector/Logger.pm + + +

File Coverage

+ + + +
File:blib/lib/WebService/Hexonet/Connector/Logger.pm
Coverage:79.5%
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
linestmtbrancondsubpodtimecode
1package WebService::Hexonet::Connector::Logger;
2
3
1
1
9
2
use 5.026_000;
4
1
1
1
1
1
6
use strict;
5
1
1
1
2
1
13
use warnings;
6
1
1
1
185
2615
41
use Data::Dumper;
7
8
1
1
1
3
11
3
use version 0.9917; our $VERSION = version->declare('v2.9.0');
9
10
11sub new {
12
4
1
6
    my ($class) = @_;
13
4
16
    return bless {}, $class;
14}
15
16
17sub log {
18
2
1
3
    my ( $self, $post, $r, $error ) = @_;
19
2
6
    if ( defined $error ) {
20
0
0
0
0
        print {*STDERR} Dumper($post);
21
0
0
0
0
        print {*STDERR} 'HTTP communication failed: ' . $error;
22
0
0
0
0
        print {*STDERR} Dumper( $r->getCommandPlain() );
23
0
0
0
0
        print {*STDERR} Dumper( $r->getPlain() );
24    } else {
25
2
2
2
11
        print {*STDOUT} Dumper($post);
26
2
2
530
13
        print {*STDOUT} Dumper( $r->getCommandPlain() );
27
2
2
86
14
        print {*STDOUT} Dumper( $r->getPlain() );
28    }
29
2
65
    return $self->{data};
30}
31
321;
33
+ + diff --git a/cover_db/blib-lib-WebService-Hexonet-Connector-Record-pm.html b/cover_db/blib-lib-WebService-Hexonet-Connector-Record-pm.html index 78cc368..8a25176 100644 --- a/cover_db/blib-lib-WebService-Hexonet-Connector-Record-pm.html +++ b/cover_db/blib-lib-WebService-Hexonet-Connector-Record-pm.html @@ -27,28 +27,28 @@

File Coverage

linestmtbrancondsubpodtimecode 1package WebService::Hexonet::Connector::Record; 23
1
1
7
1
use 5.026_000; -4
1
1
1
2
1
7
use strict; -5
1
1
1
1
1
13
use warnings; -67
1
1
1
2
7
3
use version 0.9917; our $VERSION = version->declare('v2.8.1'); +4
1
1
1
2
0
7
use strict; +5
1
1
1
1
1
10
use warnings; +67
1
1
1
1
7
2
use version 0.9917; our $VERSION = version->declare('v2.9.0'); 8910sub new { -11
3123
1
2629
    my ( $class, $data ) = @_; -12
3123
4025
    return bless { data => $data }, $class; +11
3125
1
2284
    my ( $class, $data ) = @_; +12
3125
3794
    return bless { data => $data }, $class; 13} 141516sub getData { -17
6
1
411
    my $self = shift; -18
6
25
    return $self->{data}; +17
6
1
316
    my $self = shift; +18
6
18
    return $self->{data}; 19} 202122sub getDataByKey { -23
4
1
782
    my $self = shift; -24
4
15
    my $key  = shift; +23
4
1
740
    my $self = shift; +24
4
8
    my $key  = shift; 25
4
12
    return $self->{data}->{$key} 26        if $self->hasData($key); -27
1
4
    return; +27
1
3
    return; 28} 293031sub hasData { -32
4
1
6
    my $self = shift; -33
4
8
    my $key  = shift; -34
4
33
    return defined $self->{data}->{$key}; +32
4
1
8
    my $self = shift; +33
4
7
    my $key  = shift; +34
4
27
    return defined $self->{data}->{$key}; 35} 36371; 38 diff --git a/cover_db/blib-lib-WebService-Hexonet-Connector-Response-pm.html b/cover_db/blib-lib-WebService-Hexonet-Connector-Response-pm.html index 1bcacf8..90306de 100644 --- a/cover_db/blib-lib-WebService-Hexonet-Connector-Response-pm.html +++ b/cover_db/blib-lib-WebService-Hexonet-Connector-Response-pm.html @@ -26,205 +26,205 @@

File Coverage

- - - - - - - - - + + + + + + + + + - + - - + + - - - + + + - - - - + + + + - - + + - - - + + + - - - - - - - - - - - - - - + + + + + + + + + + + + + + - - - - - - - - - + + + + + + + + + - + - + - - - - + + + + - - - + + + - - - - + + + + - + - + - + - - + + - - + + - - - - - + + + + + - + - - - - - + + + + + - - + + - + - - - - - - + + + + + + - - - + + + - - - - + + + + - + - + - + - + - + - + - - + + - + - - - - + + + + - - - + + + - - - - + + + + - + - - + + @@ -238,107 +238,107 @@

File Coverage

- - - + + + - - + + - - + + - + - - + + - - + + - - - + + + - - - - - - + + + + + + - + - - - - - - + + + + + + - + - - - - + + + + - - - + + + - - - + + + - + - + - + - - - + + + - - - + + + - - - - + + + + - - + +
linestmtbrancondsubpodtimecode
1package WebService::Hexonet::Connector::Response;
2
3
1
1
8
2
use 5.026_000;
4
1
1
1
2
1
10
use strict;
5
1
1
1
1
1
11
use warnings;
6
1
1
1
225
1
12
use WebService::Hexonet::Connector::Column;
7
1
1
1
239
1
15
use WebService::Hexonet::Connector::Record;
8
1
1
1
132
137
2
use parent qw(WebService::Hexonet::Connector::ResponseTemplate);
9
1
1
1
44
1
7
use POSIX qw(ceil floor);
10
1
1
1
309
5234
3
use List::MoreUtils qw(first_index);
11
1
1
1
638
1
50
use Readonly;
2
3
1
1
8
1
use 5.026_000;
4
1
1
1
2
1
11
use strict;
5
1
1
1
1
1
13
use warnings;
6
1
1
1
220
2
10
use WebService::Hexonet::Connector::Column;
7
1
1
1
240
1
12
use WebService::Hexonet::Connector::Record;
8
1
1
1
113
121
2
use parent qw(WebService::Hexonet::Connector::ResponseTemplate);
9
1
1
1
18
1
5
use POSIX qw(ceil floor);
10
1
1
1
219
4692
3
use List::MoreUtils qw(first_index);
11
1
1
1
553
1
32
use Readonly;
12Readonly my $INDEX_NOT_FOUND => -1;
13
14
1
1
1
2
12
6
use version 0.9917; our $VERSION = version->declare('v2.8.1');
13
14
1
1
1
2
8
2
use version 0.9917; our $VERSION = version->declare('v2.9.0');
15
16
17sub new {
18
51
1
153
    my ( $class, $raw, $cmd, $ph ) = @_;
19
51
170
    my $self = WebService::Hexonet::Connector::ResponseTemplate->new($raw);
18
51
1
13117
    my ( $class, $raw, $cmd, $ph ) = @_;
19
51
150
    my $self = WebService::Hexonet::Connector::ResponseTemplate->new($raw);
20    # care about getting placeholder variables replaced
21
51
165
    if ( $self->{raw} =~ /[{][[:upper:]_]+[}]/gsmx ) {
22
4
7
        if ( !defined $ph ) {
23
3
5
            $ph = {};
21
51
112
    if ( $self->{raw} =~ /[{][[:upper:]_]+[}]/gsmx ) {
22
4
6
        if ( !defined $ph ) {
23
3
3
            $ph = {};
24        }
25
4
4
7
8
        foreach my $key ( keys %{$ph} ) {
26
1
4
            my $find    = "[{]${key}[}]";
27
1
1
            my $replace = $ph->{$key};
28
1
22
            $self->{raw} =~ s/$find/$replace/gsmx;
25
4
4
4
7
        foreach my $key ( keys %{$ph} ) {
26
1
2
            my $find    = "[{]${key}[}]";
27
1
2
            my $replace = $ph->{$key};
28
1
11
            $self->{raw} =~ s/$find/$replace/gsmx;
29        }
30
4
13
        $self->{raw} =~ s/[{][[:upper:]_]+[}]//gsmx;
31
4
11
        $self = WebService::Hexonet::Connector::ResponseTemplate->new( $self->{raw} );
30
4
9
        $self->{raw} =~ s/[{][[:upper:]_]+[}]//gsmx;
31
4
7
        $self = WebService::Hexonet::Connector::ResponseTemplate->new( $self->{raw} );
32    }
33
51
74
    $self = bless $self, $class;
34
51
93
    $self->{command} = $cmd;
35
51
105
    if ( defined $self->{command}->{PASSWORD} ) {
33
51
78
    $self = bless $self, $class;
34
51
68
    $self->{command} = $cmd;
35
51
85
    if ( defined $self->{command}->{PASSWORD} ) {
36        # make password no longer accessible
37
1
2
        $self->{command}->{PASSWORD} = '***';
38    }
39
51
72
    $self->{columnkeys}  = [];
40
51
71
    $self->{columns}     = [];
41
51
52
    $self->{records}     = [];
42
51
57
    $self->{recordIndex} = 0;
43
44
51
106
    my $h = $self->getHash();
45
51
80
    if ( defined $h->{PROPERTY} ) {
46
33
33
35
170
        my @keys  = keys %{ $h->{PROPERTY} };
47
33
50
        my $count = 0;
48
33
45
        foreach my $key (@keys) {
49
155
155
100
384
            my @d = @{ $h->{PROPERTY}->{$key} };
50
155
234
            $self->addColumn( $key, @d );
51
155
122
            my $len = scalar @d;
52
155
194
            if ( $len > $count ) {
53
51
96
                $count = $len;
39
51
64
    $self->{columnkeys}  = [];
40
51
59
    $self->{columns}     = [];
41
51
66
    $self->{records}     = [];
42
51
63
    $self->{recordIndex} = 0;
43
44
51
101
    my $h = $self->getHash();
45
51
72
    if ( defined $h->{PROPERTY} ) {
46
33
33
29
80
        my @keys  = keys %{ $h->{PROPERTY} };
47
33
48
        my $count = 0;
48
33
37
        foreach my $key (@keys) {
49
155
155
110
307
            my @d = @{ $h->{PROPERTY}->{$key} };
50
155
208
            $self->addColumn( $key, @d );
51
155
103
            my $len = scalar @d;
52
155
171
            if ( $len > $count ) {
53
53
97
                $count = $len;
54            }
55        }
56
33
43
        $count--;
57
33
69
        for my $i ( 0 .. $count ) {
58
3122
2123
            my %d = ();
59
3122
2264
            foreach my $colkey (@keys) {
60
18670
14880
                my $col = $self->getColumn($colkey);
61
18670
15681
                if ( defined $col ) {
62
18670
15760
                    my $v = $col->getDataByIndex($i);
63
18670
17074
                    if ( defined $v ) {
64
3249
3326
                        $d{$colkey} = $v;
56
33
31
        $count--;
57
33
55
        for my $i ( 0 .. $count ) {
58
3124
2064
            my %d = ();
59
3124
2087
            foreach my $colkey (@keys) {
60
18682
14524
                my $col = $self->getColumn($colkey);
61
18682
15101
                if ( defined $col ) {
62
18682
15973
                    my $v = $col->getDataByIndex($i);
63
18682
16778
                    if ( defined $v ) {
64
3251
3195
                        $d{$colkey} = $v;
65                    }
66                }
67            }
68
3122
2736
            $self->addRecord( \%d );
68
3124
2500
            $self->addRecord( \%d );
69        }
70    }
71
51
649
    return $self;
71
51
370
    return $self;
72}
73
74
75sub addColumn {
76
155
1
379
    my ( $self, $key, @data ) = @_;
77
155
155
111
301
    push @{ $self->{columns} }, WebService::Hexonet::Connector::Column->new( $key, @data );
78
155
155
122
152
    push @{ $self->{columnkeys} }, $key;
79
155
169
    return $self;
76
155
1
347
    my ( $self, $key, @data ) = @_;
77
155
155
105
272
    push @{ $self->{columns} }, WebService::Hexonet::Connector::Column->new( $key, @data );
78
155
155
111
149
    push @{ $self->{columnkeys} }, $key;
79
155
164
    return $self;
80}
81
82
83sub addRecord {
84
3122
1
2406
    my ( $self, $h ) = @_;
85
3122
3122
2082
3443
    push @{ $self->{records} }, WebService::Hexonet::Connector::Record->new($h);
86
3122
2715
    return $self;
84
3124
1
2333
    my ( $self, $h ) = @_;
85
3124
3124
2161
3160
    push @{ $self->{records} }, WebService::Hexonet::Connector::Record->new($h);
86
3124
2591
    return $self;
87}
88
89
90sub getColumn {
91
18772
1
14343
    my ( $self, $key ) = @_;
92
18772
14749
    if ( $self->_hasColumn($key) ) {
93
18755
65597
18755
45409
41989
16888
        my $idx = first_index { $_ eq $key } @{ $self->{columnkeys} };
94
18755
19519
        return $self->{columns}[ $idx ];
91
18784
1
13621
    my ( $self, $key ) = @_;
92
18784
15301
    if ( $self->_hasColumn($key) ) {
93
18767
65623
18767
44870
42404
16093
        my $idx = first_index { $_ eq $key } @{ $self->{columnkeys} };
94
18767
19299
        return $self->{columns}[ $idx ];
95    }
96
17
54
    return;
96
17
53
    return;
97}
98
99
100sub getColumnIndex {
101
2
1
7
    my ( $self, $key, $idx ) = @_;
101
2
1
6
    my ( $self, $key, $idx ) = @_;
102
2
3
    my $col = $self->getColumn($key);
103
2
4
    return $col->getDataByIndex($idx) if defined $col;
104
1
3
    return;
104
1
2
    return;
105}
106
107
108sub getColumnKeys {
109
3
1
397
    my $self = shift;
110
3
3
4
8
    return \@{ $self->{columnkeys} };
109
3
1
320
    my $self = shift;
110
3
3
3
7
    return \@{ $self->{columnkeys} };
111}
112
113
114sub getColumns {
115
1
0
3
    my $self = shift;
116
1
1
1
2
    return \@{ $self->{columns} };
117}
118
119
120sub getCommand {
121
8
1
24
    my $self = shift;
122
8
17
    return $self->{command};
121
8
1
23
    my $self = shift;
122
8
16
    return $self->{command};
123}
124
125
126sub getCommandPlain {
127
2
1
11
    my $self = shift;
128
2
3
    my $str  = q{};
129
2
2
2
9
    foreach my $key ( sort keys %{ $self->{command} } ) {
130
6
6
        my $val = $self->{command}->{$key};
131
6
7
        $str .= "${key} = ${val}\n";
127
4
1
11
    my $self = shift;
128
4
7
    my $str  = q{};
129
4
4
7
17
    foreach my $key ( sort keys %{ $self->{command} } ) {
130
10
40
        my $val = $self->{command}->{$key};
131
10
19
        $str .= "${key} = ${val}\n";
132    }
133
2
5
    return $str;
133
4
11
    return $str;
134}
135
136
137sub getCurrentPageNumber {
138
19
1
23
    my $self  = shift;
139
19
103
    my $first = $self->getFirstRecordIndex();
140
19
29
    my $limit = $self->getRecordsLimitation();
141
19
42
    if ( defined $first && $limit > 0 ) {
142
14
48
        return floor( $first / $limit ) + 1;
138
19
1
18
    my $self  = shift;
139
19
24
    my $first = $self->getFirstRecordIndex();
140
19
23
    my $limit = $self->getRecordsLimitation();
141
19
28
    if ( defined $first && $limit > 0 ) {
142
14
30
        return floor( $first / $limit ) + 1;
143    }
144
5
5
    return $INDEX_NOT_FOUND;
145}
146
147
148sub getCurrentRecord {
149
2
1
9
    my $self = shift;
150
2
5
    return $self->{records}[ $self->{recordIndex} ]
149
2
1
5
    my $self = shift;
150
2
4
    return $self->{records}[ $self->{recordIndex} ]
151        if $self->_hasCurrentRecord();
152
1
6
    return;
152
1
4
    return;
153}
154
155
156sub getFirstRecordIndex {
157
28
1
32
    my $self = shift;
158
28
44
    my $col  = $self->getColumn('FIRST');
159
28
38
    if ( defined $col ) {
160
21
35
        my $f = $col->getDataByIndex(0);
161
21
30
        if ( defined $f ) {
162
21
36
            return int $f;
157
28
1
25
    my $self = shift;
158
28
38
    my $col  = $self->getColumn('FIRST');
159
28
32
    if ( defined $col ) {
160
21
28
        my $f = $col->getDataByIndex(0);
161
21
29
        if ( defined $f ) {
162
21
33
            return int $f;
163        }
164    }
165
7
7
6
9
    my $len = scalar @{ $self->{records} };
166
7
13
    return 0 if ( $len > 0 );
167
6
7
    return;
165
7
7
5
6
    my $len = scalar @{ $self->{records} };
166
7
11
    return 0 if ( $len > 0 );
167
6
9
    return;
168}
169
170
171sub getLastRecordIndex {
172
9
1
17
    my $self = shift;
173
9
18
    my $col  = $self->getColumn('LAST');
174
9
18
    if ( defined $col ) {
175
7
16
        my $l = $col->getDataByIndex(0);
172
9
1
16
    my $self = shift;
173
9
16
    my $col  = $self->getColumn('LAST');
174
9
16
    if ( defined $col ) {
175
7
12
        my $l = $col->getDataByIndex(0);
176
7
13
        if ( defined $l ) {
177
7
24
            return int $l;
178        }
179    }
180
2
4
    my $len = $self->getRecordsCount();
181
2
5
    if ( $len > 0 ) {
181
2
3
    if ( $len > 0 ) {
182
1
3
        return ( $len - 1 );
183    }
184
1
3
    return;
184
1
4
    return;
185}
186
187
188sub getListHash {
189
1
1
3
    my $self = shift;
190
1
2
    my @lh   = ();
190
1
1
    my @lh   = ();
191
1
1
1
2
    foreach my $rec ( @{ $self->getRecords() } ) {
192
2
13
        push @lh, $rec->getData();
192
2
4
        push @lh, $rec->getData();
193    }
194
1
3
    my $r = {
194
1
2
    my $r = {
195        LIST => \@lh,
196        meta => {
197            columns => $self->getColumnKeys(),
198            pg      => $self->getPagination()
199        }
200    };
201
1
4
    return $r;
201
1
3
    return $r;
202}
203
204
205sub getNextRecord {
206
5
1
13
    my $self = shift;
207
5
10
    return $self->{records}[ ++$self->{recordIndex} ]
206
5
1
10
    my $self = shift;
207
5
7
    return $self->{records}[ ++$self->{recordIndex} ]
208        if ( $self->_hasNextRecord() );
209
2
6
    return;
209
2
5
    return;
210}
211
212
213sub getNextPageNumber {
214
5
1
11
    my $self = shift;
215
5
8
    my $cp   = $self->getCurrentPageNumber();
216
5
11
    if ( $cp < 0 ) {
217
1
2
        return $INDEX_NOT_FOUND;
214
5
1
7
    my $self = shift;
215
5
9
    my $cp   = $self->getCurrentPageNumber();
216
5
8
    if ( $cp < 0 ) {
217
1
1
        return $INDEX_NOT_FOUND;
218    }
219
4
6
    my $page  = $cp + 1;
220
4
8
    my $pages = $self->getNumberOfPages();
221
4
16
    return $page if ( $page <= $pages );
219
4
4
    my $page  = $cp + 1;
220
4
4
    my $pages = $self->getNumberOfPages();
221
4
8
    return $page if ( $page <= $pages );
222
0
0
    return $pages;
223}
224
225
226sub getNumberOfPages {
227
9
1
11
    my $self  = shift;
228
9
13
    my $t     = $self->getRecordsTotalCount();
229
9
11
    my $limit = $self->getRecordsLimitation();
230
9
19
    if ( $t > 0 && $limit > 0 ) {
231
8
19
        return ceil( $t / $limit );
228
9
9
    my $t     = $self->getRecordsTotalCount();
229
9
10
    my $limit = $self->getRecordsLimitation();
230
9
14
    if ( $t > 0 && $limit > 0 ) {
231
8
14
        return ceil( $t / $limit );
232    }
233
1
4
    return 0;
233
1
3
    return 0;
234}
235
236
237sub getPagination {
238
3
1
408
    my $self = shift;
239
3
6
    my $r    = {
238
3
1
312
    my $self = shift;
239
3
7
    my $r    = {
240        COUNT        => $self->getRecordsCount(),
241        CURRENTPAGE  => $self->getCurrentPageNumber(),
242        FIRST        => $self->getFirstRecordIndex(),
250
3
10
    return $r;
251}
252
253
254sub getPreviousPageNumber {
255
5
1
9
    my $self = shift;
256
5
8
    my $cp   = $self->getCurrentPageNumber();
257
5
13
    if ( $cp < 0 ) {
255
5
1
8
    my $self = shift;
256
5
11
    my $cp   = $self->getCurrentPageNumber();
257
5
8
    if ( $cp < 0 ) {
258
1
2
        return $INDEX_NOT_FOUND;
259    }
260
4
3
    my $np = $cp - 1;
261
4
5
    return $np if ( $np > 0 );
260
4
4
    my $np = $cp - 1;
261
4
6
    return $np if ( $np > 0 );
262
4
4
    return $INDEX_NOT_FOUND;
263}
264
265
266sub getPreviousRecord {
267
4
1
10
    my $self = shift;
268
4
8
    return $self->{records}[ --$self->{recordIndex} ]
267
4
1
8
    my $self = shift;
268
4
5
    return $self->{records}[ --$self->{recordIndex} ]
269        if ( $self->_hasPreviousRecord() );
270
3
10
    return;
270
3
9
    return;
271}
272
273
274sub getRecord {
275
3
1
7
    my ( $self, $idx ) = @_;
276
3
20
    if ( $idx >= 0 && $self->getRecordsCount() > $idx ) {
277
3
17
        return $self->{records}[ $idx ];
276
3
16
    if ( $idx >= 0 && $self->getRecordsCount() > $idx ) {
277
3
15
        return $self->{records}[ $idx ];
278    }
279
0
0
    return;
280}
281
282
283sub getRecords {
284
1
1
3
    my $self = shift;
285
1
1
1
3
    return \@{ $self->{records} };
284
1
1
1
    my $self = shift;
285
1
1
1
2
    return \@{ $self->{records} };
286}
287
288
289sub getRecordsCount {
290
19
1
27
    my $self = shift;
291
19
19
22
32
    my $len  = scalar @{ $self->{records} };
292
19
44
    return $len;
290
19
1
21
    my $self = shift;
291
19
19
31
26
    my $len  = scalar @{ $self->{records} };
292
19
39
    return $len;
293}
294
295
296sub getRecordsTotalCount {
297
18
1
32
    my $self = shift;
298
18
25
    my $col  = $self->getColumn('TOTAL');
299
18
18
    if ( defined $col ) {
300
17
24
        my $t = $col->getDataByIndex(0);
301
17
23
        if ( defined $t ) {
302
17
39
            return int $t;
297
18
1
21
    my $self = shift;
298
18
17
    my $col  = $self->getColumn('TOTAL');
299
18
19
    if ( defined $col ) {
300
17
15
        my $t = $col->getDataByIndex(0);
301
17
20
        if ( defined $t ) {
302
17
34
            return int $t;
303        }
304    }
305
1
5
    return $self->getRecordsCount();
305
1
2
    return $self->getRecordsCount();
306}
307
308
309sub getRecordsLimitation {
310
41
1
39
    my $self = shift;
311
41
47
    my $col  = $self->getColumn('LIMIT');
312
41
53
    if ( defined $col ) {
313
35
49
        my $l = $col->getDataByIndex(0);
314
35
49
        if ( defined $l ) {
315
35
53
            return int $l;
310
41
1
28
    my $self = shift;
311
41
49
    my $col  = $self->getColumn('LIMIT');
312
41
43
    if ( defined $col ) {
313
35
45
        my $l = $col->getDataByIndex(0);
314
35
42
        if ( defined $l ) {
315
35
55
            return int $l;
316        }
317    }
318
6
9
    return $self->getRecordsCount();
318
6
30
    return $self->getRecordsCount();
319}
320
321
322sub hasNextPage {
323
2
1
7
    my $self = shift;
324
2
5
    my $cp   = $self->getCurrentPageNumber();
325
2
7
    if ( $cp < 0 ) {
326
1
2
        return 0;
323
2
1
6
    my $self = shift;
324
2
3
    my $cp   = $self->getCurrentPageNumber();
325
2
5
    if ( $cp < 0 ) {
326
1
3
        return 0;
327    }
328
1
1
    my $np = $cp + 1;
329
1
3
    if ( $np <= $self->getNumberOfPages() ) {
330
1
3
        return 1;
328
1
2
    my $np = $cp + 1;
329
1
1
    if ( $np <= $self->getNumberOfPages() ) {
330
1
9
        return 1;
331    }
332
0
0
    return 0;
333}
334
335
336sub hasPreviousPage {
337
2
1
6
    my $self = shift;
338
2
5
    my $cp   = $self->getCurrentPageNumber();
339
2
7
    if ( $cp < 0 ) {
337
2
1
7
    my $self = shift;
338
2
2
    my $cp   = $self->getCurrentPageNumber();
339
2
5
    if ( $cp < 0 ) {
340
1
3
        return 0;
341    }
342
1
2
    my $pp = $cp - 1;
343
1
2
    if ( $pp > 0 ) {
343
1
1
    if ( $pp > 0 ) {
344
0
0
        return 1;
345    }
346
1
13
    return 0;
346
1
3
    return 0;
347}
348
349
350sub rewindRecordList {
351
1
1
1
    my $self = shift;
351
1
1
2
    my $self = shift;
352
1
2
    $self->{recordIndex} = 0;
353
1
3
    return $self;
354}
355
356
357sub _hasColumn {
358
18772
13592
    my ( $self, $key ) = @_;
359
18772
65605
18772
17321
43177
16951
    my $idx = first_index { $_ eq $key } @{ $self->{columnkeys} };
360
18772
20961
    return ( $idx > $INDEX_NOT_FOUND );
358
18784
13533
    my ( $self, $key ) = @_;
359
18784
65631
18784
17168
41162
16156
    my $idx = first_index { $_ eq $key } @{ $self->{columnkeys} };
360
18784
19315
    return ( $idx > $INDEX_NOT_FOUND );
361}
362
363
364sub _hasCurrentRecord {
365
8
33
    my $self = shift;
366
8
8
9
36
    my $len  = scalar @{ $self->{records} };
367
8
62
    return ( $len > 0 && $self->{recordIndex} >= 0 && $self->{recordIndex} < $len );
365
8
5
    my $self = shift;
366
8
8
8
8
    my $len  = scalar @{ $self->{records} };
367
8
49
    return ( $len > 0 && $self->{recordIndex} >= 0 && $self->{recordIndex} < $len );
368}
369
370
371sub _hasNextRecord {
372
5
7
    my $self = shift;
373
5
8
    my $next = $self->{recordIndex} + 1;
374
5
5
7
6
    my $len  = scalar @{ $self->{records} };
375
5
10
    return ( $self->_hasCurrentRecord() && $next < $len );
372
5
12
    my $self = shift;
373
5
7
    my $next = $self->{recordIndex} + 1;
374
5
5
4
6
    my $len  = scalar @{ $self->{records} };
375
5
8
    return ( $self->_hasCurrentRecord() && $next < $len );
376}
377
378
379sub _hasPreviousRecord {
380
4
7
    my $self = shift;
381
4
12
    return ( $self->{recordIndex} > 0 && $self->_hasCurrentRecord() );
380
4
4
    my $self = shift;
381
4
11
    return ( $self->{recordIndex} > 0 && $self->_hasCurrentRecord() );
382}
383
3841;
385
diff --git a/cover_db/blib-lib-WebService-Hexonet-Connector-ResponseParser-pm.html b/cover_db/blib-lib-WebService-Hexonet-Connector-ResponseParser-pm.html index 144e1da..f3c45e5 100644 --- a/cover_db/blib-lib-WebService-Hexonet-Connector-ResponseParser-pm.html +++ b/cover_db/blib-lib-WebService-Hexonet-Connector-ResponseParser-pm.html @@ -26,64 +26,64 @@

File Coverage

- - - - + + + + - - - - - - - - - - - + + + + + + + + + + + - - - - + + + + - + - + - + - - - + + + - - - - - + + + + + - - + + - - + + - - + + - - + + - - + +
linestmtbrancondsubpodtimecode
1package WebService::Hexonet::Connector::ResponseParser;
2
3
1
1
9
1
use 5.026_000;
4
1
1
1
2
1
6
use strict;
5
1
1
1
2
1
10
use warnings;
6
7
1
1
1
2
8
3
use version 0.9917; our $VERSION = version->declare('v2.8.1');
2
3
1
1
6
2
use 5.026_000;
4
1
1
1
2
0
7
use strict;
5
1
1
1
1
1
10
use warnings;
6
7
1
1
1
2
8
2
use version 0.9917; our $VERSION = version->declare('v2.9.0');
8
9
10sub parse {
11
113
1
127
    my $response = shift;
12
113
123
    my %hash     = ();
13
113
368
    $response =~ s/\r\n/\n/gmsx;
14
113
708
    foreach ( split /\n/msx, $response ) {
15
3970
5991
        if (/^([^\=]*[^\t\= ])[\t ]*=[\t ]*(.+)/msx) {
16
3709
2928
            my $attr  = $1;
17
3709
2878
            my $value = $2;
18
3709
6234
            $value =~ s/[\t ]*$//msx;
19
3709
3939
            if ( $attr =~ /^property\[([^\]]*)\]/imsx ) {
20
3368
3095
                if ( !defined $hash{PROPERTY} ) {
21
50
83
                    $hash{PROPERTY} = {};
11
113
1
122
    my $response = shift;
12
113
109
    my %hash     = ();
13
113
332
    $response =~ s/\r\n/\n/gmsx;
14
113
684
    foreach ( split /\n/msx, $response ) {
15
3972
5375
        if (/^([^\=]*[^\t\= ])[\t ]*=[\t ]*(.+)/msx) {
16
3711
2917
            my $attr  = $1;
17
3711
2686
            my $value = $2;
18
3711
6162
            $value =~ s/[\t ]*$//msx;
19
3711
3878
            if ( $attr =~ /^property\[([^\]]*)\]/imsx ) {
20
3370
2946
                if ( !defined $hash{PROPERTY} ) {
21
50
81
                    $hash{PROPERTY} = {};
22                }
23
3368
2515
                my $prop = uc $1;
24
3368
2389
                $prop =~ s/\s//ogmsx;
25
3368
2845
                if ( defined $hash{PROPERTY}{$prop} ) {
26
3111
3111
1928
3225
                    push @{ $hash{PROPERTY}{$prop} }, $value;
23
3370
2452
                my $prop = uc $1;
24
3370
2357
                $prop =~ s/\s//ogmsx;
25
3370
2769
                if ( defined $hash{PROPERTY}{$prop} ) {
26
3113
3113
1861
3016
                    push @{ $hash{PROPERTY}{$prop} }, $value;
27                } else {
28
257
382
                    $hash{PROPERTY}{$prop} = [ $value ];
28
257
353
                    $hash{PROPERTY}{$prop} = [ $value ];
29                }
30            } else {
31
341
526
                $hash{ uc $attr } = $value;
31
341
448
                $hash{ uc $attr } = $value;
32            }
33        }
34    }
35
113
426
    return \%hash;
35
113
323
    return \%hash;
36}
37
38
39sub serialize {
40
6
1
41
    my $h     = shift;
41
6
8
    my $plain = '[RESPONSE]';
42
6
14
    if ( defined $h->{PROPERTY} ) {
40
6
1
29
    my $h     = shift;
41
6
6
    my $plain = '[RESPONSE]';
42
6
10
    if ( defined $h->{PROPERTY} ) {
43
3
5
        my $props = $h->{PROPERTY};
44
3
3
4
12
        foreach my $key ( sort keys %{$props} ) {
45
5
4
            my $i = 0;
46
5
5
6
9
            foreach my $val ( @{ $props->{$key} } ) {
47
11
16
                $plain .= "\r\nPROPERTY[${key}][${i}]=${val}";
48
11
15
                $i++;
44
3
3
10
10
        foreach my $key ( sort keys %{$props} ) {
45
5
3
            my $i = 0;
46
5
5
5
6
            foreach my $val ( @{ $props->{$key} } ) {
47
11
15
                $plain .= "\r\nPROPERTY[${key}][${i}]=${val}";
48
11
11
                $i++;
49            }
50        }
51    }
52
6
13
    if ( defined $h->{CODE} ) {
53
5
10
        $plain .= "\r\nCODE=" . $h->{CODE};
52
6
18
    if ( defined $h->{CODE} ) {
53
5
7
        $plain .= "\r\nCODE=" . $h->{CODE};
54    }
55
6
12
    if ( defined $h->{DESCRIPTION} ) {
56
5
20
        $plain .= "\r\nDESCRIPTION=" . $h->{DESCRIPTION};
55
6
8
    if ( defined $h->{DESCRIPTION} ) {
56
5
8
        $plain .= "\r\nDESCRIPTION=" . $h->{DESCRIPTION};
57    }
58
6
10
    if ( defined $h->{QUEUETIME} ) {
59
1
4
        $plain .= "\r\nQUEUETIME=" . $h->{QUEUETIME};
58
6
8
    if ( defined $h->{QUEUETIME} ) {
59
1
2
        $plain .= "\r\nQUEUETIME=" . $h->{QUEUETIME};
60    }
61
6
13
    if ( defined $h->{RUNTIME} ) {
62
1
2
        $plain .= "\r\nRUNTIME=" . $h->{RUNTIME};
61
6
8
    if ( defined $h->{RUNTIME} ) {
62
1
1
        $plain .= "\r\nRUNTIME=" . $h->{RUNTIME};
63    }
64
6
17
    $plain .= "\r\nEOF\r\n";
65
6
13
    return $plain;
64
6
6
    $plain .= "\r\nEOF\r\n";
65
6
9
    return $plain;
66}
67
681;
69
diff --git a/cover_db/blib-lib-WebService-Hexonet-Connector-ResponseTemplate-pm.html b/cover_db/blib-lib-WebService-Hexonet-Connector-ResponseTemplate-pm.html index 769f7fb..e99ea85 100644 --- a/cover_db/blib-lib-WebService-Hexonet-Connector-ResponseTemplate-pm.html +++ b/cover_db/blib-lib-WebService-Hexonet-Connector-ResponseTemplate-pm.html @@ -26,78 +26,78 @@

File Coverage

- - - - - - + + + + + + - - - - + + + + - - - - - + + + + + - + - - + + - - + + - - + + - - - + + + - - + + - - - + + + - + - - - + + + - - - + + + - - - + + + - - - + + + - +
linestmtbrancondsubpodtimecode
1package WebService::Hexonet::Connector::ResponseTemplate;
2
3
1
1
318
2
use 5.026_000;
4
1
1
1
2
1
12
use strict;
5
1
1
1
8
1
11
use warnings;
6
1
1
1
241
1
24
use WebService::Hexonet::Connector::ResponseParser;
7
1
1
1
288
3
12
use WebService::Hexonet::Connector::ResponseTemplateManager;
8
9
1
1
1
12
7
2
use version 0.9917; our $VERSION = version->declare('v2.8.1');
2
3
1
1
249
1
use 5.026_000;
4
1
1
1
2
5
8
use strict;
5
1
1
1
2
1
9
use warnings;
6
1
1
1
243
1
13
use WebService::Hexonet::Connector::ResponseParser;
7
1
1
1
242
2
15
use WebService::Hexonet::Connector::ResponseTemplateManager;
8
9
1
1
1
3
6
2
use version 0.9917; our $VERSION = version->declare('v2.9.0');
10
11my $rtm = WebService::Hexonet::Connector::ResponseTemplateManager->getInstance();
12
13
14sub new {
15
111
1
3525
    my ( $class, $raw ) = @_;
16
111
149
    my $self = {};
17
111
377
    if ( !defined $raw || length $raw == 0 ) {
18
11
17
        $raw = "[RESPONSE]\r\nCODE=423\r\nDESCRIPTION=Empty API response. Probably unreachable API end point {CONNECTION_URL}\r\nEOF\r\n";
15
111
1
3172
    my ( $class, $raw ) = @_;
16
111
137
    my $self = {};
17
111
349
    if ( !defined $raw || length $raw == 0 ) {
18
11
15
        $raw = "[RESPONSE]\r\nCODE=423\r\nDESCRIPTION=Empty API response. Probably unreachable API end point {CONNECTION_URL}\r\nEOF\r\n";
19    }
20
111
174
    $self->{raw}  = $raw;
21
111
232
    $self->{hash} = WebService::Hexonet::Connector::ResponseParser::parse($raw);
22
111
367
    if ( !defined $self->{hash}->{'DESCRIPTION'} || !defined $self->{hash}->{'CODE'} ) {
23
1
5
        $self->{raw}  = $rtm->getTemplate('invalid')->getPlain();
24
1
4
        $self->{hash} = WebService::Hexonet::Connector::ResponseParser::parse( $self->{raw} );
20
111
153
    $self->{raw}  = $raw;
21
111
185
    $self->{hash} = WebService::Hexonet::Connector::ResponseParser::parse($raw);
22
111
289
    if ( !defined $self->{hash}->{'DESCRIPTION'} || !defined $self->{hash}->{'CODE'} ) {
23
1
3
        $self->{raw}  = $rtm->getTemplate('invalid')->getPlain();
24
1
3
        $self->{hash} = WebService::Hexonet::Connector::ResponseParser::parse( $self->{raw} );
25    }
26
111
310
    return bless $self, $class;
26
111
273
    return bless $self, $class;
27}
28
29
30sub getCode {
31
3
1
11
    my $self = shift;
32
3
11
    return ( $self->{hash}->{CODE} + 0 );
31
3
1
9
    my $self = shift;
32
3
14
    return ( $self->{hash}->{CODE} + 0 );
33}
34
35
36sub getDescription {
37
7
1
21
    my $self = shift;
38
7
29
    return $self->{hash}->{DESCRIPTION};
37
7
1
13
    my $self = shift;
38
7
25
    return $self->{hash}->{DESCRIPTION};
39}
40
41
42sub getPlain {
43
30
1
94
    my $self = shift;
44
30
108
    return $self->{raw};
43
32
1
81
    my $self = shift;
44
32
98
    return $self->{raw};
45}
46
47
48sub getQueuetime {
49
2
1
8
    my $self = shift;
50
2
6
    if ( defined $self->{hash}->{QUEUETIME} ) {
51
1
6
        return ( $self->{hash}->{QUEUETIME} + 0.00 );
49
2
1
7
    my $self = shift;
50
2
5
    if ( defined $self->{hash}->{QUEUETIME} ) {
51
1
3
        return ( $self->{hash}->{QUEUETIME} + 0.00 );
52    }
53
1
4
    return 0.00;
54}
55
56
57sub getHash {
58
64
1
94
    my $self = shift;
59
64
125
    return $self->{hash};
58
64
1
69
    my $self = shift;
59
64
99
    return $self->{hash};
60}
61
62
63sub getRuntime {
64
2
1
7
    my $self = shift;
65
2
7
    if ( defined $self->{hash}->{RUNTIME} ) {
66
1
6
        return ( $self->{hash}->{RUNTIME} + 0.00 );
64
2
1
6
    my $self = shift;
65
2
4
    if ( defined $self->{hash}->{RUNTIME} ) {
66
1
4
        return ( $self->{hash}->{RUNTIME} + 0.00 );
67    }
68
1
4
    return 0.00;
68
1
3
    return 0.00;
69}
70
71
72sub isError {
73
2
1
1684
    my $self = shift;
74
2
12
    my $first = substr $self->{hash}->{CODE}, 0, 1;
75
2
11
    return ( $first eq '5' );
73
2
1
1430
    my $self = shift;
74
2
7
    my $first = substr $self->{hash}->{CODE}, 0, 1;
75
2
10
    return ( $first eq '5' );
76}
77
78
79sub isSuccess {
80
21
1
7026
    my $self = shift;
81
21
66
    my $first = substr $self->{hash}->{CODE}, 0, 1;
82
21
105
    return ( $first eq '2' );
80
21
1
6081
    my $self = shift;
81
21
55
    my $first = substr $self->{hash}->{CODE}, 0, 1;
82
21
73
    return ( $first eq '2' );
83}
84
85
86sub isTmpError {
87
1
1
1225
    my $self = shift;
88
1
3
    my $first = substr $self->{hash}->{CODE}, 0, 1;
89
1
5
    return ( $first eq '4' );
87
1
1
506
    my $self = shift;
88
1
4
    my $first = substr $self->{hash}->{CODE}, 0, 1;
89
1
4
    return ( $first eq '4' );
90}
91
92
93sub isPending {
94
2
1
9
    my $self = shift;
95
2
7
    if ( defined $self->{hash}->{PENDING} ) {
96
1
5
        return int( $self->{hash}->{PENDING} );
94
2
1
5
    my $self = shift;
95
2
5
    if ( defined $self->{hash}->{PENDING} ) {
96
1
3
        return int( $self->{hash}->{PENDING} );
97    }
98
1
6
    return 0;
98
1
3
    return 0;
99}
100
1011;
102
diff --git a/cover_db/blib-lib-WebService-Hexonet-Connector-ResponseTemplateManager-pm.html b/cover_db/blib-lib-WebService-Hexonet-Connector-ResponseTemplateManager-pm.html index 4bdf1a3..61ac89a 100644 --- a/cover_db/blib-lib-WebService-Hexonet-Connector-ResponseTemplateManager-pm.html +++ b/cover_db/blib-lib-WebService-Hexonet-Connector-ResponseTemplateManager-pm.html @@ -26,70 +26,70 @@

File Coverage

- - - - - - + + + + + + - + - - - - + + + + - + - + - - + + - - - + + + - - - - + + + + - + - + - + - - - + + + - - + + - - - - + + + + - + - +
linestmtbrancondsubpodtimecode
1package WebService::Hexonet::Connector::ResponseTemplateManager;
2
3
1
1
10
2
use 5.026_000;
4
1
1
1
3
0
8
use strict;
5
1
1
1
2
1
9
use warnings;
6
1
1
1
2
1
11
use WebService::Hexonet::Connector::ResponseTemplate;
7
1
1
1
2
1
19
use WebService::Hexonet::Connector::ResponseParser;
8
9
1
1
1
2
7
2
use version 0.9917; our $VERSION = version->declare('v2.8.1');
2
3
1
1
7
2
use 5.026_000;
4
1
1
1
2
1
9
use strict;
5
1
1
1
1
1
8
use warnings;
6
1
1
1
2
1
19
use WebService::Hexonet::Connector::ResponseTemplate;
7
1
1
1
1
1
8
use WebService::Hexonet::Connector::ResponseParser;
8
9
1
1
1
2
6
3
use version 0.9917; our $VERSION = version->declare('v2.9.0');
10
11my $instance = undef;
12
13
14sub getInstance {
15
3
1
8
    if ( !defined $instance ) {
15
3
1
7
    if ( !defined $instance ) {
16
1
2
        my $self = { templates => {} };
17
1
2
        $instance = bless $self, shift;
18
1
274
        $instance->addTemplate( '404',          $instance->generateTemplate( '421', 'Page not found' ) );
19
1
2
        $instance->addTemplate( '500',          $instance->generateTemplate( '500', 'Internal server error' ) );
20
1
2
        $instance->addTemplate( 'empty',        $instance->generateTemplate( '423', 'Empty API response. Probably unreachable API end point {CONNECTION_URL}' ) );
17
1
1
        $instance = bless $self, shift;
18
1
1
        $instance->addTemplate( '404',          $instance->generateTemplate( '421', 'Page not found' ) );
19
1
1
        $instance->addTemplate( '500',          $instance->generateTemplate( '500', 'Internal server error' ) );
20
1
1
        $instance->addTemplate( 'empty',        $instance->generateTemplate( '423', 'Empty API response. Probably unreachable API end point {CONNECTION_URL}' ) );
21
1
1
        $instance->addTemplate( 'error',        $instance->generateTemplate( '421', 'Command failed due to server error. Client should try again' ) );
22
1
1
        $instance->addTemplate( 'expired',      $instance->generateTemplate( '530', 'SESSION NOT FOUND' ) );
23
1
1
        $instance->addTemplate( 'httperror',    $instance->generateTemplate( '421', 'Command failed due to HTTP communication error' ) );
23
1
2
        $instance->addTemplate( 'httperror',    $instance->generateTemplate( '421', 'Command failed due to HTTP communication error' ) );
24
1
1
        $instance->addTemplate( 'invalid',      $instance->generateTemplate( '423', 'Invalid API response. Contact Support' ) );
25
1
1
        $instance->addTemplate( 'unauthorized', $instance->generateTemplate( '530', 'Unauthorized' ) );
26    }
27
3
8
    return $instance;
27
3
4
    return $instance;
28}
29
30
31sub generateTemplate {
32
10
1
365
    my ( $self, $code, $description ) = @_;
33
10
34
    return "[RESPONSE]\r\nCODE=${code}\r\nDESCRIPTION=${description}\r\nEOF\r\n";
32
10
1
316
    my ( $self, $code, $description ) = @_;
33
10
21
    return "[RESPONSE]\r\nCODE=${code}\r\nDESCRIPTION=${description}\r\nEOF\r\n";
34}
35
36
37sub addTemplate {
38
10
1
25
    my ( $self, $id, $plain ) = @_;
39
10
21
    $self->{templates}->{$id} = $plain;
40
10
12
    return $instance;
38
10
1
10
    my ( $self, $id, $plain ) = @_;
39
10
16
    $self->{templates}->{$id} = $plain;
40
10
9
    return $instance;
41}
42
43
44sub getTemplate {
45
35
1
9295
    my ( $self, $id ) = @_;
46
35
47
    my $plain;
47
35
92
    if ( $self->hasTemplate($id) ) {
48
34
66
        $plain = $self->{templates}->{$id};
45
35
1
7851
    my ( $self, $id ) = @_;
46
35
38
    my $plain;
47
35
63
    if ( $self->hasTemplate($id) ) {
48
34
48
        $plain = $self->{templates}->{$id};
49    } else {
50
1
5
        $plain = $self->generateTemplate( '500', 'Response Template not found' );
50
1
3
        $plain = $self->generateTemplate( '500', 'Response Template not found' );
51    }
52
35
130
    return WebService::Hexonet::Connector::ResponseTemplate->new($plain);
52
35
89
    return WebService::Hexonet::Connector::ResponseTemplate->new($plain);
53}
54
55
56sub getTemplates {
57
1
1
3
    my $self = shift;
57
1
1
1
    my $self = shift;
58
1
2
    my $tmp  = {};
59
1
3
    my $tpls = $self->{templates};
60
1
1
2
7
    foreach my $key ( keys %{$tpls} ) {
61
10
15
        $tmp->{$key} = WebService::Hexonet::Connector::ResponseTemplate->new( $tpls->{$key} );
59
1
2
    my $tpls = $self->{templates};
60
1
1
1
5
    foreach my $key ( keys %{$tpls} ) {
61
10
13
        $tmp->{$key} = WebService::Hexonet::Connector::ResponseTemplate->new( $tpls->{$key} );
62    }
63
1
2
    return $tmp;
64}
65
66
67sub hasTemplate {
68
35
1
67
    my ( $self, $id ) = @_;
69
35
106
    return defined $self->{templates}->{$id};
68
35
1
50
    my ( $self, $id ) = @_;
69
35
77
    return defined $self->{templates}->{$id};
70}
71
72
73sub isTemplateMatchHash {
74
2
1
9
    my ( $self, $tpl2, $id ) = @_;
75
2
7
    my $tpl = $self->getTemplate($id);
76
2
5
    my $h   = $tpl->getHash();
77
2
14
    return ( $h->{CODE} eq $tpl2->{CODE} ) && ( $h->{DESCRIPTION} eq $tpl2->{DESCRIPTION} );
74
2
1
5
    my ( $self, $tpl2, $id ) = @_;
75
2
3
    my $tpl = $self->getTemplate($id);
76
2
4
    my $h   = $tpl->getHash();
77
2
10
    return ( $h->{CODE} eq $tpl2->{CODE} ) && ( $h->{DESCRIPTION} eq $tpl2->{DESCRIPTION} );
78}
79
80
81sub isTemplateMatchPlain {
82
1
1
4
    my ( $self, $plain, $id ) = @_;
82
1
1
3
    my ( $self, $plain, $id ) = @_;
83
1
3
    my $h = WebService::Hexonet::Connector::ResponseParser::parse($plain);
84
1
4
    return $self->isTemplateMatchHash( $h, $id );
84
1
2
    return $self->isTemplateMatchHash( $h, $id );
85}
86
871;
88
diff --git a/cover_db/blib-lib-WebService-Hexonet-Connector-SocketConfig-pm.html b/cover_db/blib-lib-WebService-Hexonet-Connector-SocketConfig-pm.html index 90e0b35..f56c249 100644 --- a/cover_db/blib-lib-WebService-Hexonet-Connector-SocketConfig-pm.html +++ b/cover_db/blib-lib-WebService-Hexonet-Connector-SocketConfig-pm.html @@ -26,14 +26,14 @@

File Coverage

- - - - - + + + + + - - + + @@ -44,78 +44,78 @@

File Coverage

- - - - + + + + - - + + - - + + - + - - + + - - + + - + - + - - + + - - + + - - - - + + + + - - - - + + + + - - - + + + - + - + - - - - - - + + + + + + - - - + + + - - + + diff --git a/cover_db/blib-lib-WebService-Hexonet-Connector-pm.html b/cover_db/blib-lib-WebService-Hexonet-Connector-pm.html index 0e1c44a..a5dad92 100644 --- a/cover_db/blib-lib-WebService-Hexonet-Connector-pm.html +++ b/cover_db/blib-lib-WebService-Hexonet-Connector-pm.html @@ -26,18 +26,18 @@

File Coverage

linestmtbrancondsubpodtimecode
1package WebService::Hexonet::Connector::SocketConfig;
2
3
1
1
10
2
use 5.026_000;
4
1
1
1
2
1
9
use strict;
5
1
1
1
2
1
16
use warnings;
6
1
1
1
2
1
4
use utf8;
7
8
1
1
1
11
8
4
use version 0.9917; our $VERSION = version->declare('v2.8.1');
2
3
1
1
8
2
use 5.026_000;
4
1
1
1
2
0
10
use strict;
5
1
1
1
1
1
10
use warnings;
6
1
1
1
2
3
2
use utf8;
7
8
1
1
1
15
6
3
use version 0.9917; our $VERSION = version->declare('v2.9.0');
9
10
11sub new {
12
3
1
311
    my $class = shift;
13
3
31
    return bless {
12
3
1
290
    my $class = shift;
13
3
25
    return bless {
14        entity     => q{},
15        login      => q{},
16        otp        => q{},
21    }, $class;
22}
23
24
25sub getPOSTData {
26
55
1
58
    my $self = shift;
27
55
66
    my $data = {};
28
55
138
    if ( length $self->{entity} ) {
29
54
94
        $data->{'s_entity'} = $self->{entity};
26
55
1
56
    my $self = shift;
27
55
70
    my $data = {};
28
55
113
    if ( length $self->{entity} ) {
29
54
82
        $data->{'s_entity'} = $self->{entity};
30    }
31
55
99
    if ( length $self->{login} ) {
32
37
55
        $data->{'s_login'} = $self->{login};
31
55
80
    if ( length $self->{login} ) {
32
37
62
        $data->{'s_login'} = $self->{login};
33    }
34
55
97
    if ( length $self->{otp} ) {
35
1
3
        $data->{'s_otp'} = $self->{otp};
34
55
78
    if ( length $self->{otp} ) {
35
1
1
        $data->{'s_otp'} = $self->{otp};
36    }
37
55
97
    if ( length $self->{pw} ) {
37
55
92
    if ( length $self->{pw} ) {
38
37
44
        $data->{'s_pw'} = $self->{pw};
39    }
40
55
92
    if ( length $self->{remoteaddr} ) {
41
39
47
        $data->{'s_remoteaddr'} = $self->{remoteaddr};
40
55
85
    if ( length $self->{remoteaddr} ) {
41
39
52
        $data->{'s_remoteaddr'} = $self->{remoteaddr};
42    }
43
55
98
    if ( length $self->{session} ) {
44
7
11
        $data->{'s_session'} = $self->{session};
43
55
86
    if ( length $self->{session} ) {
44
7
9
        $data->{'s_session'} = $self->{session};
45    }
46
55
106
    if ( length $self->{user} ) {
46
55
76
    if ( length $self->{user} ) {
47
2
4
        $data->{'s_user'} = $self->{user};
48    }
49
55
84
    return $data;
49
55
67
    return $data;
50}
51
52
53sub getSession {
54
3
1
4
    my $self = shift;
55
3
9
    return $self->{session};
54
3
1
5
    my $self = shift;
55
3
7
    return $self->{session};
56}
57
58
59sub getSystemEntity {
60
1
1
3
    my $self = shift;
61
1
5
    return $self->{entity};
60
1
1
1
    my $self = shift;
61
1
3
    return $self->{entity};
62}
63
64
65sub setLogin {
66
12
1
24
    my ( $self, $value ) = @_;
67
12
24
    $self->{session} = q{};      # Empty string
68
12
23
    $self->{login}   = $value;
69
12
23
    return $self;
66
12
1
21
    my ( $self, $value ) = @_;
67
12
20
    $self->{session} = q{};      # Empty string
68
12
20
    $self->{login}   = $value;
69
12
17
    return $self;
70}
71
72
73sub setOTP {
74
8
1
24
    my ( $self, $value ) = @_;
75
8
17
    $self->{session} = q{};      # Empty string
76
8
16
    $self->{otp}     = $value;
77
8
16
    return $self;
74
8
1
13
    my ( $self, $value ) = @_;
75
8
16
    $self->{session} = q{};      # Empty string
76
8
14
    $self->{otp}     = $value;
77
8
11
    return $self;
78}
79
80
81sub setPassword {
82
12
1
24
    my ( $self, $value ) = @_;
83
12
23
    $self->{session} = q{};      # Empty string
84
12
21
    $self->{pw}      = $value;
82
12
1
18
    my ( $self, $value ) = @_;
83
12
17
    $self->{session} = q{};      # Empty string
84
12
16
    $self->{pw}      = $value;
85
12
19
    return $self;
86}
87
88
89sub setRemoteAddress {
90
3
1
7
    my ( $self, $value ) = @_;
90
3
1
4
    my ( $self, $value ) = @_;
91
3
6
    $self->{remoteaddr} = $value;
92
3
6
    return $self;
92
3
4
    return $self;
93}
94
95
96sub setSession {
97
13
1
24
    my ( $self, $value ) = @_;
98
13
26
    $self->{session} = $value;
99
13
20
    $self->{login}   = q{};      # Empty string
100
13
20
    $self->{pw}      = q{};      # Empty string
101
13
27
    $self->{otp}     = q{};      # Empty string
102
13
18
    return $self;
97
13
1
20
    my ( $self, $value ) = @_;
98
13
20
    $self->{session} = $value;
99
13
19
    $self->{login}   = q{};      # Empty string
100
13
13
    $self->{pw}      = q{};      # Empty string
101
13
21
    $self->{otp}     = q{};      # Empty string
102
13
17
    return $self;
103}
104
105
106sub setSystemEntity {
107
4
1
9
    my ( $self, $value ) = @_;
108
4
8
    $self->{entity} = $value;
109
4
7
    return $self;
107
4
1
8
    my ( $self, $value ) = @_;
108
4
6
    $self->{entity} = $value;
109
4
5
    return $self;
110}
111
112
113sub setUser {
114
2
1
6
    my ( $self, $value ) = @_;
115
2
5
    $self->{user} = $value;
114
2
1
5
    my ( $self, $value ) = @_;
115
2
6
    $self->{user} = $value;
116
2
5
    return $self;
117}
118
1191;
- - + + - - - - - - - - - + + + + + + + + +
linestmtbrancondsubpodtimecode
1package WebService::Hexonet::Connector;
2
3
1
1
308660
6
use 5.026_000;
4
1
1
1
2
1
10
use strict;
2
3
1
1
282898
5
use 5.026_000;
4
1
1
1
2
1
8
use strict;
5
1
1
1
2
1
14
use warnings;
6
1
1
1
306
3
20
use WebService::Hexonet::Connector::APIClient;
7
1
1
1
4
2
9
use WebService::Hexonet::Connector::Column;
8
1
1
1
3
1
8
use WebService::Hexonet::Connector::Record;
9
1
1
1
2
1
11
use WebService::Hexonet::Connector::Response;
10
1
1
1
3
2
7
use WebService::Hexonet::Connector::ResponseParser;
11
1
1
1
2
1
6
use WebService::Hexonet::Connector::ResponseTemplate;
12
1
1
1
2
1
7
use WebService::Hexonet::Connector::ResponseTemplateManager;
13
1
1
1
2
1
10
use WebService::Hexonet::Connector::SocketConfig;
14
15
1
1
1
2
11
5
use version 0.9917; our $VERSION = version->declare('v2.8.1');
6
1
1
1
267
2
16
use WebService::Hexonet::Connector::APIClient;
7
1
1
1
3
1
8
use WebService::Hexonet::Connector::Column;
8
1
1
1
2
1
7
use WebService::Hexonet::Connector::Record;
9
1
1
1
2
1
9
use WebService::Hexonet::Connector::Response;
10
1
1
1
2
1
7
use WebService::Hexonet::Connector::ResponseParser;
11
1
1
1
1
2
4
use WebService::Hexonet::Connector::ResponseTemplate;
12
1
1
1
3
0
6
use WebService::Hexonet::Connector::ResponseTemplateManager;
13
1
1
1
2
1
9
use WebService::Hexonet::Connector::SocketConfig;
14
15
1
1
1
12
18
12
use version 0.9917; our $VERSION = version->declare('v2.9.0');
16
171;
18
diff --git a/cover_db/cover.14 b/cover_db/cover.14 index 78c2fbc..02fa499 100644 --- a/cover_db/cover.14 +++ b/cover_db/cover.14 @@ -1 +1 @@ -{"runs":{"1589298010.12246.13285":{"version":"v2.8.1","abstract":"Connector library for the insanely fast L.","vec":{"blib/lib/WebService/Hexonet/Connector/ResponseTemplateManager.pm":{"pod":{"size":8,"vec":"ÿ"},"subroutine":{"vec":"ÿ?","size":14},"statement":{"size":56,"vec":"ÿÿÿÿÿÿÿ"},"condition":{"vec":"\u0000","size":3},"branch":{"size":4,"vec":"\t"}},"blib/lib/WebService/Hexonet/Connector/Column.pm":{"branch":{"vec":"\u0002","size":2},"pod":{"vec":"\u001f","size":5},"subroutine":{"vec":"ÿ\u0001","size":9},"statement":{"size":29,"vec":"ÿÿÿ\u001f"}},"blib/lib/WebService/Hexonet/Connector/APIClient.pm":{"branch":{"vec":"8üÝP­(ŸV\u0003","size":66},"pod":{"vec":"ÿÿÿ\u0001","size":33},"statement":{"size":302,"vec":"ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûÿÀûÿÿÿÿÿÿÿÿÿ?"},"subroutine":{"vec":"ÿÿÿÿÿÿ\u0001","size":49},"condition":{"vec":"@\u0001","size":11}},"blib/lib/WebService/Hexonet/Connector/Record.pm":{"branch":{"size":2,"vec":"\u0003"},"subroutine":{"vec":"ÿ","size":8},"pod":{"vec":"\u000f","size":4},"statement":{"vec":"ÿÿ?","size":22}},"blib/lib/WebService/Hexonet/Connector.pm":{"statement":{"vec":"ÿÿÿÿ\u0007","size":35},"subroutine":{"size":12,"vec":"ÿ\u000f"}},"blib/lib/WebService/Hexonet/Connector/SocketConfig.pm":{"statement":{"vec":"ÿÿÿÿÿÿÿÿ","size":64},"pod":{"size":11,"vec":"ÿ\u0007"},"subroutine":{"vec":"ÿÿ","size":16},"branch":{"vec":"V%","size":14}},"blib/lib/WebService/Hexonet/Connector/ResponseTemplate.pm":{"branch":{"vec":"õ\u0003","size":10},"statement":{"vec":"ÿÿÿÿÿÿÿ","size":56},"pod":{"vec":"ÿ\u0007","size":11},"subroutine":{"size":17,"vec":"ÿÿ\u0001"},"condition":{"size":6,"vec":"\n"}},"blib/lib/WebService/Hexonet/Connector/ResponseParser.pm":{"branch":{"size":18,"vec":"ìÿ\u0003"},"pod":{"vec":"\u0003","size":2},"statement":{"vec":"ÿÿÿÿÿÿ\u0007","size":51},"subroutine":{"vec":"?","size":6}},"blib/lib/WebService/Hexonet/Connector/Response.pm":{"branch":{"size":66,"vec":"[Ó{W\u0017ÆuÝ\u0002"},"condition":{"vec":"\tË\u0002","size":18},"statement":{"vec":"ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûÿÿýÿÿ¿ßÿÿ\u0003","size":234},"subroutine":{"vec":"ÿÿÿÿÿ\u000f","size":44},"pod":{"size":28,"vec":"¿ÿÿ\u000f"}}},"dir":"/home/travis/build/hexonet/perl-sdk","run":"t/Hexonet-connector.t","name":"WebService-Hexonet-Connector","perl":"5.26.2","finish":1589298010.58028,"start":1589297997.05321,"OS":"linux","collected":["branch","condition","pod","statement","subroutine","time"],"digests":{"blib/lib/WebService/Hexonet/Connector/SocketConfig.pm":"84a88d969f5d28dcdead50371b604404","blib/lib/WebService/Hexonet/Connector/ResponseParser.pm":"c6ad7e7011e471e418ff17ff9ba346e6","blib/lib/WebService/Hexonet/Connector/ResponseTemplate.pm":"980cbae1a854f2ac49186d1e3095da25","blib/lib/WebService/Hexonet/Connector/Response.pm":"ca269cda063bdef314df91348a8e3d9e","blib/lib/WebService/Hexonet/Connector/ResponseTemplateManager.pm":"4ef1a0e328b76c5ee107fc395385c43d","t/Hexonet-connector.t":"7883554fe57e88070702b9392cc839d2","blib/lib/WebService/Hexonet/Connector/Record.pm":"58d6ec4465b0f609ee8b04d3ee46bdb3","blib/lib/WebService/Hexonet/Connector/Column.pm":"de351d4e7270d7378bf18fcd163b88c7","blib/lib/WebService/Hexonet/Connector/APIClient.pm":"af75ac8648e24cd828a69ba0feb455d7","blib/lib/WebService/Hexonet/Connector.pm":"264620c1b17904d453faf51be18ded85"},"count":{"blib/lib/WebService/Hexonet/Connector/ResponseTemplateManager.pm":{"branch":[[1.0,2],[34,1]],"time":[10,2,3,0,8,2,1,9,2,1,11,2,1,19,2,7,2,8,2,2,274,2,2,1,1,1,1,1,8,365,34,25,21,12,9295,47,92,66,5,130,3,2,3,2,7,15,2,67,106,9,7,5,14,4,3,4],"condition":[[0,0,2]],"subroutine":[1,1,1,1,1,1,3,10,10,35,1,35,2,1],"statement":[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,1,1,1,1,1,1,1,1,1,3,10,10,10,10,10,35,35,35,34,1,35,1,1,1,1,1,10,1,35,35,2,2,2,2,1,1,1],"pod":[1,1,1,1,1,1,1,1]},"blib/lib/WebService/Hexonet/Connector.pm":{"time":[308660,6,2,1,10,2,1,14,306,3,20,4,2,9,3,1,8,2,1,11,3,2,7,2,1,6,2,1,7,2,1,10,2,11,5],"statement":[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],"subroutine":[1,1,1,1,1,1,1,1,1,1,1,1]},"blib/lib/WebService/Hexonet/Connector/APIClient.pm":{"condition":[[34,0,20],[34,0,20],[1,0,1],[0,4.0]],"statement":[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,54,54,54,20,54,54,53,53,95,94,94,94,1,54,20,54,54,2,54,54,2,2,2,1,1,5,5,22,22,1,1,1,1,22,2,2,2,2,2,2,1,1,2,2,21,21,1,20,2,2,1,1,2,21,21,1,20,2,2,1,1,2,4,4,1,1,1,1,1,1,1,8,8,8,8,8,8,13,13,13,3,3,3,12,12,12,12,4,4,4,4,4,4,4,4,4,2,2,2,2,2,2,4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,2,19,19,19,19,19,19,19,19,19,19,19,19,0,19,19,0,19,19,18,18,2,2,2,2,2,2,1,1,1,0,0,0,0,0,0,19,6,6,6,0,6,6,5,6,6,6,6,5,5,5,1,1,1,1,1,1,3,1,1,1,1,1,4,4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,19,19,19,37,37,1,37,4,4,4,4,6,6,6,4,19,19,19,2,17,35,17,17,15,2,2,2,5,5,1,1,2,2,1,1,1,1,1,1,1,1,2],"pod":[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1],"subroutine":[1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,54,2,5,22,2,21,2,21,2,4,1,1,8,8,13,3,12,4,4,1,2,19,6,1,1,1,1,1,1,2,19,19],"time":[7,2,2,1,8,2,1,8,214,6,3,262,2,23,3,1,12,383,2,14,264,24663,24,6,1,49,3,1,23,297,3220,44,4,1,19,3,1,8,1234,22,7,10,13,22,8,4,316,5,5,7,6,3,983,151,146,42,67,102,50,125,128,102,111,161,4,122,42,131,101,3,68,89,10,8,7,3,2,16,12,54,52,12,5,4,46,59,961,17,16,8,5,12,3,6,16,11,38,52,3,25,5,8,3,3,3,54,59,12,35,341,223,3,6,7,19,10,8,6,2,5,4,3,2,381,40,17,384,34,8,2525,45,19,354,11,4,1006,59,42,17,949,13,10,13,13,7,31,19,13,85,3,5,7,4,7,45,2,2,2,3,2,4,2,1,3,3,4,3,3,1,3,4,2,3,5,4,10,9,4,16,47,68,59,46,63,36,138,6920,672,525,337,39,null,54,44,null,62,12872974,193,13921,3,13,530,10,123,7,12,12,11,null,null,null,null,null,null,326,16,24,19,null,7,16,8,18,12,9,17,23,9,16,2,10,2,2,3,4,7,3,5,2,2,4,6,16,22,561,7,1,2,8,2,351,4,381,4,322,5,1,3,9,2,49,25,52,51,71,1,80,5,9,7,6,10,14,6,7,32,43,72,2,30,99,33,46,45,4,3,6,7,10,2,2,11,6,2,3,3,2,1,1,3,2,11],"branch":[[20.0,34],[94.0,1],[53,1],[20.0,34],[2.0,52],[1.0,1],[1.0,21],[1.0,1],[1.0,20],[1,1],[1.0,20],[1,1],[2.0,0],[2.0,2],[1.0,0],[1.0,0],[1.0,0],[1.0,1],[0,19],[0,19],[2.0,16],[0,1],[18,1],[0,6],[5.0,1],[5.0,1],[1.0,36],[4.0,33],[2.0,17],[15.0,2],[1.0,4],[1.0,0],[1.0,1]]},"blib/lib/WebService/Hexonet/Connector/Column.pm":{"statement":[1,1,1,1,1,1,1,1,1,1,1,156,156,156,156,156,156,156,1,1,4,4,18751,18751,18751,15421,18751,18751,18751],"pod":[1,1,1,1,1],"subroutine":[1,1,1,1,156,1,4,18751,18751],"time":[6,1,2,1,8,2,1,11,1,12,5,1726,126,180,127,755,156,228,374,7,7,7,11868,12521,15846,12084,11608,11374,20245],"branch":[[3330.0,15421]]},"blib/lib/WebService/Hexonet/Connector/Record.pm":{"statement":[1,1,1,1,1,1,1,1,1,1,1,3123,3123,6,6,4,4,4,1,4,4,4],"pod":[1,1,1,1],"subroutine":[1,1,1,1,3123,6,4,4],"branch":[[3.0,1]],"time":[7,1,2,1,7,1,1,13,2,7,3,2629,4025,411,25,782,15,12,4,6,8,33]},"blib/lib/WebService/Hexonet/Connector/ResponseTemplate.pm":{"branch":[[11.0,100],[1.0,110],[1.0,1],[1.0,1],[1.0,1]],"time":[318,2,2,1,12,8,1,11,241,1,24,288,3,12,12,7,2,3525,149,377,17,174,232,367,5,4,310,11,11,21,29,94,108,8,6,6,4,94,125,7,7,6,4,1684,12,11,7026,66,105,1225,3,5,9,7,5,6],"condition":[[6,5,100],[1,0,110]],"statement":[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,111,111,111,11,111,111,111,1,1,111,3,3,7,7,30,30,2,2,1,1,64,64,2,2,1,1,2,2,2,21,21,21,1,1,1,2,2,1,1],"pod":[1,1,1,1,1,1,1,1,1,1,1],"subroutine":[1,1,1,1,1,1,111,3,7,30,2,64,2,2,21,1,2]},"blib/lib/WebService/Hexonet/Connector/ResponseParser.pm":{"time":[9,1,2,1,6,2,1,10,2,8,3,127,123,368,708,5991,2928,2878,6234,3939,3095,83,2515,2389,2845,1928,3225,382,526,426,41,8,14,5,4,12,4,6,9,16,15,13,10,12,20,10,4,13,2,17,13],"branch":[[50.0,3318],[3111,257],[3368,341],[3709.0,261],[3.0,3],[5.0,1],[5.0,1],[1.0,5],[1.0,5]],"subroutine":[1,1,1,1,113,6],"pod":[1,1],"statement":[1,1,1,1,1,1,1,1,1,1,1,113,113,113,113,3970,3709,3709,3709,3709,3368,50,3368,3368,3368,3111,3111,257,341,113,6,6,6,3,3,3,5,5,5,11,11,6,5,6,5,6,1,6,1,6,6]},"blib/lib/WebService/Hexonet/Connector/SocketConfig.pm":{"statement":[1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,55,55,55,54,55,37,55,1,55,37,55,39,55,7,55,2,55,3,3,1,1,12,12,12,12,8,8,8,8,12,12,12,12,3,3,3,13,13,13,13,13,13,4,4,4,2,2,2],"subroutine":[1,1,1,1,1,3,55,3,1,12,8,12,3,13,4,2],"pod":[1,1,1,1,1,1,1,1,1,1,1],"branch":[[54.0,1],[37.0,18],[1.0,54],[37.0,18],[39.0,16],[7.0,48],[2.0,53]],"time":[10,2,2,1,9,2,1,16,2,1,4,11,8,4,311,31,58,66,138,94,99,55,97,3,97,44,92,47,98,11,106,4,84,4,9,3,5,24,24,23,23,24,17,16,16,24,23,21,19,7,6,6,24,26,20,20,27,18,9,8,7,6,5,5]},"blib/lib/WebService/Hexonet/Connector/Response.pm":{"branch":[[3.0,1],[4.0,47],[1.0,50],[51.0,104],[3249.0,15421],[18670.0,0],[33.0,18],[18755.0,17],[1.0,1],[14.0,5],[1.0,1],[21.0,0],[21.0,7],[1.0,6],[7.0,0],[7.0,2],[1.0,1],[3.0,2],[1.0,4],[4.0,0],[8.0,1],[1.0,4],[0,4],[1.0,3],[3.0,0],[17.0,0],[17.0,1],[35.0,0],[35.0,6],[1.0,1],[1.0,0],[1.0,1],[0,1]],"time":[8,2,2,1,10,1,1,11,225,1,12,239,1,15,132,137,2,44,1,7,309,5234,3,638,1,50,2,12,6,153,170,165,7,5,7,8,4,1,22,13,11,74,93,105,2,72,71,52,57,106,80,35,170,50,45,100,384,234,122,194,96,43,69,2123,2264,14880,15681,15760,17074,3326,2736,649,379,111,301,122,152,169,2406,2082,3443,2715,14343,14749,45409,41989,16888,19519,54,7,3,4,3,397,4,8,3,1,2,24,17,11,3,2,9,6,7,5,23,103,29,42,48,5,9,5,6,32,44,38,35,30,36,6,9,13,7,17,18,18,16,13,24,4,5,3,3,3,2,1,2,13,3,4,13,10,6,11,8,11,2,6,8,16,null,11,13,11,19,19,4,408,6,10,9,8,13,2,3,5,4,10,8,10,7,20,17,null,3,1,3,27,22,32,44,32,25,18,24,23,39,5,39,47,53,49,49,53,9,7,5,7,2,1,3,3,null,6,5,7,3,2,2,null,13,1,2,3,13592,17321,43177,16951,20961,33,9,36,62,7,8,7,6,10,7,12],"subroutine":[1,1,1,1,1,1,1,1,1,1,51,155,3122,18772,65597,2,3,1,8,2,19,2,28,9,1,5,5,9,3,5,4,3,1,19,18,41,2,2,1,18772,65605,8,5,4],"statement":[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,51,51,51,4,3,4,4,1,1,1,4,4,51,51,51,1,51,51,51,51,51,51,33,33,33,33,155,155,155,155,155,51,33,33,3122,3122,18670,18670,18670,18670,3249,3122,51,155,155,155,155,155,155,3122,3122,3122,3122,18772,18772,18755,65597,18755,18755,17,2,2,2,1,3,3,3,1,1,1,8,8,2,2,2,2,6,6,2,19,19,19,19,14,5,2,2,1,28,28,28,21,21,21,7,7,7,6,9,9,9,7,7,7,2,2,1,1,1,1,1,1,2,1,1,5,5,2,5,5,5,1,4,4,4,0,9,9,9,9,8,1,3,3,3,5,5,5,1,4,4,4,4,4,3,3,3,3,0,1,1,1,19,19,19,19,18,18,18,17,17,17,1,41,41,41,35,35,35,6,2,2,2,1,1,1,1,0,2,2,2,1,1,1,0,1,1,1,1,18772,18772,65605,18772,18772,8,8,8,8,5,5,5,5,5,4,4],"pod":[1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],"condition":[[5,0,14],[1,0,8],[0,0,3],[1,0,7],[0,2,3],[3,0,1]]}}}}} \ No newline at end of file +{"runs":{"1589308203.12132.43402":{"OS":"linux","count":{"blib/lib/WebService/Hexonet/Connector.pm":{"time":[282898,5,2,1,8,2,1,14,267,2,16,3,1,8,2,1,7,2,1,9,2,1,7,1,2,4,3,0,6,2,1,9,12,18,12],"statement":[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],"subroutine":[1,1,1,1,1,1,1,1,1,1,1,1]},"blib/lib/WebService/Hexonet/Connector/Logger.pm":{"time":[9,2,1,1,6,2,1,13,185,2615,41,3,11,3,6,16,3,6,null,null,null,null,null,null,null,null,2,11,530,13,86,14,65],"statement":[1,1,1,1,1,1,1,1,1,1,1,1,1,1,4,4,2,2,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2],"subroutine":[1,1,1,1,1,4,2],"pod":[1,1],"branch":[[0,2]]},"blib/lib/WebService/Hexonet/Connector/ResponseTemplate.pm":{"branch":[[11.0,100],[1.0,110],[1.0,1],[1.0,1],[1.0,1]],"condition":[[6,5,100],[1,0,110]],"statement":[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,111,111,111,11,111,111,111,1,1,111,3,3,7,7,32,32,2,2,1,1,64,64,2,2,1,1,2,2,2,21,21,21,1,1,1,2,2,1,1],"time":[249,1,2,5,8,2,1,9,243,1,13,242,2,15,3,6,2,3172,137,349,15,153,185,289,3,3,273,9,14,13,25,81,98,7,5,3,4,69,99,6,4,4,3,1430,7,10,6081,55,73,506,4,4,5,5,3,3],"subroutine":[1,1,1,1,1,1,111,3,7,32,2,64,2,2,21,1,2],"pod":[1,1,1,1,1,1,1,1,1,1,1]},"blib/lib/WebService/Hexonet/Connector/APIClient.pm":{"subroutine":[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,0,2,2,54,2,5,22,2,21,2,21,2,4,1,1,8,8,13,3,12,4,4,1,2,19,6,1,1,1,1,1,1,2,19,19],"pod":[1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1],"time":[7,1,1,1,7,1,1,7,179,7,1,239,1,12,275,1,14,3,1,11,279,1,12,235,20482,16,4,1,30,3,1,25,3,1,14,3,1,12,2,1,4,1024,14,4,6,7,17,11,4,3,3,10,4,null,null,null,null,292,5,3,10,4,3,717,126,113,26,49,85,55,118,109,96,111,130,2,104,30,119,99,3,68,70,7,5,5,2,2,13,10,45,55,6,5,2,35,39,971,15,76,5,3,10,2,4,17,9,32,37,3,25,4,528,2,4,3,35,54,4,24,299,6,2,3,3,16,8,5,4,2,3,2,1,2,321,32,16,313,28,10,1689,48,15,290,9,4,881,46,42,15,872,10,7,9,11,5,24,43,11,5,2,4,6,3,6,38,3,1,2,4,3,6,3,2,3,3,5,3,2,1,2,3,2,3,5,4,12,7,3,17,43,60,49,48,58,33,115,5475,655,492,267,32,null,39,35,null,52,11821096,180,58,11,11,4,null,422,17,16,13,null,8,14,9,17,13,10,9,8,7,13,3,8,2,2,2,3,7,3,3,2,2,3,5,11,18,523,7,1,2,7,2,295,4,308,3,285,3,1,4,6,3,30,22,52,53,54,2,70,6,8,6,6,9,12,7,8,28,29,65,4,23,87,32,38,27,4,3,3,7,9,2,2,14,8,2,3,3,1,2,2,3,2,12],"statement":[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,0,0,0,0,2,2,2,2,2,2,54,54,54,20,54,54,53,53,95,94,94,94,1,54,20,54,54,2,54,54,2,2,2,1,1,5,5,22,22,1,1,1,1,22,2,2,2,2,2,2,1,1,2,2,21,21,1,20,2,2,1,1,2,21,21,1,20,2,2,1,1,2,4,4,1,1,1,1,1,1,1,8,8,8,8,8,8,13,13,13,3,3,3,12,12,12,12,4,4,4,4,4,4,4,4,4,2,2,2,2,2,2,4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,2,19,19,19,19,19,19,19,19,19,19,19,19,0,19,19,0,19,19,18,18,2,1,1,0,19,6,6,6,0,6,6,5,6,6,6,6,5,5,5,1,1,1,1,1,1,3,1,1,1,1,1,4,4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,19,19,19,37,37,1,37,4,4,4,4,6,6,6,4,19,19,19,2,17,35,17,17,15,2,2,2,5,5,1,1,2,2,1,1,1,1,1,1,1,1,2],"condition":[[0,0,0],[34,0,20],[34,0,20],[1,0,1],[0,4.0]],"branch":[[0,0],[20.0,34],[94.0,1],[53,1],[20.0,34],[2.0,52],[1.0,1],[1.0,21],[1.0,1],[1.0,20],[1,1],[1.0,20],[1,1],[2.0,0],[2.0,2],[1.0,0],[1.0,0],[1.0,0],[1.0,1],[0,19],[0,19],[2.0,16],[0,1],[18,1],[0,6],[5.0,1],[5.0,1],[1.0,36],[4.0,33],[2.0,17],[15.0,2],[1.0,4],[1.0,0],[1.0,1]]},"blib/lib/WebService/Hexonet/Connector/Column.pm":{"branch":[[3332.0,15431]],"subroutine":[1,1,1,1,156,1,4,18763,18763],"pod":[1,1,1,1,1],"statement":[1,1,1,1,1,1,1,1,1,1,1,156,156,156,156,156,156,156,1,1,4,4,18763,18763,18763,15431,18763,18763,18763],"time":[5,2,2,0,7,1,1,10,2,12,2,1495,120,149,119,348,127,217,331,6,6,5,12039,11397,14808,12013,11691,11146,18393]},"blib/lib/WebService/Hexonet/Connector/SocketConfig.pm":{"time":[8,2,2,0,10,1,1,10,2,3,2,15,6,3,290,25,56,70,113,82,80,62,78,1,92,44,85,52,86,9,76,4,67,5,7,1,3,21,20,20,17,13,16,14,11,18,17,16,19,4,6,4,20,20,19,13,21,17,8,6,5,5,6,5],"statement":[1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,55,55,55,54,55,37,55,1,55,37,55,39,55,7,55,2,55,3,3,1,1,12,12,12,12,8,8,8,8,12,12,12,12,3,3,3,13,13,13,13,13,13,4,4,4,2,2,2],"subroutine":[1,1,1,1,1,3,55,3,1,12,8,12,3,13,4,2],"pod":[1,1,1,1,1,1,1,1,1,1,1],"branch":[[54.0,1],[37.0,18],[1.0,54],[37.0,18],[39.0,16],[7.0,48],[2.0,53]]},"blib/lib/WebService/Hexonet/Connector/Record.pm":{"subroutine":[1,1,1,1,3125,6,4,4],"pod":[1,1,1,1],"statement":[1,1,1,1,1,1,1,1,1,1,1,3125,3125,6,6,4,4,4,1,4,4,4],"time":[7,1,2,0,7,1,1,10,1,7,2,2284,3794,316,18,740,8,12,3,8,7,27],"branch":[[3.0,1]]},"blib/lib/WebService/Hexonet/Connector/ResponseTemplateManager.pm":{"subroutine":[1,1,1,1,1,1,3,10,10,35,1,35,2,1],"pod":[1,1,1,1,1,1,1,1],"time":[7,2,2,1,9,1,1,8,2,1,19,1,1,8,2,6,3,7,2,1,1,1,1,1,1,2,1,1,4,316,21,10,16,9,7851,38,63,48,3,89,1,2,2,1,5,13,2,50,77,5,3,4,10,3,3,2],"statement":[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,1,1,1,1,1,1,1,1,1,3,10,10,10,10,10,35,35,35,34,1,35,1,1,1,1,1,10,1,35,35,2,2,2,2,1,1,1],"condition":[[0,0,2]],"branch":[[1.0,2],[34,1]]},"blib/lib/WebService/Hexonet/Connector/Response.pm":{"condition":[[5,0,14],[1,0,8],[0,0,3],[1,0,7],[0,2,3],[3,0,1]],"branch":[[3.0,1],[4.0,47],[1.0,50],[53.0,102],[3251.0,15431],[18682.0,0],[33.0,18],[18767.0,17],[1.0,1],[14.0,5],[1.0,1],[21.0,0],[21.0,7],[1.0,6],[7.0,0],[7.0,2],[1.0,1],[3.0,2],[1.0,4],[4.0,0],[8.0,1],[1.0,4],[0,4],[1.0,3],[3.0,0],[17.0,0],[17.0,1],[35.0,0],[35.0,6],[1.0,1],[1.0,0],[1.0,1],[0,1]],"pod":[1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],"subroutine":[1,1,1,1,1,1,1,1,1,1,51,155,3124,18784,65623,2,3,1,8,4,19,2,28,9,1,5,5,9,3,5,4,3,1,19,18,41,2,2,1,18784,65631,8,5,4],"statement":[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,51,51,51,4,3,4,4,1,1,1,4,4,51,51,51,1,51,51,51,51,51,51,33,33,33,33,155,155,155,155,155,53,33,33,3124,3124,18682,18682,18682,18682,3251,3124,51,155,155,155,155,155,155,3124,3124,3124,3124,18784,18784,18767,65623,18767,18767,17,2,2,2,1,3,3,3,1,1,1,8,8,4,4,4,4,10,10,4,19,19,19,19,14,5,2,2,1,28,28,28,21,21,21,7,7,7,6,9,9,9,7,7,7,2,2,1,1,1,1,1,1,2,1,1,5,5,2,5,5,5,1,4,4,4,0,9,9,9,9,8,1,3,3,3,5,5,5,1,4,4,4,4,4,3,3,3,3,0,1,1,1,19,19,19,19,18,18,18,17,17,17,1,41,41,41,35,35,35,6,2,2,2,1,1,1,1,0,2,2,2,1,1,1,0,1,1,1,1,18784,18784,65631,18784,18784,8,8,8,8,5,5,5,5,5,4,4],"time":[8,1,2,1,11,1,1,13,220,2,10,240,1,12,113,121,2,18,1,5,219,4692,3,553,1,32,2,8,2,13117,150,112,6,3,4,7,2,2,11,9,7,78,68,85,2,64,59,66,63,101,72,29,80,48,37,110,307,208,103,171,97,31,55,2064,2087,14524,15101,15973,16778,3195,2500,370,347,105,272,111,149,164,2333,2161,3160,2591,13621,15301,44870,42404,16093,19299,53,6,3,4,2,320,3,7,3,1,2,23,16,11,7,7,17,40,19,11,18,24,23,28,30,5,5,4,4,25,38,32,28,29,33,5,6,11,9,16,16,16,12,13,24,4,3,3,4,3,1,1,2,4,2,3,10,7,5,7,9,8,1,4,4,8,null,11,9,10,14,14,3,312,7,10,8,11,8,2,4,6,4,8,5,9,7,16,15,null,1,1,2,21,31,26,39,21,17,19,15,20,34,2,28,49,43,45,42,55,30,6,3,5,3,2,1,9,null,7,2,5,3,2,1,null,3,2,2,3,13533,17168,41162,16156,19315,5,8,8,49,12,7,4,6,8,4,11]},"blib/lib/WebService/Hexonet/Connector/ResponseParser.pm":{"branch":[[50.0,3320],[3113,257],[3370,341],[3711.0,261],[3.0,3],[5.0,1],[5.0,1],[1.0,5],[1.0,5]],"subroutine":[1,1,1,1,113,6],"pod":[1,1],"time":[6,2,2,0,7,1,1,10,2,8,2,122,109,332,684,5375,2917,2686,6162,3878,2946,81,2452,2357,2769,1861,3016,353,448,323,29,6,10,5,10,10,3,5,6,15,11,18,7,8,8,8,2,8,1,6,9],"statement":[1,1,1,1,1,1,1,1,1,1,1,113,113,113,113,3972,3711,3711,3711,3711,3370,50,3370,3370,3370,3113,3113,257,341,113,6,6,6,3,3,3,5,5,5,11,11,6,5,6,5,6,1,6,1,6,6]}},"version":"v2.9.0","abstract":"Connector library for the insanely fast L.","perl":"5.26.2","start":1589308190.39093,"finish":1589308202.83011,"digests":{"blib/lib/WebService/Hexonet/Connector/ResponseParser.pm":"3f8ff6b6cde2a0710e13a192161a00b8","t/Hexonet-connector.t":"23a54c56a0b385e7a6c273356823654f","blib/lib/WebService/Hexonet/Connector/Response.pm":"1583fe367ca2a568f400de5d0bd55489","blib/lib/WebService/Hexonet/Connector/Column.pm":"947dd9f16a5b7381d8db9097f98991af","blib/lib/WebService/Hexonet/Connector/SocketConfig.pm":"54a3bce575e5495a8933b15319b453fd","blib/lib/WebService/Hexonet/Connector/Record.pm":"1d16b00cb822f2fb8a63bd668e67bba1","blib/lib/WebService/Hexonet/Connector/ResponseTemplateManager.pm":"a1a74cc6dd1f8834201b84f13cb28e43","blib/lib/WebService/Hexonet/Connector/APIClient.pm":"52f56d6774eedd84d6e806eba9cad7c3","blib/lib/WebService/Hexonet/Connector/Logger.pm":"2cf476c10389b1415009b9bdd6a60ffd","blib/lib/WebService/Hexonet/Connector/ResponseTemplate.pm":"2ea74b848f63c415cc8921df64285b2a","blib/lib/WebService/Hexonet/Connector.pm":"50b4a4fa4fd1e78419115635e1b9b4fc"},"vec":{"blib/lib/WebService/Hexonet/Connector/ResponseParser.pm":{"statement":{"vec":"ÿÿÿÿÿÿ\u0007","size":51},"pod":{"size":2,"vec":"\u0003"},"subroutine":{"vec":"?","size":6},"branch":{"size":18,"vec":"ìÿ\u0003"}},"blib/lib/WebService/Hexonet/Connector/APIClient.pm":{"branch":{"vec":"àðwCµ¢|Z\r","size":68},"condition":{"size":14,"vec":"\u0000\n"},"statement":{"size":302,"vec":"ÿÿÿÿÿÿ\u001fþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÛßûÿÿÿÿÿÿÿÿÿ?"},"subroutine":{"vec":"ÿÿýÿÿÿ\u000f","size":52},"pod":{"vec":"ùÿÿÿ\u0005","size":35}},"blib/lib/WebService/Hexonet/Connector/Column.pm":{"branch":{"size":2,"vec":"\u0002"},"subroutine":{"vec":"ÿ\u0001","size":9},"pod":{"vec":"\u001f","size":5},"statement":{"vec":"ÿÿÿ\u001f","size":29}},"blib/lib/WebService/Hexonet/Connector/ResponseTemplateManager.pm":{"pod":{"vec":"ÿ","size":8},"subroutine":{"vec":"ÿ?","size":14},"statement":{"vec":"ÿÿÿÿÿÿÿ","size":56},"condition":{"size":3,"vec":"\u0000"},"branch":{"size":4,"vec":"\t"}},"blib/lib/WebService/Hexonet/Connector/SocketConfig.pm":{"branch":{"vec":"V%","size":14},"pod":{"vec":"ÿ\u0007","size":11},"subroutine":{"size":16,"vec":"ÿÿ"},"statement":{"vec":"ÿÿÿÿÿÿÿÿ","size":64}},"blib/lib/WebService/Hexonet/Connector/Record.pm":{"branch":{"vec":"\u0003","size":2},"subroutine":{"size":8,"vec":"ÿ"},"pod":{"vec":"\u000f","size":4},"statement":{"vec":"ÿÿ?","size":22}},"blib/lib/WebService/Hexonet/Connector/Response.pm":{"branch":{"size":66,"vec":"[Ó{W\u0017ÆuÝ\u0002"},"condition":{"vec":"\tË\u0002","size":18},"statement":{"size":234,"vec":"ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûÿÿýÿÿ¿ßÿÿ\u0003"},"pod":{"size":28,"vec":"¿ÿÿ\u000f"},"subroutine":{"size":44,"vec":"ÿÿÿÿÿ\u000f"}},"blib/lib/WebService/Hexonet/Connector/ResponseTemplate.pm":{"pod":{"size":11,"vec":"ÿ\u0007"},"subroutine":{"size":17,"vec":"ÿÿ\u0001"},"statement":{"vec":"ÿÿÿÿÿÿÿ","size":56},"condition":{"vec":"\n","size":6},"branch":{"size":10,"vec":"õ\u0003"}},"blib/lib/WebService/Hexonet/Connector/Logger.pm":{"branch":{"vec":"\u0000","size":2},"statement":{"size":33,"vec":"ÿÿ\u0003ü\u0001"},"subroutine":{"vec":"","size":7},"pod":{"vec":"\u0003","size":2}},"blib/lib/WebService/Hexonet/Connector.pm":{"subroutine":{"size":12,"vec":"ÿ\u000f"},"statement":{"size":35,"vec":"ÿÿÿÿ\u0007"}}},"name":"WebService-Hexonet-Connector","collected":["branch","condition","pod","statement","subroutine","time"],"dir":"/home/travis/build/hexonet/perl-sdk","run":"t/Hexonet-connector.t"}}} \ No newline at end of file diff --git a/cover_db/coverage.html b/cover_db/coverage.html index 3f4184b..7178e24 100644 --- a/cover_db/coverage.html +++ b/cover_db/coverage.html @@ -20,7 +20,7 @@

Coverage Summary

- + @@ -32,15 +32,16 @@

Coverage Summary

Database:/home/travis/build/hexonet/perl-sdk/cover_db
Report Date:2020-05-12 15:40:11
Report Date:2020-05-12 18:30:03
Perl Version:v5.26.2
OS:linux
- + + - + - +
filestmtbrancondsubpodtimetotal
blib/lib/WebService/Hexonet/Connector.pm100.0n/an/a100.0n/a 2.2100.0
blib/lib/WebService/Hexonet/Connector/APIClient.pm97.086.363.6100.096.993.895.0
blib/lib/WebService/Hexonet/Connector/APIClient.pm97.383.850.098.091.493.593.6
blib/lib/WebService/Hexonet/Connector/Column.pm100.0100.0n/a100.0100.0 0.7100.0
blib/lib/WebService/Hexonet/Connector/Logger.pm75.750.0n/a100.0100.0 0.079.5
blib/lib/WebService/Hexonet/Connector/Record.pm100.0100.0n/a100.0100.0 0.0100.0
blib/lib/WebService/Hexonet/Connector/Response.pm98.284.861.1100.096.4 2.694.3
blib/lib/WebService/Hexonet/Connector/Response.pm98.284.861.1100.096.4 2.894.3
blib/lib/WebService/Hexonet/Connector/ResponseParser.pm100.0100.0n/a100.0100.0 0.3100.0
blib/lib/WebService/Hexonet/Connector/ResponseTemplate.pm100.0100.083.3100.0100.0 0.199.0
blib/lib/WebService/Hexonet/Connector/ResponseTemplateManager.pm100.0100.033.3100.0100.0 0.097.6
blib/lib/WebService/Hexonet/Connector/SocketConfig.pm100.0100.0n/a100.0100.0 0.0100.0
Total98.489.563.1100.098.0100.096.4
Total97.788.158.599.496.2100.095.4
diff --git a/cover_db/digests b/cover_db/digests index 7e22dfe..d5f8b29 100644 --- a/cover_db/digests +++ b/cover_db/digests @@ -1 +1 @@ -{"7210e891f6666f846af66da5e266bc34":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/IO/Socket/IP.pm","cad7bf575c494425ba081b113bd8f0ce":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/x86_64-linux/Devel/Cover/Condition_or_3.pm","69860b015da9f0e90a09bcef8257ccca":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/Test2/Formatter.pm","20d201e9a76f020a21e66d36fed36039":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/Test2/Event/Ok.pm","c14950ed3803eafc8980ef353e184fca":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/HTTP/Request.pm","e8db750947412e88e47b09b68b1f5f69":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/x86_64-linux/Compress/Raw/Zlib.pm","de351d4e7270d7378bf18fcd163b88c7":"blib/lib/WebService/Hexonet/Connector/Column.pm","4f7cd2ab35433041d33eeebc21e5bc1e":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/Test2/Event/Bail.pm","6a2ea5f50139835f39590496dd5cd018":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/x86_64-linux/version.pm","0521613c4d5d86fbf57beca6169466d3":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/IO/Uncompress/Adapter/Inflate.pm","327dc62e6bf452ef184448867c0727ca":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/Test2/Event/Subtest.pm","907518daa4b9c32df57fab6a439175e7":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/x86_64-linux/Config.pm","cd14fd512fc0ad67bb08032b0789600f":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/x86_64-linux/IO/Socket/UNIX.pm","9db7a975d32cfce80129752e6ebcdffb":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/Test2/API.pm","08e42c066cab69fab2ab11689dca015e":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/HTTP/Response.pm","edfae19b5d8c8f278c0a462a90e843c1":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/HTTP/Headers/Util.pm","c923fac66a84c6b5dbbf01250e7c1a42":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/AutoLoader.pm","73d816d785406bc5c2de9059918a9a3c":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/x86_64-linux/Storable.pm","badbc5ed1a593ba6f6c88a51e9b74ead":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/Exporter/Tiny.pm","36e1b34f8175e036d57e51fd7d56becd":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/overloading.pm","2260a67f78359774f10f0d3748497026":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/LWP/Protocol/https.pm","fb2b74de573d62ced49f61bbf91df4de":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/Test2/Hub.pm","acc4709f0adb89bef2863771b6995d2b":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/Tie/Hash.pm","206278c02dd4a3fb7792a4a193d2588b":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/x86_64-linux/IO/File.pm","3e5ff5fb486c95945e10e79859dd5bfb":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/integer.pm","9112664759b2ef35702ca61179614f43":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/Test2/Util/ExternalMeta.pm","441328c7ffbbe42a0226ec65bde71715":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/strict.pm","502fc3e2da78be954e85266557f6504b":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/File/GlobMapper.pm","fb8cb02e75b226fa76946e3d1c32f7a2":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/Test2/Event/Waiting.pm","eb682e56209c045e77f0b463eea057ec":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/x86_64-linux/Devel/Cover/DB/File.pm","b7a30280282012a7713324b86d6cafc3":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/IO/Compress/Base/Common.pm","c6ad7e7011e471e418ff17ff9ba346e6":"blib/lib/WebService/Hexonet/Connector/ResponseParser.pm","ca269cda063bdef314df91348a8e3d9e":"blib/lib/WebService/Hexonet/Connector/Response.pm","db913b1e1b07affbcf854607234901cb":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/x86_64-linux/Encode.pm","84821ce1bb31bbb263b2368a36156cb5":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/Test2/Event/Diag.pm","050e848d76ad5f64934101e76441bf88":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/Mozilla/CA.pm","980cbae1a854f2ac49186d1e3095da25":"blib/lib/WebService/Hexonet/Connector/ResponseTemplate.pm","33a4b1acedb7ad3d17aadf941ffdf092":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/base.pm","56cde6eba0f667ab56196613df3933c1":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/constant.pm","cb45341017bda8dc478cc44a3d2f9bcd":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/Test2/API/Stack.pm","fcebfe6eda6a60d759025e69d1937f07":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/Net/HTTPS.pm","243b0115937229411761ef353a5541ae":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/Readonly.pm","0e42f824a13eae5979d10017afc8227b":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/parent.pm","2c078a78ae348def28842cab9f8e387c":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/x86_64-linux/Devel/Cover/DB/Structure.pm","bab19aa853ab850839111661b558b889":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/x86_64-linux/Net/SSLeay.pm","0b1f4cf7f07548ffd51cd5ddb6644fe2":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/bytes.pm","eeddb3c3ae37db71c02f1daee1f0d410":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/x86_64-linux/Socket.pm","270771e504eb0b4f2697899cb1102cc1":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/x86_64-linux/Devel/Cover/Statement.pm","a5b0ea0e398abace1564dc842d25e6b7":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/IO/Socket/SSL/PublicSuffix.pm","1e81482deb175e2b15443c5223ec2e17":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/utf8.pm","84a88d969f5d28dcdead50371b604404":"blib/lib/WebService/Hexonet/Connector/SocketConfig.pm","8b84c3ea28f3ac5869d80b4665e5c28d":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/x86_64-linux/Devel/Cover/DB/IO/JSON.pm","0ad08f93acbba91431069a83c4eb4336":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/x86_64-linux/Devel/Cover/DB/IO.pm","f261ff12097b376fceb636639aa228c8":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/Symbol.pm","16e7274469adee7489a16cc96a9a565d":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/IO/Uncompress/Base.pm","44ac17c070ae630a659627b6cc1764c2":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/x86_64-linux/Sub/Util.pm","60cf451d00ebf0fb5654d69c8bebdf6a":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/Test2/Event/Plan.pm","4169bb4b1f593c8210c8c6b55369a3e7":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/x86_64-linux/Config_heavy.pl","6ea40800cd7019daaf8702c93445e0cc":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/URI/_punycode.pm","daefb18c5c6bd6ace0e349ebdab2f154":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/blib.pm","946142306a2c4799cb2f003e42da5d86":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/x86_64-linux/DynaLoader.pm","a7be2ad5372cc4930892d5242c5134a2":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/x86_64-linux/List/Util.pm","9decbec384749bf2d03f50e0092fed6c":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/JSON/MaybeXS.pm","42cfc332c3ec455544c408d66409f868":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/B/Debug.pm","873b2f815e39fafbc2ef0addcd93ea91":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/x86_64-linux/Devel/Cover/Dumper.pm","a850fcd07c6afd92aa12a113db4f227e":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/Test/RequiresInternet.pm","d89736db8fa61623ca85dcccd3678b4d":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/Try/Tiny.pm","54219f8281017f23c0671a773604a15d":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/HTTP/Config.pm","97cb77511b231c1af673bec5d3f4f6f4":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/x86_64-linux/Devel/Cover/DB/IO/Base.pm","ba4d379aeccdf0982810a9ebc71aa1ce":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/x86_64-linux/IO/Handle.pm","7883554fe57e88070702b9392cc839d2":"t/Hexonet-connector.t","626a343deb4120417d1cb2e52d9b6063":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/Test2/Formatter/TAP.pm","6c76c58ccdad81592ecdd5bf07fc401e":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/LWP/Protocol.pm","056ea8f31df117e2984d9bd3a77555dc":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/x86_64-linux/Encode/MIME/Name.pm","57aaeba5468aca89eeb55b4daa257ab8":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/x86_64-linux/Devel/Cover/Branch.pm","55e173fa7c4aa8a39d0b12f002d01a84":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/x86_64-linux/mro.pm","517fcad09262694258195aa1188714a2":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/Test2/Hub/Subtest.pm","60b21ae7554fcd5770c467ac337abd85":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/x86_64-linux/Devel/Cover/Condition.pm","f2d0c6c3edb7b4ac08c7b97e71d4668b":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/x86_64-linux/Devel/Cover/Condition_xor_4.pm","1318b391d8dedd803f97af8c45af420c":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/feature.pm","2a3f607c224ab2e20c927b2263183481":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/Test2/API/Instance.pm","55f76e668fc2bba7621dd546702480ff":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/List/MoreUtils.pm","c62689b45e22bba17c624608526f4735":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/overload.pm","f16b25058c4e519001e4d956bbbe2df2":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/Test2/Util.pm","53d4e4ff093a357f9e154cedd85621af":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/Net/HTTP.pm","c3266713b590114e62acc1a62fa33677":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/Test2/Event/Info.pm","58d6ec4465b0f609ee8b04d3ee46bdb3":"blib/lib/WebService/Hexonet/Connector/Record.pm","1804cdcea69766fe0b4587f713779d20":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/x86_64-linux/version/regex.pm","d7e6b3d3bfc6a04c8e52681f8ee445c2":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/x86_64-linux/IO/Socket/INET.pm","78375f97f3dbc791c1f0f227168f18c4":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/Test/Builder/TodoDiag.pm","46195523acd7404ae6df67991440da59":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/x86_64-linux/Devel/Cover/Criterion.pm","d70adb9df5f7a6e6583da3e71c707bd7":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/x86_64-linux/auto/Net/SSLeay/autosplit.ix","f980d8ffc0b059cb03b7ba4091604e3a":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/x86_64-linux/IO/Socket.pm","79f88cfa1fbf882f0f0771dd7ba38272":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/x86_64-linux/Errno.pm","04150524197463018d3188f24e360c5e":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/File/Find.pm","fcc82202285f5f80eae7dbef091b4c41":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/x86_64-linux/Cpanel/JSON/XS.pm","c7fa2c1421b2ddd69373633c6102ad25":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/B/Deparse.pm","ce2be007acae5d83793f7a8e2467c6d3":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/x86_64-linux/List/MoreUtils/XS.pm","5030a0c17339bfdb7aa947236038e9ba":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/Test2/Event/Note.pm","1d40b9fc9546ef50625d3e685a54068d":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/Test2/Util/HashBase.pm","66c4f1af51bbeb98e0f6ca863f8d1615":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/PerlIO.pm","e649ab91a4890ab2543e821daef73079":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/Devel/Symdump.pm","fd0079470b79b95c83e81f3b1dd45b5c":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/Net/HTTP/Methods.pm","94f9739a69138173000295be1ab852b3":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/Test/Builder/Module.pm","1db626f9e032613c42c7553db1464b4a":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/Test/Builder/Formatter.pm","7bdd1d8dffa8d3500086802451fc020d":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/x86_64-linux/Encode/Config.pm","a1b96c83bbb9e72e40c4ef0ad7ccb9ac":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/x86_64-linux/B.pm","31045c808ebbbf8045a819cb3877c2fa":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/LWP/MemberMixin.pm","060f029d056cc44e536c7d278f69bf43":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/File/Basename.pm","3ca720052529b88b8fe32661a4f6990c":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/x86_64-linux/File/Spec/Unix.pm","3cb27660d280388e105ffbe75c974755":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/Test/More.pm","68167769a73632a51bf750918ee7fd90":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/Test2/Event/Skip.pm","d8032ca40b44e010673e6dd5816ca66b":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/Exporter/Heavy.pm","899f9728852e657e953bac9b376308bb":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/XSLoader.pm","af500bb503f00b486cec431db97da840":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/x86_64-linux/Devel/Cover/Subroutine.pm","d3799a94cd737cfe97a66a04e560c85b":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/URI.pm","b3a7f71d11010a998e60ac4b3402efb6":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/IO/Socket/SSL.pm","03925219fe3c380bb966da6ea37020cf":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/Test2/Event/Exception.pm","8d541c75f8f91ea319c4aa8e85bd522c":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/x86_64-linux/Devel/Cover.pm","d53035083682c2a78d56d998ad7239d2":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/Pod/Coverage.pm","b71c56316d768bc029229b0ee4e40f5e":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/File/Path.pm","a1f393ef9b566a209b56457b4162ac15":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/x86_64-linux/Tie/Hash/NamedCapture.pm","0043ba76f86652dcbd565fed7632f387":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/URI/_query.pm","c46e2ebb720ee7d9c600ce5acbf34291":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/Digest/base.pm","1db17faa0cd4a30c540e1852eeed98d3":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/x86_64-linux/Devel/Cover/Condition_and_3.pm","98995e350ebf908d0123786de4ba08ff":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/IO/Compress/Gzip/Constants.pm","826e1121066fd1032d72159f160944ae":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/x86_64-linux/Cwd.pm","3924cc309b6830781e15c9b95f1c6e2c":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/x86_64-linux/File/Glob.pm","4ef1a0e328b76c5ee107fc395385c43d":"blib/lib/WebService/Hexonet/Connector/ResponseTemplateManager.pm","bd2cd34bc2f9f24ad6aadc997896af60":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/URI/_idna.pm","d4390d1ca859de4d700953b79d9da543":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/Test2/Hub/Interceptor/Terminator.pm","1e09437d4c107f7ef2690f6b9995dbd7":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/Pod/Find.pm","2d8f6ce093a2176b982c0e12c0194b3b":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/warnings/register.pm","0cf680150dc8723499f5dc60546cd08e":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/x86_64-linux/Devel/Cover/Pod.pm","c7e6ffaf45e3e55eb9708c46dfdfa86c":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/Test/Builder.pm","d19967b56ea1129128fc44b6f2a81c00":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/x86_64-linux/Devel/Cover/DB.pm","9b166f82ac0afacbb4e2c0140725f29d":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/Pod/Parser.pm","ac129b0bf9fb64817490fa63e9aa1bec":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/Test/Exception.pm","c3280193456386938373947a4be14c6b":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/x86_64-linux/Encode/Alias.pm","264620c1b17904d453faf51be18ded85":"blib/lib/WebService/Hexonet/Connector.pm","a8642051a53bc41f8829ae2548279c4a":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/URI/_server.pm","358c4022647b971c7c4f3a4157b8343e":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/Exporter.pm","f1e55495d546214226d3d5cc13974892":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/HTTP/Status.pm","13e97e2e035e935d0b4ba1aa03a62f99":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/HTTP/Date.pm","91dd649602c04eaf8e17af42c908941f":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/Sub/Uplevel.pm","df4dcc012f99e474bd36697d6b84bcb9":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/IO/Uncompress/Gunzip.pm","f62813b55c062f449160100dca67d043":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/x86_64-linux/IO/Seekable.pm","ac626dcb9f8a0ed3a30098573c6ed645":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/URI/https.pm","5e505f781edb59d1bc7d50192aca1d0b":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/Carp.pm","613c5318b87aa69b1145ca028f964445":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/vars.pm","e6c229faaa1ee8e7c5666b979bc1b5f3":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/LWP.pm","f7b0d12a2ac2ede57d12035e68c291ff":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/x86_64-linux/version/vxs.pm","405d2fac2c2c3b6ad22b62a8c19b33cc":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/URI/http.pm","a3865b3f95e807d53eb995634d34e4b7":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/Test2/Util/Trace.pm","3c7494a1e2daadab4c2438772daf1f26":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/x86_64-linux/attributes.pm","f10ae48fb3034322e22629581277234d":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/Test2/Hub/Interceptor.pm","96e93f3446e1a1870b173677be6a0577":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/IO/Compress/Zlib/Extra.pm","e8d4d16a5dbdb2708c2422caa0887a7b":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/x86_64-linux/Data/Dumper.pm","12559898951a4ff0ec7170762caed30a":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/x86_64-linux/Devel/Cover/Condition_or_2.pm","06bf4a7ca29e0616388bafde21a15ed2":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/x86_64-linux/Devel/Cover/Util.pm","8aae02d248a1a31666c00a44087aa82f":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/x86_64-linux/POSIX.pm","c623d4e0d58bc9f293f6ab2b431356f1":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/Time/Local.pm","3f40faa217288ed2cb4e34af87b6bfd6":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/x86_64-linux/Encode/Encoding.pm","3386a2e575ac98bdeb8d7560f35e500a":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/LWP/UserAgent.pm","b337d563fd4bc958c7e0a2bba2ca86d2":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/x86_64-linux/Fcntl.pm","b19a1a264d5b612b5128356eb96c2a52":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/LWP/Protocol/http.pm","6c890622a271f079526b327970f4902c":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/HTTP/Headers.pm","ecae1b10069f01e9e57bdfb10a0b0a2d":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/x86_64-linux/Scalar/Util.pm","0fd9a20e71a733dbe5859bd96e32334d":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/x86_64-linux/IO.pm","f125d65854213e3fc23091f9668931e4":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/Test2/Event.pm","eb975164c364fa49a10fcba0ac61f890":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/URI/Escape.pm","bddc465e351ad0508581b94ef112d322":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/SelectSaver.pm","3741fe9186eb501745a73aacf8dc4900":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/Pod/Coverage/CountParents.pm","e901bf05e7828fc7b4a379273369fe33":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/IO/Uncompress/RawInflate.pm","1c47295a905d4b6f2e53f4347dc3dd0c":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/HTTP/Request/Common.pm","9571d9ef6765c838302d43f49a8a7a20":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/x86_64-linux/Devel/Cover/DB/Digests.pm","8e6548e9adbc78fd971a704921e88dd0":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/List/MoreUtils/PP.pm","35acd04746bca123275efc3694d4c1cf":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/Test2/API/Context.pm","6b7a4d75d42c87da3929354fafa2a5a6":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/Pod/InputObjects.pm","a06d7d990b43552378f394673e2779a7":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/x86_64-linux/Devel/Cover/Condition_and_2.pm","1bc2e8b7c285ed667314b2e20883192c":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/x86_64-linux/Devel/Cover/Time.pm","4db7e6224d25af9b1b445a77339a78e9":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/URI/_generic.pm","af75ac8648e24cd828a69ba0feb455d7":"blib/lib/WebService/Hexonet/Connector/APIClient.pm","556fa9f92f0c82877d05589af0b73acb":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/x86_64-linux/re.pm","ca65e28560d441d60c485e7f01422af9":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/HTTP/Message.pm","0e16d816918d9c552dd93339cd3c7b49":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/warnings.pm"} \ No newline at end of file +{"f7b0d12a2ac2ede57d12035e68c291ff":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/x86_64-linux/version/vxs.pm","d19967b56ea1129128fc44b6f2a81c00":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/x86_64-linux/Devel/Cover/DB.pm","4db7e6224d25af9b1b445a77339a78e9":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/URI/_generic.pm","d89736db8fa61623ca85dcccd3678b4d":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/Try/Tiny.pm","edfae19b5d8c8f278c0a462a90e843c1":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/HTTP/Headers/Util.pm","96e93f3446e1a1870b173677be6a0577":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/IO/Compress/Zlib/Extra.pm","cad7bf575c494425ba081b113bd8f0ce":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/x86_64-linux/Devel/Cover/Condition_or_3.pm","66c4f1af51bbeb98e0f6ca863f8d1615":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/PerlIO.pm","d7e6b3d3bfc6a04c8e52681f8ee445c2":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/x86_64-linux/IO/Socket/INET.pm","946142306a2c4799cb2f003e42da5d86":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/x86_64-linux/DynaLoader.pm","050e848d76ad5f64934101e76441bf88":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/Mozilla/CA.pm","af500bb503f00b486cec431db97da840":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/x86_64-linux/Devel/Cover/Subroutine.pm","db913b1e1b07affbcf854607234901cb":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/x86_64-linux/Encode.pm","1d16b00cb822f2fb8a63bd668e67bba1":"blib/lib/WebService/Hexonet/Connector/Record.pm","c7e6ffaf45e3e55eb9708c46dfdfa86c":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/Test/Builder.pm","4169bb4b1f593c8210c8c6b55369a3e7":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/x86_64-linux/Config_heavy.pl","2a3f607c224ab2e20c927b2263183481":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/Test2/API/Instance.pm","03925219fe3c380bb966da6ea37020cf":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/Test2/Event/Exception.pm","a5b0ea0e398abace1564dc842d25e6b7":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/IO/Socket/SSL/PublicSuffix.pm","a3865b3f95e807d53eb995634d34e4b7":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/Test2/Util/Trace.pm","502fc3e2da78be954e85266557f6504b":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/File/GlobMapper.pm","f62813b55c062f449160100dca67d043":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/x86_64-linux/IO/Seekable.pm","3386a2e575ac98bdeb8d7560f35e500a":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/LWP/UserAgent.pm","206278c02dd4a3fb7792a4a193d2588b":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/x86_64-linux/IO/File.pm","78375f97f3dbc791c1f0f227168f18c4":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/Test/Builder/TodoDiag.pm","6ea40800cd7019daaf8702c93445e0cc":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/URI/_punycode.pm","60b21ae7554fcd5770c467ac337abd85":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/x86_64-linux/Devel/Cover/Condition.pm","06bf4a7ca29e0616388bafde21a15ed2":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/x86_64-linux/Devel/Cover/Util.pm","94f9739a69138173000295be1ab852b3":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/Test/Builder/Module.pm","907518daa4b9c32df57fab6a439175e7":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/x86_64-linux/Config.pm","0b1f4cf7f07548ffd51cd5ddb6644fe2":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/bytes.pm","9db7a975d32cfce80129752e6ebcdffb":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/Test2/API.pm","1e09437d4c107f7ef2690f6b9995dbd7":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/Pod/Find.pm","517fcad09262694258195aa1188714a2":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/Test2/Hub/Subtest.pm","7bdd1d8dffa8d3500086802451fc020d":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/x86_64-linux/Encode/Config.pm","eb975164c364fa49a10fcba0ac61f890":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/URI/Escape.pm","53d4e4ff093a357f9e154cedd85621af":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/Net/HTTP.pm","ecae1b10069f01e9e57bdfb10a0b0a2d":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/x86_64-linux/Scalar/Util.pm","6c76c58ccdad81592ecdd5bf07fc401e":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/LWP/Protocol.pm","b337d563fd4bc958c7e0a2bba2ca86d2":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/x86_64-linux/Fcntl.pm","16e7274469adee7489a16cc96a9a565d":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/IO/Uncompress/Base.pm","b7a30280282012a7713324b86d6cafc3":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/IO/Compress/Base/Common.pm","6a2ea5f50139835f39590496dd5cd018":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/x86_64-linux/version.pm","54a3bce575e5495a8933b15319b453fd":"blib/lib/WebService/Hexonet/Connector/SocketConfig.pm","bab19aa853ab850839111661b558b889":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/x86_64-linux/Net/SSLeay.pm","8d541c75f8f91ea319c4aa8e85bd522c":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/x86_64-linux/Devel/Cover.pm","1bc2e8b7c285ed667314b2e20883192c":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/x86_64-linux/Devel/Cover/Time.pm","3c7494a1e2daadab4c2438772daf1f26":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/x86_64-linux/attributes.pm","1804cdcea69766fe0b4587f713779d20":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/x86_64-linux/version/regex.pm","50b4a4fa4fd1e78419115635e1b9b4fc":"blib/lib/WebService/Hexonet/Connector.pm","e649ab91a4890ab2543e821daef73079":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/Devel/Symdump.pm","eb682e56209c045e77f0b463eea057ec":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/x86_64-linux/Devel/Cover/DB/File.pm","c623d4e0d58bc9f293f6ab2b431356f1":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/Time/Local.pm","12559898951a4ff0ec7170762caed30a":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/x86_64-linux/Devel/Cover/Condition_or_2.pm","9b166f82ac0afacbb4e2c0140725f29d":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/Pod/Parser.pm","a1b96c83bbb9e72e40c4ef0ad7ccb9ac":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/x86_64-linux/B.pm","98995e350ebf908d0123786de4ba08ff":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/IO/Compress/Gzip/Constants.pm","fd0079470b79b95c83e81f3b1dd45b5c":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/Net/HTTP/Methods.pm","f2d0c6c3edb7b4ac08c7b97e71d4668b":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/x86_64-linux/Devel/Cover/Condition_xor_4.pm","060f029d056cc44e536c7d278f69bf43":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/File/Basename.pm","f1e55495d546214226d3d5cc13974892":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/HTTP/Status.pm","3924cc309b6830781e15c9b95f1c6e2c":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/x86_64-linux/File/Glob.pm","8e6548e9adbc78fd971a704921e88dd0":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/List/MoreUtils/PP.pm","1e81482deb175e2b15443c5223ec2e17":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/utf8.pm","441328c7ffbbe42a0226ec65bde71715":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/strict.pm","1583fe367ca2a568f400de5d0bd55489":"blib/lib/WebService/Hexonet/Connector/Response.pm","e901bf05e7828fc7b4a379273369fe33":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/IO/Uncompress/RawInflate.pm","c923fac66a84c6b5dbbf01250e7c1a42":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/AutoLoader.pm","3f40faa217288ed2cb4e34af87b6bfd6":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/x86_64-linux/Encode/Encoding.pm","a8642051a53bc41f8829ae2548279c4a":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/URI/_server.pm","613c5318b87aa69b1145ca028f964445":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/vars.pm","3cb27660d280388e105ffbe75c974755":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/Test/More.pm","9112664759b2ef35702ca61179614f43":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/Test2/Util/ExternalMeta.pm","3e5ff5fb486c95945e10e79859dd5bfb":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/integer.pm","ce2be007acae5d83793f7a8e2467c6d3":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/x86_64-linux/List/MoreUtils/XS.pm","44ac17c070ae630a659627b6cc1764c2":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/x86_64-linux/Sub/Util.pm","c46e2ebb720ee7d9c600ce5acbf34291":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/Digest/base.pm","270771e504eb0b4f2697899cb1102cc1":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/x86_64-linux/Devel/Cover/Statement.pm","2ea74b848f63c415cc8921df64285b2a":"blib/lib/WebService/Hexonet/Connector/ResponseTemplate.pm","358c4022647b971c7c4f3a4157b8343e":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/Exporter.pm","a7be2ad5372cc4930892d5242c5134a2":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/x86_64-linux/List/Util.pm","57aaeba5468aca89eeb55b4daa257ab8":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/x86_64-linux/Devel/Cover/Branch.pm","97cb77511b231c1af673bec5d3f4f6f4":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/x86_64-linux/Devel/Cover/DB/IO/Base.pm","33a4b1acedb7ad3d17aadf941ffdf092":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/base.pm","79f88cfa1fbf882f0f0771dd7ba38272":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/x86_64-linux/Errno.pm","3ca720052529b88b8fe32661a4f6990c":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/x86_64-linux/File/Spec/Unix.pm","55e173fa7c4aa8a39d0b12f002d01a84":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/x86_64-linux/mro.pm","327dc62e6bf452ef184448867c0727ca":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/Test2/Event/Subtest.pm","056ea8f31df117e2984d9bd3a77555dc":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/x86_64-linux/Encode/MIME/Name.pm","ca65e28560d441d60c485e7f01422af9":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/HTTP/Message.pm","626a343deb4120417d1cb2e52d9b6063":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/Test2/Formatter/TAP.pm","e6c229faaa1ee8e7c5666b979bc1b5f3":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/LWP.pm","a850fcd07c6afd92aa12a113db4f227e":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/Test/RequiresInternet.pm","1d40b9fc9546ef50625d3e685a54068d":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/Test2/Util/HashBase.pm","0fd9a20e71a733dbe5859bd96e32334d":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/x86_64-linux/IO.pm","6b7a4d75d42c87da3929354fafa2a5a6":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/Pod/InputObjects.pm","899f9728852e657e953bac9b376308bb":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/XSLoader.pm","91dd649602c04eaf8e17af42c908941f":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/Sub/Uplevel.pm","f16b25058c4e519001e4d956bbbe2df2":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/Test2/Util.pm","d3799a94cd737cfe97a66a04e560c85b":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/URI.pm","84821ce1bb31bbb263b2368a36156cb5":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/Test2/Event/Diag.pm","23a54c56a0b385e7a6c273356823654f":"t/Hexonet-connector.t","cd14fd512fc0ad67bb08032b0789600f":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/x86_64-linux/IO/Socket/UNIX.pm","60cf451d00ebf0fb5654d69c8bebdf6a":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/Test2/Event/Plan.pm","a06d7d990b43552378f394673e2779a7":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/x86_64-linux/Devel/Cover/Condition_and_2.pm","b3a7f71d11010a998e60ac4b3402efb6":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/IO/Socket/SSL.pm","5030a0c17339bfdb7aa947236038e9ba":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/Test2/Event/Note.pm","d53035083682c2a78d56d998ad7239d2":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/Pod/Coverage.pm","d70adb9df5f7a6e6583da3e71c707bd7":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/x86_64-linux/auto/Net/SSLeay/autosplit.ix","fb8cb02e75b226fa76946e3d1c32f7a2":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/Test2/Event/Waiting.pm","2c078a78ae348def28842cab9f8e387c":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/x86_64-linux/Devel/Cover/DB/Structure.pm","9571d9ef6765c838302d43f49a8a7a20":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/x86_64-linux/Devel/Cover/DB/Digests.pm","f261ff12097b376fceb636639aa228c8":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/Symbol.pm","fb2b74de573d62ced49f61bbf91df4de":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/Test2/Hub.pm","b19a1a264d5b612b5128356eb96c2a52":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/LWP/Protocol/http.pm","ac626dcb9f8a0ed3a30098573c6ed645":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/URI/https.pm","0e16d816918d9c552dd93339cd3c7b49":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/warnings.pm","bd2cd34bc2f9f24ad6aadc997896af60":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/URI/_idna.pm","bddc465e351ad0508581b94ef112d322":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/SelectSaver.pm","ac129b0bf9fb64817490fa63e9aa1bec":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/Test/Exception.pm","f125d65854213e3fc23091f9668931e4":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/Test2/Event.pm","0043ba76f86652dcbd565fed7632f387":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/URI/_query.pm","d4390d1ca859de4d700953b79d9da543":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/Test2/Hub/Interceptor/Terminator.pm","405d2fac2c2c3b6ad22b62a8c19b33cc":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/URI/http.pm","243b0115937229411761ef353a5541ae":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/Readonly.pm","c62689b45e22bba17c624608526f4735":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/overload.pm","04150524197463018d3188f24e360c5e":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/File/Find.pm","0ad08f93acbba91431069a83c4eb4336":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/x86_64-linux/Devel/Cover/DB/IO.pm","826e1121066fd1032d72159f160944ae":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/x86_64-linux/Cwd.pm","c14950ed3803eafc8980ef353e184fca":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/HTTP/Request.pm","56cde6eba0f667ab56196613df3933c1":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/constant.pm","73d816d785406bc5c2de9059918a9a3c":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/x86_64-linux/Storable.pm","eeddb3c3ae37db71c02f1daee1f0d410":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/x86_64-linux/Socket.pm","daefb18c5c6bd6ace0e349ebdab2f154":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/blib.pm","13e97e2e035e935d0b4ba1aa03a62f99":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/HTTP/Date.pm","35acd04746bca123275efc3694d4c1cf":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/Test2/API/Context.pm","2cf476c10389b1415009b9bdd6a60ffd":"blib/lib/WebService/Hexonet/Connector/Logger.pm","badbc5ed1a593ba6f6c88a51e9b74ead":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/Exporter/Tiny.pm","c3266713b590114e62acc1a62fa33677":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/Test2/Event/Info.pm","8aae02d248a1a31666c00a44087aa82f":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/x86_64-linux/POSIX.pm","556fa9f92f0c82877d05589af0b73acb":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/x86_64-linux/re.pm","9decbec384749bf2d03f50e0092fed6c":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/JSON/MaybeXS.pm","e8d4d16a5dbdb2708c2422caa0887a7b":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/x86_64-linux/Data/Dumper.pm","e8db750947412e88e47b09b68b1f5f69":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/x86_64-linux/Compress/Raw/Zlib.pm","2d8f6ce093a2176b982c0e12c0194b3b":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/warnings/register.pm","8b84c3ea28f3ac5869d80b4665e5c28d":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/x86_64-linux/Devel/Cover/DB/IO/JSON.pm","f980d8ffc0b059cb03b7ba4091604e3a":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/x86_64-linux/IO/Socket.pm","ba4d379aeccdf0982810a9ebc71aa1ce":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/x86_64-linux/IO/Handle.pm","fcc82202285f5f80eae7dbef091b4c41":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/x86_64-linux/Cpanel/JSON/XS.pm","7210e891f6666f846af66da5e266bc34":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/IO/Socket/IP.pm","cb45341017bda8dc478cc44a3d2f9bcd":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/Test2/API/Stack.pm","df4dcc012f99e474bd36697d6b84bcb9":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/IO/Uncompress/Gunzip.pm","08e42c066cab69fab2ab11689dca015e":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/HTTP/Response.pm","1c47295a905d4b6f2e53f4347dc3dd0c":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/HTTP/Request/Common.pm","31045c808ebbbf8045a819cb3877c2fa":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/LWP/MemberMixin.pm","d8032ca40b44e010673e6dd5816ca66b":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/Exporter/Heavy.pm","1db17faa0cd4a30c540e1852eeed98d3":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/x86_64-linux/Devel/Cover/Condition_and_3.pm","46195523acd7404ae6df67991440da59":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/x86_64-linux/Devel/Cover/Criterion.pm","52f56d6774eedd84d6e806eba9cad7c3":"blib/lib/WebService/Hexonet/Connector/APIClient.pm","3f8ff6b6cde2a0710e13a192161a00b8":"blib/lib/WebService/Hexonet/Connector/ResponseParser.pm","0521613c4d5d86fbf57beca6169466d3":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/IO/Uncompress/Adapter/Inflate.pm","69860b015da9f0e90a09bcef8257ccca":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/Test2/Formatter.pm","a1a74cc6dd1f8834201b84f13cb28e43":"blib/lib/WebService/Hexonet/Connector/ResponseTemplateManager.pm","b71c56316d768bc029229b0ee4e40f5e":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/File/Path.pm","3741fe9186eb501745a73aacf8dc4900":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/Pod/Coverage/CountParents.pm","c7fa2c1421b2ddd69373633c6102ad25":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/B/Deparse.pm","5e505f781edb59d1bc7d50192aca1d0b":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/Carp.pm","1318b391d8dedd803f97af8c45af420c":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/feature.pm","f10ae48fb3034322e22629581277234d":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/Test2/Hub/Interceptor.pm","54219f8281017f23c0671a773604a15d":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/HTTP/Config.pm","1db626f9e032613c42c7553db1464b4a":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/Test/Builder/Formatter.pm","0cf680150dc8723499f5dc60546cd08e":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/x86_64-linux/Devel/Cover/Pod.pm","947dd9f16a5b7381d8db9097f98991af":"blib/lib/WebService/Hexonet/Connector/Column.pm","acc4709f0adb89bef2863771b6995d2b":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/Tie/Hash.pm","4f7cd2ab35433041d33eeebc21e5bc1e":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/Test2/Event/Bail.pm","42cfc332c3ec455544c408d66409f868":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/B/Debug.pm","fcebfe6eda6a60d759025e69d1937f07":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/Net/HTTPS.pm","68167769a73632a51bf750918ee7fd90":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/Test2/Event/Skip.pm","6c890622a271f079526b327970f4902c":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/HTTP/Headers.pm","a1f393ef9b566a209b56457b4162ac15":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/x86_64-linux/Tie/Hash/NamedCapture.pm","2260a67f78359774f10f0d3748497026":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/LWP/Protocol/https.pm","55f76e668fc2bba7621dd546702480ff":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/List/MoreUtils.pm","873b2f815e39fafbc2ef0addcd93ea91":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/x86_64-linux/Devel/Cover/Dumper.pm","20d201e9a76f020a21e66d36fed36039":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/Test2/Event/Ok.pm","0e42f824a13eae5979d10017afc8227b":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/parent.pm","36e1b34f8175e036d57e51fd7d56becd":"/home/travis/perl5/perlbrew/perls/5.26/lib/5.26.2/overloading.pm","c3280193456386938373947a4be14c6b":"/home/travis/perl5/perlbrew/perls/5.26/lib/site_perl/5.26.2/x86_64-linux/Encode/Alias.pm"} \ No newline at end of file diff --git a/cover_db/structure/1583fe367ca2a568f400de5d0bd55489 b/cover_db/structure/1583fe367ca2a568f400de5d0bd55489 new file mode 100644 index 0000000..b0d9ade --- /dev/null +++ b/cover_db/structure/1583fe367ca2a568f400de5d0bd55489 @@ -0,0 +1 @@ +{"start":{"93":{"__ANON__":[{"condition":null,"branch":8,"pod":4,"statement":89,"subroutine":14,"time":null}]},"109":{"getColumnKeys":[{"condition":null,"branch":9,"pod":5,"statement":93,"time":null,"subroutine":16}]},"323":{"hasNextPage":[{"branch":29,"condition":3,"statement":199,"pod":25,"time":null,"subroutine":36}]},"337":{"hasPreviousPage":[{"branch":31,"statement":207,"condition":3,"pod":26,"subroutine":37,"time":null}]},"7":{"BEGIN":[{"time":null,"subroutine":4,"pod":null,"branch":null,"condition":null,"statement":11}]},"255":{"getPreviousPageNumber":[{"subroutine":29,"time":null,"pod":18,"branch":21,"condition":2,"statement":164}]},"84":{"addRecord":[{"branch":7,"pod":2,"condition":null,"statement":78,"time":null,"subroutine":12}]},"121":{"getCommand":[{"condition":null,"branch":9,"pod":7,"statement":99,"time":null,"subroutine":18}]},"359":{"__ANON__":[{"condition":3,"branch":33,"pod":28,"statement":223,"subroutine":40,"time":null}]},"310":{"getRecordsLimitation":[{"subroutine":35,"time":null,"branch":27,"condition":3,"statement":192,"pod":24}]},"358":{"_hasColumn":[{"branch":33,"condition":3,"statement":218,"pod":28,"time":null,"subroutine":39}]},"3":{"BEGIN":[{"subroutine":null,"time":null,"statement":null,"branch":null,"condition":null,"pod":null}]},"290":{"getRecordsCount":[{"condition":3,"branch":25,"pod":22,"statement":181,"subroutine":33,"time":null}]},"275":{"getRecord":[{"subroutine":31,"time":null,"branch":24,"condition":2,"statement":174,"pod":20}]},"267":{"getPreviousRecord":[{"branch":23,"pod":19,"condition":2,"statement":171,"time":null,"subroutine":30}]},"6":{"BEGIN":[{"time":null,"subroutine":3,"condition":null,"branch":null,"pod":null,"statement":8}]},"9":{"BEGIN":[{"condition":null,"branch":null,"statement":17,"pod":null,"time":null,"subroutine":6}]},"11":{"BEGIN":[{"time":null,"subroutine":8,"statement":23,"branch":null,"condition":null,"pod":null}]},"101":{"getColumnIndex":[{"condition":null,"branch":8,"statement":89,"pod":4,"subroutine":15,"time":null}]},"10":{"BEGIN":[{"time":null,"subroutine":7,"condition":null,"branch":null,"statement":20,"pod":null}]},"115":{"getColumns":[{"subroutine":17,"time":null,"condition":null,"branch":9,"pod":6,"statement":96}]},"14":{"BEGIN":[{"statement":26,"branch":null,"condition":null,"pod":null,"subroutine":9,"time":null}]},"297":{"getRecordsTotalCount":[{"branch":25,"condition":3,"pod":23,"statement":185,"time":null,"subroutine":34}]},"91":{"getColumn":[{"time":null,"subroutine":13,"branch":7,"condition":null,"statement":82,"pod":3}]},"372":{"_hasNextRecord":[{"statement":227,"branch":33,"condition":4,"pod":28,"subroutine":42,"time":null}]},"351":{"rewindRecordList":[{"time":null,"subroutine":38,"branch":33,"statement":215,"condition":3,"pod":27}]},"214":{"getNextPageNumber":[{"time":null,"subroutine":26,"branch":18,"pod":15,"condition":1,"statement":147}]},"206":{"getNextRecord":[{"condition":1,"branch":17,"statement":144,"pod":14,"subroutine":25,"time":null}]},"138":{"getCurrentPageNumber":[{"branch":9,"pod":9,"condition":null,"statement":108,"time":null,"subroutine":20}]},"18":{"new":[{"condition":null,"branch":null,"pod":null,"statement":29,"subroutine":10,"time":null}]},"4":{"BEGIN":[{"time":null,"subroutine":1,"condition":null,"branch":null,"pod":null,"statement":2}]},"5":{"BEGIN":[{"branch":null,"condition":null,"statement":5,"pod":null,"subroutine":2,"time":null}]},"189":{"getListHash":[{"statement":137,"branch":17,"condition":1,"pod":13,"time":null,"subroutine":24}]},"380":{"_hasPreviousRecord":[{"branch":33,"pod":28,"condition":5,"statement":232,"subroutine":43,"time":null}]},"8":{"BEGIN":[{"branch":null,"pod":null,"condition":null,"statement":14,"time":null,"subroutine":5}]},"284":{"getRecords":[{"time":null,"subroutine":32,"branch":25,"condition":3,"pod":21,"statement":178}]},"172":{"getLastRecordIndex":[{"branch":14,"condition":1,"pod":12,"statement":127,"time":null,"subroutine":23}]},"157":{"getFirstRecordIndex":[{"statement":117,"branch":11,"condition":1,"pod":11,"time":null,"subroutine":22}]},"76":{"addColumn":[{"subroutine":11,"time":null,"branch":7,"statement":72,"condition":null,"pod":1}]},"149":{"getCurrentRecord":[{"subroutine":21,"time":null,"branch":10,"pod":10,"condition":1,"statement":114}]},"365":{"_hasCurrentRecord":[{"condition":3,"branch":33,"statement":223,"pod":28,"subroutine":41,"time":null}]},"127":{"getCommandPlain":[{"subroutine":19,"time":null,"pod":8,"branch":9,"condition":null,"statement":101}]},"227":{"getNumberOfPages":[{"time":null,"subroutine":27,"statement":155,"branch":20,"condition":1,"pod":16}]},"-1":{"__COVER__":[{"condition":6,"branch":33,"statement":234,"pod":28,"time":null,"subroutine":44}]},"238":{"getPagination":[{"branch":21,"statement":161,"condition":2,"pod":17,"subroutine":28,"time":null}]}},"branch":[[22,{"text":"unless (defined $ph)"}],[21,{"text":"if ($self->{'raw'} =~ /[{][[:upper:]_]+[}]/gmsux)"}],[35,{"text":"if (defined $self->{'command'}{'PASSWORD'})"}],[52,{"text":"if ($len > $count)"}],[63,{"text":"if (defined $v)"}],[61,{"text":"if (defined $col)"}],[45,{"text":"if (defined $h->{'PROPERTY'})"}],[92,{"text":"if ($self->_hasColumn($key))"}],[103,{"text":"if defined $col"}],[141,{"text":"if (defined $first and $limit > 0)"}],[150,{"text":"if $self->_hasCurrentRecord"}],[161,{"text":"if (defined $f)"}],[159,{"text":"if (defined $col)"}],[166,{"text":"if $len > 0"}],[176,{"text":"if (defined $l)"}],[174,{"text":"if (defined $col)"}],[181,{"text":"if ($len > 0)"}],[207,{"text":"if $self->_hasNextRecord"}],[216,{"text":"if ($cp < 0)"}],[221,{"text":"if $page <= $pages"}],[230,{"text":"if ($t > 0 and $limit > 0)"}],[257,{"text":"if ($cp < 0)"}],[261,{"text":"if $np > 0"}],[268,{"text":"if $self->_hasPreviousRecord"}],[276,{"text":"if ($idx >= 0 and $self->getRecordsCount > $idx)"}],[301,{"text":"if (defined $t)"}],[299,{"text":"if (defined $col)"}],[314,{"text":"if (defined $l)"}],[312,{"text":"if (defined $col)"}],[325,{"text":"if ($cp < 0)"}],[329,{"text":"if ($np <= $self->getNumberOfPages)"}],[339,{"text":"if ($cp < 0)"}],[343,{"text":"if ($pp > 0)"}]],"pod":[[18,"new"],[76,"addColumn"],[84,"addRecord"],[91,"getColumn"],[101,"getColumnIndex"],[109,"getColumnKeys"],[115,"getColumns"],[121,"getCommand"],[127,"getCommandPlain"],[138,"getCurrentPageNumber"],[149,"getCurrentRecord"],[157,"getFirstRecordIndex"],[172,"getLastRecordIndex"],[189,"getListHash"],[206,"getNextRecord"],[214,"getNextPageNumber"],[227,"getNumberOfPages"],[238,"getPagination"],[255,"getPreviousPageNumber"],[267,"getPreviousRecord"],[275,"getRecord"],[284,"getRecords"],[290,"getRecordsCount"],[297,"getRecordsTotalCount"],[310,"getRecordsLimitation"],[323,"hasNextPage"],[337,"hasPreviousPage"],[351,"rewindRecordList"]],"statement":[3,3,4,4,4,5,5,5,6,6,6,7,7,7,8,8,8,9,9,9,10,10,10,11,11,11,14,14,14,18,19,21,22,23,25,25,26,27,28,30,31,33,34,35,37,39,40,41,42,44,45,46,46,47,48,49,49,50,51,52,53,56,57,58,59,60,61,62,63,64,68,71,76,77,77,78,78,79,84,85,85,86,91,92,93,93,93,94,96,101,102,103,104,109,110,110,115,116,116,121,122,127,128,129,129,130,131,133,138,139,140,141,142,144,149,150,152,157,158,159,160,161,162,165,165,166,167,172,173,174,175,176,177,180,181,182,184,189,190,191,191,192,194,201,206,207,209,214,215,216,217,219,220,221,222,227,228,229,230,231,233,238,239,250,255,256,257,258,260,261,262,267,268,270,275,276,277,279,284,285,285,290,291,291,292,297,298,299,300,301,302,305,310,311,312,313,314,315,318,323,324,325,326,328,329,330,332,337,338,339,340,342,343,344,346,351,352,353,358,359,359,359,360,365,366,366,367,372,373,374,374,375,380,381],"digest":"1583fe367ca2a568f400de5d0bd55489","file":"blib/lib/WebService/Hexonet/Connector/Response.pm","subroutine":[[3,"BEGIN"],[4,"BEGIN"],[5,"BEGIN"],[6,"BEGIN"],[7,"BEGIN"],[8,"BEGIN"],[9,"BEGIN"],[10,"BEGIN"],[11,"BEGIN"],[14,"BEGIN"],[18,"new"],[76,"addColumn"],[84,"addRecord"],[91,"getColumn"],[93,"__ANON__"],[101,"getColumnIndex"],[109,"getColumnKeys"],[115,"getColumns"],[121,"getCommand"],[127,"getCommandPlain"],[138,"getCurrentPageNumber"],[149,"getCurrentRecord"],[157,"getFirstRecordIndex"],[172,"getLastRecordIndex"],[189,"getListHash"],[206,"getNextRecord"],[214,"getNextPageNumber"],[227,"getNumberOfPages"],[238,"getPagination"],[255,"getPreviousPageNumber"],[267,"getPreviousRecord"],[275,"getRecord"],[284,"getRecords"],[290,"getRecordsCount"],[297,"getRecordsTotalCount"],[310,"getRecordsLimitation"],[323,"hasNextPage"],[337,"hasPreviousPage"],[351,"rewindRecordList"],[358,"_hasColumn"],[359,"__ANON__"],[365,"_hasCurrentRecord"],[372,"_hasNextRecord"],[380,"_hasPreviousRecord"]],"condition":[[141,{"left":"defined $first","right":"$limit > 0","type":"and_3","op":"and"}],[230,{"op":"and","type":"and_3","left":"$t > 0","right":"$limit > 0"}],[276,{"right":"$self->getRecordsCount > $idx","left":"$idx >= 0","type":"and_3","op":"and"}],[367,{"op":"&&","right":"$self->{'recordIndex'} < $len","left":"$len > 0 && $self->{'recordIndex'} >= 0","type":"and_3"}],[375,{"op":"&&","left":"$self->_hasCurrentRecord","right":"$next < $len","type":"and_3"}],[381,{"op":"&&","type":"and_3","left":"$self->{'recordIndex'} > 0","right":"$self->_hasCurrentRecord"}]]} \ No newline at end of file diff --git a/cover_db/structure/264620c1b17904d453faf51be18ded85.lock b/cover_db/structure/1583fe367ca2a568f400de5d0bd55489.lock similarity index 100% rename from cover_db/structure/264620c1b17904d453faf51be18ded85.lock rename to cover_db/structure/1583fe367ca2a568f400de5d0bd55489.lock diff --git a/cover_db/structure/1d16b00cb822f2fb8a63bd668e67bba1 b/cover_db/structure/1d16b00cb822f2fb8a63bd668e67bba1 new file mode 100644 index 0000000..137c636 --- /dev/null +++ b/cover_db/structure/1d16b00cb822f2fb8a63bd668e67bba1 @@ -0,0 +1 @@ +{"start":{"23":{"getDataByKey":[{"branch":null,"statement":15,"condition":null,"pod":2,"time":null,"subroutine":6}]},"3":{"BEGIN":[{"time":null,"subroutine":null,"branch":null,"condition":null,"pod":null,"statement":null}]},"32":{"hasData":[{"condition":null,"branch":1,"pod":3,"statement":19,"subroutine":7,"time":null}]},"17":{"getData":[{"branch":null,"statement":13,"condition":null,"pod":1,"subroutine":5,"time":null}]},"7":{"BEGIN":[{"subroutine":3,"time":null,"statement":8,"branch":null,"condition":null,"pod":null}]},"-1":{"__COVER__":[{"time":null,"subroutine":8,"branch":1,"statement":22,"condition":null,"pod":4}]},"5":{"BEGIN":[{"branch":null,"pod":null,"condition":null,"statement":5,"subroutine":2,"time":null}]},"4":{"BEGIN":[{"condition":null,"branch":null,"statement":2,"pod":null,"time":null,"subroutine":1}]},"11":{"new":[{"condition":null,"branch":null,"statement":11,"pod":null,"time":null,"subroutine":4}]}},"subroutine":[[3,"BEGIN"],[4,"BEGIN"],[5,"BEGIN"],[7,"BEGIN"],[11,"new"],[17,"getData"],[23,"getDataByKey"],[32,"hasData"]],"file":"blib/lib/WebService/Hexonet/Connector/Record.pm","digest":"1d16b00cb822f2fb8a63bd668e67bba1","branch":[[25,{"text":"if $self->hasData($key)"}]],"pod":[[11,"new"],[17,"getData"],[23,"getDataByKey"],[32,"hasData"]],"statement":[3,3,4,4,4,5,5,5,7,7,7,11,12,17,18,23,24,25,27,32,33,34]} \ No newline at end of file diff --git a/cover_db/structure/4ef1a0e328b76c5ee107fc395385c43d.lock b/cover_db/structure/1d16b00cb822f2fb8a63bd668e67bba1.lock similarity index 100% rename from cover_db/structure/4ef1a0e328b76c5ee107fc395385c43d.lock rename to cover_db/structure/1d16b00cb822f2fb8a63bd668e67bba1.lock diff --git a/cover_db/structure/264620c1b17904d453faf51be18ded85 b/cover_db/structure/264620c1b17904d453faf51be18ded85 deleted file mode 100644 index 44317fb..0000000 --- a/cover_db/structure/264620c1b17904d453faf51be18ded85 +++ /dev/null @@ -1 +0,0 @@ -{"digest":"264620c1b17904d453faf51be18ded85","subroutine":[[3,"BEGIN"],[4,"BEGIN"],[5,"BEGIN"],[6,"BEGIN"],[7,"BEGIN"],[8,"BEGIN"],[9,"BEGIN"],[10,"BEGIN"],[11,"BEGIN"],[12,"BEGIN"],[13,"BEGIN"],[15,"BEGIN"]],"start":{"5":{"BEGIN":[{"condition":null,"time":null,"branch":null,"statement":5,"subroutine":2,"pod":null}]},"12":{"BEGIN":[{"branch":null,"statement":26,"subroutine":9,"pod":null,"condition":null,"time":null}]},"10":{"BEGIN":[{"time":null,"condition":null,"subroutine":7,"pod":null,"branch":null,"statement":20}]},"15":{"BEGIN":[{"subroutine":11,"pod":null,"branch":null,"statement":32,"time":null,"condition":null}]},"9":{"BEGIN":[{"statement":17,"branch":null,"pod":null,"subroutine":6,"condition":null,"time":null}]},"7":{"BEGIN":[{"subroutine":4,"pod":null,"branch":null,"statement":11,"time":null,"condition":null}]},"4":{"BEGIN":[{"condition":null,"time":null,"branch":null,"statement":2,"pod":null,"subroutine":1}]},"-1":{"__COVER__":[{"branch":null,"statement":35,"pod":null,"subroutine":12,"condition":null,"time":null}]},"3":{"BEGIN":[{"subroutine":null,"pod":null,"branch":null,"statement":null,"time":null,"condition":null}]},"8":{"BEGIN":[{"statement":14,"branch":null,"subroutine":5,"pod":null,"condition":null,"time":null}]},"13":{"BEGIN":[{"time":null,"condition":null,"subroutine":10,"pod":null,"branch":null,"statement":29}]},"6":{"BEGIN":[{"pod":null,"subroutine":3,"branch":null,"statement":8,"time":null,"condition":null}]},"11":{"BEGIN":[{"pod":null,"subroutine":8,"branch":null,"statement":23,"time":null,"condition":null}]}},"statement":[3,3,4,4,4,5,5,5,6,6,6,7,7,7,8,8,8,9,9,9,10,10,10,11,11,11,12,12,12,13,13,13,15,15,15],"file":"blib/lib/WebService/Hexonet/Connector.pm"} \ No newline at end of file diff --git a/cover_db/structure/2cf476c10389b1415009b9bdd6a60ffd b/cover_db/structure/2cf476c10389b1415009b9bdd6a60ffd new file mode 100644 index 0000000..725ede2 --- /dev/null +++ b/cover_db/structure/2cf476c10389b1415009b9bdd6a60ffd @@ -0,0 +1 @@ +{"subroutine":[[3,"BEGIN"],[4,"BEGIN"],[5,"BEGIN"],[6,"BEGIN"],[8,"BEGIN"],[12,"new"],[18,"log"]],"start":{"18":{"log":[{"branch":null,"statement":16,"condition":null,"pod":1,"subroutine":6,"time":null}]},"6":{"BEGIN":[{"branch":null,"statement":8,"condition":null,"pod":null,"subroutine":3,"time":null}]},"8":{"BEGIN":[{"statement":11,"branch":null,"condition":null,"pod":null,"time":null,"subroutine":4}]},"12":{"new":[{"subroutine":5,"time":null,"pod":null,"branch":null,"condition":null,"statement":14}]},"-1":{"__COVER__":[{"branch":1,"statement":33,"condition":null,"pod":2,"subroutine":7,"time":null}]},"5":{"BEGIN":[{"subroutine":2,"time":null,"branch":null,"condition":null,"statement":5,"pod":null}]},"4":{"BEGIN":[{"branch":null,"statement":2,"condition":null,"pod":null,"time":null,"subroutine":1}]},"3":{"BEGIN":[{"time":null,"subroutine":null,"branch":null,"condition":null,"statement":null,"pod":null}]}},"file":"blib/lib/WebService/Hexonet/Connector/Logger.pm","pod":[[12,"new"],[18,"log"]],"branch":[[19,{"text":"if (defined $error) { }"}]],"statement":[3,3,4,4,4,5,5,5,6,6,6,8,8,8,12,13,18,19,20,20,21,21,22,22,23,23,25,25,26,26,27,27,29],"digest":"2cf476c10389b1415009b9bdd6a60ffd"} \ No newline at end of file diff --git a/cover_db/structure/58d6ec4465b0f609ee8b04d3ee46bdb3.lock b/cover_db/structure/2cf476c10389b1415009b9bdd6a60ffd.lock similarity index 100% rename from cover_db/structure/58d6ec4465b0f609ee8b04d3ee46bdb3.lock rename to cover_db/structure/2cf476c10389b1415009b9bdd6a60ffd.lock diff --git a/cover_db/structure/2ea74b848f63c415cc8921df64285b2a b/cover_db/structure/2ea74b848f63c415cc8921df64285b2a new file mode 100644 index 0000000..5619bd8 --- /dev/null +++ b/cover_db/structure/2ea74b848f63c415cc8921df64285b2a @@ -0,0 +1 @@ +{"start":{"58":{"getHash":[{"statement":37,"branch":3,"condition":2,"pod":5,"time":null,"subroutine":11}]},"49":{"getQueuetime":[{"time":null,"subroutine":10,"branch":2,"pod":4,"condition":2,"statement":33}]},"5":{"BEGIN":[{"time":null,"subroutine":2,"branch":null,"condition":null,"statement":5,"pod":null}]},"4":{"BEGIN":[{"subroutine":1,"time":null,"condition":null,"branch":null,"pod":null,"statement":2}]},"87":{"isTmpError":[{"branch":4,"pod":9,"condition":2,"statement":49,"subroutine":15,"time":null}]},"7":{"BEGIN":[{"condition":null,"branch":null,"pod":null,"statement":11,"subroutine":4,"time":null}]},"31":{"getCode":[{"condition":2,"branch":2,"statement":27,"pod":1,"subroutine":7,"time":null}]},"15":{"new":[{"pod":null,"branch":null,"condition":null,"statement":17,"time":null,"subroutine":6}]},"64":{"getRuntime":[{"branch":3,"pod":6,"condition":2,"statement":39,"subroutine":12,"time":null}]},"-1":{"__COVER__":[{"branch":5,"statement":56,"condition":2,"pod":11,"subroutine":17,"time":null}]},"37":{"getDescription":[{"time":null,"subroutine":8,"condition":2,"branch":2,"statement":29,"pod":2}]},"9":{"BEGIN":[{"subroutine":5,"time":null,"branch":null,"statement":14,"condition":null,"pod":null}]},"94":{"isPending":[{"condition":2,"branch":4,"pod":10,"statement":52,"subroutine":16,"time":null}]},"6":{"BEGIN":[{"branch":null,"statement":8,"condition":null,"pod":null,"time":null,"subroutine":3}]},"73":{"isError":[{"condition":2,"branch":4,"pod":7,"statement":43,"subroutine":13,"time":null}]},"80":{"isSuccess":[{"pod":8,"branch":4,"condition":2,"statement":46,"subroutine":14,"time":null}]},"3":{"BEGIN":[{"branch":null,"condition":null,"statement":null,"pod":null,"time":null,"subroutine":null}]},"43":{"getPlain":[{"statement":31,"branch":2,"condition":2,"pod":3,"subroutine":9,"time":null}]}},"file":"blib/lib/WebService/Hexonet/Connector/ResponseTemplate.pm","statement":[3,3,4,4,4,5,5,5,6,6,6,7,7,7,9,9,9,15,16,17,18,20,21,22,23,24,26,31,32,37,38,43,44,49,50,51,53,58,59,64,65,66,68,73,74,75,80,81,82,87,88,89,94,95,96,98],"branch":[[17,{"text":"if (not defined $raw or length $raw == 0)"}],[22,{"text":"unless (defined $self->{'hash'}{'DESCRIPTION'} and defined $self->{'hash'}{'CODE'})"}],[50,{"text":"if (defined $self->{'hash'}{'QUEUETIME'})"}],[65,{"text":"if (defined $self->{'hash'}{'RUNTIME'})"}],[95,{"text":"if (defined $self->{'hash'}{'PENDING'})"}]],"pod":[[15,"new"],[31,"getCode"],[37,"getDescription"],[43,"getPlain"],[49,"getQueuetime"],[58,"getHash"],[64,"getRuntime"],[73,"isError"],[80,"isSuccess"],[87,"isTmpError"],[94,"isPending"]],"digest":"2ea74b848f63c415cc8921df64285b2a","subroutine":[[3,"BEGIN"],[4,"BEGIN"],[5,"BEGIN"],[6,"BEGIN"],[7,"BEGIN"],[9,"BEGIN"],[15,"new"],[31,"getCode"],[37,"getDescription"],[43,"getPlain"],[49,"getQueuetime"],[58,"getHash"],[64,"getRuntime"],[73,"isError"],[80,"isSuccess"],[87,"isTmpError"],[94,"isPending"]],"condition":[[17,{"op":"or","type":"or_3","left":"not defined $raw","right":"length $raw == 0"}],[22,{"type":"and_3","right":"defined $self->{'hash'}{'CODE'}","left":"defined $self->{'hash'}{'DESCRIPTION'}","op":"and"}]]} \ No newline at end of file diff --git a/cover_db/structure/84a88d969f5d28dcdead50371b604404.lock b/cover_db/structure/2ea74b848f63c415cc8921df64285b2a.lock similarity index 100% rename from cover_db/structure/84a88d969f5d28dcdead50371b604404.lock rename to cover_db/structure/2ea74b848f63c415cc8921df64285b2a.lock diff --git a/cover_db/structure/3f8ff6b6cde2a0710e13a192161a00b8 b/cover_db/structure/3f8ff6b6cde2a0710e13a192161a00b8 new file mode 100644 index 0000000..2fd68e3 --- /dev/null +++ b/cover_db/structure/3f8ff6b6cde2a0710e13a192161a00b8 @@ -0,0 +1 @@ +{"file":"blib/lib/WebService/Hexonet/Connector/ResponseParser.pm","digest":"3f8ff6b6cde2a0710e13a192161a00b8","statement":[3,3,4,4,4,5,5,5,7,7,7,11,12,13,14,15,16,17,18,19,20,21,23,24,25,26,26,28,31,35,40,41,42,43,44,44,45,46,46,47,48,52,53,55,56,58,59,61,62,64,65],"branch":[[20,{"text":"unless (defined $hash{'PROPERTY'})"}],[25,{"text":"if (defined $hash{'PROPERTY'}{$prop}) { }"}],[19,{"text":"if ($attr =~ /^property\\[([^\\]]*)\\]/imsux) { }"}],[15,{"text":"if (/^([^\\=]*[^\\t\\= ])[\\t ]*=[\\t ]*(.+)/msux)"}],[42,{"text":"if (defined $h->{'PROPERTY'})"}],[52,{"text":"if (defined $h->{'CODE'})"}],[55,{"text":"if (defined $h->{'DESCRIPTION'})"}],[58,{"text":"if (defined $h->{'QUEUETIME'})"}],[61,{"text":"if (defined $h->{'RUNTIME'})"}]],"pod":[[11,"parse"],[40,"serialize"]],"subroutine":[[3,"BEGIN"],[4,"BEGIN"],[5,"BEGIN"],[7,"BEGIN"],[11,"parse"],[40,"serialize"]],"start":{"11":{"parse":[{"branch":null,"condition":null,"statement":11,"pod":null,"subroutine":4,"time":null}]},"5":{"BEGIN":[{"branch":null,"condition":null,"statement":5,"pod":null,"time":null,"subroutine":2}]},"-1":{"__COVER__":[{"time":null,"subroutine":6,"condition":null,"branch":9,"pod":2,"statement":51}]},"4":{"BEGIN":[{"subroutine":1,"time":null,"branch":null,"condition":null,"statement":2,"pod":null}]},"3":{"BEGIN":[{"branch":null,"pod":null,"condition":null,"statement":null,"subroutine":null,"time":null}]},"7":{"BEGIN":[{"branch":null,"condition":null,"statement":8,"pod":null,"time":null,"subroutine":3}]},"40":{"serialize":[{"time":null,"subroutine":5,"branch":4,"pod":1,"condition":null,"statement":30}]}}} \ No newline at end of file diff --git a/cover_db/structure/980cbae1a854f2ac49186d1e3095da25.lock b/cover_db/structure/3f8ff6b6cde2a0710e13a192161a00b8.lock similarity index 100% rename from cover_db/structure/980cbae1a854f2ac49186d1e3095da25.lock rename to cover_db/structure/3f8ff6b6cde2a0710e13a192161a00b8.lock diff --git a/cover_db/structure/4ef1a0e328b76c5ee107fc395385c43d b/cover_db/structure/4ef1a0e328b76c5ee107fc395385c43d deleted file mode 100644 index b155919..0000000 --- a/cover_db/structure/4ef1a0e328b76c5ee107fc395385c43d +++ /dev/null @@ -1 +0,0 @@ -{"pod":[[15,"getInstance"],[32,"generateTemplate"],[38,"addTemplate"],[45,"getTemplate"],[57,"getTemplates"],[68,"hasTemplate"],[74,"isTemplateMatchHash"],[82,"isTemplateMatchPlain"]],"subroutine":[[3,"BEGIN"],[4,"BEGIN"],[5,"BEGIN"],[6,"BEGIN"],[7,"BEGIN"],[9,"BEGIN"],[15,"getInstance"],[32,"generateTemplate"],[38,"addTemplate"],[45,"getTemplate"],[57,"getTemplates"],[68,"hasTemplate"],[74,"isTemplateMatchHash"],[82,"isTemplateMatchPlain"]],"file":"blib/lib/WebService/Hexonet/Connector/ResponseTemplateManager.pm","branch":[[15,{"text":"unless (defined $instance)"}],[47,{"text":"if ($self->hasTemplate($id)) { }"}]],"statement":[3,3,4,4,4,5,5,5,6,6,6,7,7,7,9,9,9,15,16,17,18,19,20,21,22,23,24,25,27,32,33,38,39,40,45,46,47,48,50,52,57,58,59,60,60,61,63,68,69,74,75,76,77,82,83,84],"digest":"4ef1a0e328b76c5ee107fc395385c43d","condition":[[77,{"op":"&&","right":"$h->{'DESCRIPTION'} eq $tpl2->{'DESCRIPTION'}","left":"$h->{'CODE'} eq $tpl2->{'CODE'}","type":"and_3"}]],"start":{"57":{"getTemplates":[{"condition":null,"time":null,"statement":40,"branch":2,"subroutine":10,"pod":4}]},"5":{"BEGIN":[{"time":null,"condition":null,"subroutine":2,"pod":null,"statement":5,"branch":null}]},"68":{"hasTemplate":[{"pod":5,"subroutine":11,"statement":47,"branch":2,"time":null,"condition":null}]},"4":{"BEGIN":[{"time":null,"condition":null,"subroutine":1,"pod":null,"branch":null,"statement":2}]},"7":{"BEGIN":[{"condition":null,"time":null,"statement":11,"branch":null,"pod":null,"subroutine":4}]},"82":{"isTemplateMatchPlain":[{"condition":1,"time":null,"branch":2,"statement":53,"subroutine":13,"pod":7}]},"38":{"addTemplate":[{"condition":null,"time":null,"statement":31,"branch":1,"subroutine":8,"pod":2}]},"32":{"generateTemplate":[{"time":null,"condition":null,"subroutine":7,"pod":1,"statement":29,"branch":1}]},"9":{"BEGIN":[{"time":null,"condition":null,"subroutine":5,"pod":null,"statement":14,"branch":null}]},"15":{"getInstance":[{"pod":null,"subroutine":6,"branch":null,"statement":17,"time":null,"condition":null}]},"3":{"BEGIN":[{"statement":null,"branch":null,"subroutine":null,"pod":null,"condition":null,"time":null}]},"-1":{"__COVER__":[{"condition":1,"time":null,"branch":2,"statement":56,"subroutine":14,"pod":8}]},"74":{"isTemplateMatchHash":[{"condition":null,"time":null,"statement":49,"branch":2,"subroutine":12,"pod":6}]},"6":{"BEGIN":[{"statement":8,"branch":null,"pod":null,"subroutine":3,"condition":null,"time":null}]},"45":{"getTemplate":[{"subroutine":9,"pod":3,"statement":34,"branch":1,"time":null,"condition":null}]}}} \ No newline at end of file diff --git a/cover_db/structure/50b4a4fa4fd1e78419115635e1b9b4fc b/cover_db/structure/50b4a4fa4fd1e78419115635e1b9b4fc new file mode 100644 index 0000000..5263464 --- /dev/null +++ b/cover_db/structure/50b4a4fa4fd1e78419115635e1b9b4fc @@ -0,0 +1 @@ +{"statement":[3,3,4,4,4,5,5,5,6,6,6,7,7,7,8,8,8,9,9,9,10,10,10,11,11,11,12,12,12,13,13,13,15,15,15],"digest":"50b4a4fa4fd1e78419115635e1b9b4fc","file":"blib/lib/WebService/Hexonet/Connector.pm","start":{"3":{"BEGIN":[{"condition":null,"branch":null,"pod":null,"statement":null,"subroutine":null,"time":null}]},"15":{"BEGIN":[{"subroutine":11,"time":null,"branch":null,"pod":null,"condition":null,"statement":32}]},"13":{"BEGIN":[{"branch":null,"pod":null,"condition":null,"statement":29,"subroutine":10,"time":null}]},"11":{"BEGIN":[{"time":null,"subroutine":8,"branch":null,"statement":23,"condition":null,"pod":null}]},"-1":{"__COVER__":[{"pod":null,"branch":null,"condition":null,"statement":35,"subroutine":12,"time":null}]},"5":{"BEGIN":[{"branch":null,"condition":null,"pod":null,"statement":5,"subroutine":2,"time":null}]},"4":{"BEGIN":[{"condition":null,"branch":null,"pod":null,"statement":2,"time":null,"subroutine":1}]},"12":{"BEGIN":[{"branch":null,"condition":null,"pod":null,"statement":26,"time":null,"subroutine":9}]},"10":{"BEGIN":[{"branch":null,"pod":null,"condition":null,"statement":20,"time":null,"subroutine":7}]},"8":{"BEGIN":[{"time":null,"subroutine":5,"branch":null,"condition":null,"statement":14,"pod":null}]},"6":{"BEGIN":[{"time":null,"subroutine":3,"statement":8,"branch":null,"condition":null,"pod":null}]},"7":{"BEGIN":[{"branch":null,"statement":11,"condition":null,"pod":null,"subroutine":4,"time":null}]},"9":{"BEGIN":[{"time":null,"subroutine":6,"branch":null,"condition":null,"pod":null,"statement":17}]}},"subroutine":[[3,"BEGIN"],[4,"BEGIN"],[5,"BEGIN"],[6,"BEGIN"],[7,"BEGIN"],[8,"BEGIN"],[9,"BEGIN"],[10,"BEGIN"],[11,"BEGIN"],[12,"BEGIN"],[13,"BEGIN"],[15,"BEGIN"]]} \ No newline at end of file diff --git a/cover_db/structure/af75ac8648e24cd828a69ba0feb455d7.lock b/cover_db/structure/50b4a4fa4fd1e78419115635e1b9b4fc.lock similarity index 100% rename from cover_db/structure/af75ac8648e24cd828a69ba0feb455d7.lock rename to cover_db/structure/50b4a4fa4fd1e78419115635e1b9b4fc.lock diff --git a/cover_db/structure/52f56d6774eedd84d6e806eba9cad7c3 b/cover_db/structure/52f56d6774eedd84d6e806eba9cad7c3 new file mode 100644 index 0000000..0404996 --- /dev/null +++ b/cover_db/structure/52f56d6774eedd84d6e806eba9cad7c3 @@ -0,0 +1 @@ +{"subroutine":[[3,"BEGIN"],[4,"BEGIN"],[5,"BEGIN"],[6,"BEGIN"],[7,"BEGIN"],[8,"BEGIN"],[9,"BEGIN"],[10,"BEGIN"],[11,"BEGIN"],[12,"BEGIN"],[13,"BEGIN"],[14,"BEGIN"],[15,"BEGIN"],[16,"BEGIN"],[23,"BEGIN"],[29,"new"],[46,"setDefaultLogger"],[53,"setCustomLogger"],[62,"enableDebugMode"],[69,"disableDebugMode"],[76,"getPOSTData"],[106,"getSession"],[116,"getURL"],[122,"getUserAgent"],[134,"setUserAgent"],[148,"getProxy"],[157,"setProxy"],[168,"getReferer"],[177,"setReferer"],[188,"getVersion"],[194,"saveSession"],[204,"reuseSession"],[212,"setURL"],[219,"setOTP"],[226,"setSession"],[233,"setRemoteIPAddress"],[240,"setCredentials"],[248,"setRoleCredentials"],[256,"login"],[274,"loginExtended"],[300,"logout"],[310,"request"],[351,"requestNextResponsePage"],[373,"requestAllResponsePages"],[392,"setUserView"],[399,"resetUserView"],[406,"useDefaultConnectionSetup"],[412,"useHighPerformanceConnectionSetup"],[418,"useOTESystem"],[425,"useLIVESystem"],[432,"_flattenCommand"],[454,"_autoIDNConvert"]],"condition":[[54,{"op":"and","left":"defined $logger","right":"$logger->can(\"log\")","type":"and_3"}],[78,{"left":"defined $secured","right":"$secured == 1","type":"and_3","op":"and"}],[93,{"op":"and","type":"and_3","left":"defined $secured","right":"$secured == 1"}],[139,{"left":"defined $modules","right":"length $modules > 0","type":"and_3","op":"and"}],[258,{"op":"||","type":"or_2","left":"$otp","right":"''"}]],"start":{"168":{"getReferer":[{"time":null,"subroutine":27,"condition":4,"branch":11,"statement":116,"pod":12}]},"53":{"setCustomLogger":[{"condition":null,"branch":null,"pod":2,"statement":53,"time":null,"subroutine":17}]},"8":{"BEGIN":[{"subroutine":5,"time":null,"branch":null,"condition":null,"pod":null,"statement":14}]},"106":{"getSession":[{"statement":83,"branch":6,"condition":3,"pod":6,"subroutine":21,"time":null}]},"12":{"BEGIN":[{"branch":null,"statement":26,"condition":null,"pod":null,"subroutine":9,"time":null}]},"219":{"setOTP":[{"branch":13,"condition":4,"statement":137,"pod":18,"subroutine":33,"time":null}]},"4":{"BEGIN":[{"branch":null,"condition":null,"statement":2,"pod":null,"time":null,"subroutine":1}]},"5":{"BEGIN":[{"branch":null,"pod":null,"condition":null,"statement":5,"subroutine":2,"time":null}]},"16":{"BEGIN":[{"time":null,"subroutine":13,"branch":null,"condition":null,"pod":null,"statement":38}]},"204":{"reuseSession":[{"condition":4,"branch":13,"pod":16,"statement":130,"subroutine":31,"time":null}]},"46":{"setDefaultLogger":[{"subroutine":16,"time":null,"branch":null,"pod":1,"condition":null,"statement":50}]},"240":{"setCredentials":[{"time":null,"subroutine":36,"branch":13,"condition":4,"statement":146,"pod":21}]},"351":{"requestNextResponsePage":[{"branch":24,"condition":5,"statement":215,"pod":27,"subroutine":42,"time":null}]},"134":{"setUserAgent":[{"statement":97,"branch":8,"condition":3,"pod":9,"subroutine":24,"time":null}]},"69":{"disableDebugMode":[{"condition":1,"branch":1,"statement":60,"pod":4,"time":null,"subroutine":19}]},"425":{"useLIVESystem":[{"condition":5,"branch":27,"statement":257,"pod":34,"time":null,"subroutine":49}]},"226":{"setSession":[{"time":null,"subroutine":34,"condition":4,"branch":13,"statement":140,"pod":19}]},"373":{"requestAllResponsePages":[{"branch":27,"condition":5,"statement":230,"pod":28,"subroutine":43,"time":null}]},"-1":{"__COVER__":[{"subroutine":52,"time":null,"condition":5,"branch":34,"pod":35,"statement":302}]},"23":{"BEGIN":[{"branch":null,"pod":null,"condition":null,"statement":41,"time":null,"subroutine":14}]},"233":{"setRemoteIPAddress":[{"subroutine":35,"time":null,"condition":4,"branch":13,"pod":20,"statement":143}]},"157":{"setProxy":[{"condition":4,"branch":10,"statement":111,"pod":11,"time":null,"subroutine":26}]},"76":{"getPOSTData":[{"condition":1,"branch":1,"pod":5,"statement":63,"subroutine":20,"time":null}]},"248":{"setRoleCredentials":[{"time":null,"subroutine":37,"branch":13,"pod":22,"condition":4,"statement":150}]},"7":{"BEGIN":[{"branch":null,"condition":null,"pod":null,"statement":11,"subroutine":4,"time":null}]},"29":{"new":[{"condition":null,"branch":null,"statement":44,"pod":null,"time":null,"subroutine":15}]},"256":{"login":[{"subroutine":38,"time":null,"statement":154,"branch":13,"condition":4,"pod":23}]},"310":{"request":[{"time":null,"subroutine":41,"condition":5,"branch":19,"statement":190,"pod":26}]},"13":{"BEGIN":[{"branch":null,"condition":null,"pod":null,"statement":29,"time":null,"subroutine":10}]},"399":{"resetUserView":[{"time":null,"subroutine":45,"branch":27,"statement":247,"condition":5,"pod":30}]},"392":{"setUserView":[{"subroutine":44,"time":null,"condition":5,"branch":27,"pod":29,"statement":244}]},"274":{"loginExtended":[{"condition":5,"branch":15,"pod":24,"statement":166,"time":null,"subroutine":39}]},"148":{"getProxy":[{"time":null,"subroutine":25,"branch":9,"statement":107,"condition":4,"pod":10}]},"15":{"BEGIN":[{"subroutine":12,"time":null,"branch":null,"pod":null,"condition":null,"statement":35}]},"194":{"saveSession":[{"branch":13,"condition":4,"statement":127,"pod":15,"subroutine":30,"time":null}]},"9":{"BEGIN":[{"time":null,"subroutine":6,"condition":null,"branch":null,"statement":17,"pod":null}]},"212":{"setURL":[{"branch":13,"statement":134,"condition":4,"pod":17,"time":null,"subroutine":32}]},"418":{"useOTESystem":[{"branch":27,"statement":254,"condition":5,"pod":33,"subroutine":48,"time":null}]},"122":{"getUserAgent":[{"branch":7,"condition":3,"statement":90,"pod":8,"subroutine":23,"time":null}]},"6":{"BEGIN":[{"subroutine":3,"time":null,"condition":null,"branch":null,"statement":8,"pod":null}]},"432":{"_flattenCommand":[{"branch":27,"statement":260,"condition":5,"pod":35,"subroutine":50,"time":null}]},"177":{"setReferer":[{"time":null,"subroutine":28,"condition":4,"branch":12,"pod":13,"statement":120}]},"14":{"BEGIN":[{"time":null,"subroutine":11,"statement":32,"branch":null,"condition":null,"pod":null}]},"10":{"BEGIN":[{"subroutine":7,"time":null,"pod":null,"branch":null,"condition":null,"statement":20}]},"406":{"useDefaultConnectionSetup":[{"branch":27,"statement":250,"condition":5,"pod":31,"time":null,"subroutine":46}]},"454":{"_autoIDNConvert":[{"subroutine":51,"time":null,"branch":29,"condition":5,"statement":276,"pod":35}]},"11":{"BEGIN":[{"subroutine":8,"time":null,"statement":23,"branch":null,"condition":null,"pod":null}]},"412":{"useHighPerformanceConnectionSetup":[{"subroutine":47,"time":null,"branch":27,"condition":5,"statement":252,"pod":32}]},"62":{"enableDebugMode":[{"time":null,"subroutine":18,"branch":1,"pod":3,"condition":1,"statement":57}]},"300":{"logout":[{"branch":18,"pod":25,"condition":5,"statement":185,"subroutine":40,"time":null}]},"188":{"getVersion":[{"time":null,"subroutine":29,"condition":4,"branch":13,"statement":125,"pod":14}]},"116":{"getURL":[{"condition":3,"branch":7,"pod":7,"statement":88,"time":null,"subroutine":22}]},"3":{"BEGIN":[{"subroutine":null,"time":null,"condition":null,"branch":null,"statement":null,"pod":null}]}},"digest":"52f56d6774eedd84d6e806eba9cad7c3","branch":[[54,{"text":"if (defined $logger and $logger->can(\"log\"))"}],[78,{"text":"if (defined $secured and $secured == 1)"}],[84,{"text":"if (defined $cmd->{$key})"}],[82,{"text":"if (ref $cmd eq 'HASH') { }"}],[93,{"text":"if (defined $secured and $secured == 1)"}],[97,{"text":"if (utf8::is_utf8($tmp))"}],[108,{"text":"if (length $sessid)"}],[123,{"text":"unless (length $self->{'ua'})"}],[139,{"text":"if (defined $modules and length $modules > 0)"}],[149,{"text":"if (exists $self->{'curlopts'}{'PROXY'})"}],[158,{"text":"if (length $proxy == 0) { }"}],[169,{"text":"if (exists $self->{'curlopts'}{'REFERER'})"}],[178,{"text":"if (length $referer == 0) { }"}],[263,{"text":"if (defined $col)"}],[260,{"text":"if ($rr->isSuccess)"}],[277,{"text":"unless (defined $otpc)"}],[289,{"text":"if (defined $col)"}],[286,{"text":"if ($rr->isSuccess)"}],[302,{"text":"if ($rr->isSuccess)"}],[326,{"text":"if ($referer)"}],[330,{"text":"if ($proxy)"}],[337,{"text":"if ($self->{'debugMode'})"}],[342,{"text":"if ($self->{'debugMode'})"}],[335,{"text":"if ($r->is_success) { }"}],[353,{"text":"if (defined $mycmd->{'LAST'})"}],[357,{"text":"if (defined $mycmd->{'FIRST'})"}],[363,{"text":"if ($first < $total)"}],[435,{"text":"if ($newkey ne $key)"}],[438,{"text":"if (ref $cmd->{$newkey} eq \"ARRAY\")"}],[455,{"text":"if ($cmd->{'COMMAND'} =~ /^CONVERTIDN$/imsux)"}],[459,{"text":"if (scalar @keys == 0)"}],[466,{"text":"if ($val =~ /[^[:lower:]\\d. -]/imsux)"}],[478,{"text":"if ($col)"}],[476,{"text":"if ($r->isSuccess)"}]],"pod":[[29,"new"],[46,"setDefaultLogger"],[53,"setCustomLogger"],[62,"enableDebugMode"],[69,"disableDebugMode"],[76,"getPOSTData"],[106,"getSession"],[116,"getURL"],[122,"getUserAgent"],[134,"setUserAgent"],[148,"getProxy"],[157,"setProxy"],[168,"getReferer"],[177,"setReferer"],[188,"getVersion"],[194,"saveSession"],[204,"reuseSession"],[212,"setURL"],[219,"setOTP"],[226,"setSession"],[233,"setRemoteIPAddress"],[240,"setCredentials"],[248,"setRoleCredentials"],[256,"login"],[274,"loginExtended"],[300,"logout"],[310,"request"],[351,"requestNextResponsePage"],[373,"requestAllResponsePages"],[392,"setUserView"],[399,"resetUserView"],[406,"useDefaultConnectionSetup"],[412,"useHighPerformanceConnectionSetup"],[418,"useOTESystem"],[425,"useLIVESystem"]],"statement":[3,3,4,4,4,5,5,5,6,6,6,7,7,7,8,8,8,9,9,9,10,10,10,11,11,11,12,12,12,13,13,13,14,14,14,15,15,15,16,16,16,23,23,23,29,30,38,39,40,41,46,47,48,53,54,55,57,62,63,64,69,70,71,76,77,78,79,81,82,83,83,84,85,86,87,91,93,94,96,97,98,100,101,106,107,108,109,111,116,117,122,123,124,125,126,127,129,134,135,136,137,138,139,140,140,142,143,148,149,150,152,157,158,159,161,163,168,169,170,172,177,178,179,181,183,188,189,194,198,199,204,205,206,207,212,213,214,219,220,221,226,227,228,233,234,235,240,241,242,243,248,249,250,251,256,257,258,259,260,261,262,263,264,265,267,269,274,275,276,277,278,280,281,282,282,283,285,286,287,288,289,290,291,293,295,300,301,302,303,305,310,312,314,317,318,319,321,322,323,324,325,326,327,329,330,331,334,335,336,337,338,341,342,343,346,351,352,353,354,356,357,358,360,361,362,363,364,365,366,368,373,374,375,376,376,377,379,380,381,382,383,384,385,387,392,393,394,399,400,401,406,407,412,413,418,419,420,425,426,427,432,433,433,434,435,436,438,439,439,440,441,442,443,444,446,449,454,455,456,458,458,458,459,460,462,463,464,465,466,467,468,471,476,477,478,479,480,481,481,482,483,487],"file":"blib/lib/WebService/Hexonet/Connector/APIClient.pm"} \ No newline at end of file diff --git a/cover_db/structure/c6ad7e7011e471e418ff17ff9ba346e6.lock b/cover_db/structure/52f56d6774eedd84d6e806eba9cad7c3.lock similarity index 100% rename from cover_db/structure/c6ad7e7011e471e418ff17ff9ba346e6.lock rename to cover_db/structure/52f56d6774eedd84d6e806eba9cad7c3.lock diff --git a/cover_db/structure/54a3bce575e5495a8933b15319b453fd b/cover_db/structure/54a3bce575e5495a8933b15319b453fd new file mode 100644 index 0000000..650dec3 --- /dev/null +++ b/cover_db/structure/54a3bce575e5495a8933b15319b453fd @@ -0,0 +1 @@ +{"subroutine":[[3,"BEGIN"],[4,"BEGIN"],[5,"BEGIN"],[6,"BEGIN"],[8,"BEGIN"],[12,"new"],[26,"getPOSTData"],[54,"getSession"],[60,"getSystemEntity"],[66,"setLogin"],[74,"setOTP"],[82,"setPassword"],[90,"setRemoteAddress"],[97,"setSession"],[107,"setSystemEntity"],[114,"setUser"]],"start":{"8":{"BEGIN":[{"time":null,"subroutine":4,"branch":null,"statement":11,"condition":null,"pod":null}]},"114":{"setUser":[{"time":null,"subroutine":15,"branch":7,"statement":61,"condition":null,"pod":10}]},"4":{"BEGIN":[{"subroutine":1,"time":null,"branch":null,"condition":null,"pod":null,"statement":2}]},"5":{"BEGIN":[{"subroutine":2,"time":null,"condition":null,"branch":null,"pod":null,"statement":5}]},"12":{"new":[{"pod":null,"branch":null,"condition":null,"statement":14,"subroutine":5,"time":null}]},"82":{"setPassword":[{"branch":7,"statement":45,"condition":null,"pod":6,"time":null,"subroutine":11}]},"60":{"getSystemEntity":[{"time":null,"subroutine":8,"pod":3,"branch":7,"condition":null,"statement":35}]},"74":{"setOTP":[{"branch":7,"condition":null,"pod":5,"statement":41,"time":null,"subroutine":10}]},"107":{"setSystemEntity":[{"pod":9,"branch":7,"condition":null,"statement":58,"subroutine":14,"time":null}]},"90":{"setRemoteAddress":[{"branch":7,"pod":7,"condition":null,"statement":49,"time":null,"subroutine":12}]},"66":{"setLogin":[{"time":null,"subroutine":9,"pod":4,"branch":7,"condition":null,"statement":37}]},"-1":{"__COVER__":[{"subroutine":16,"time":null,"branch":7,"statement":64,"condition":null,"pod":11}]},"54":{"getSession":[{"time":null,"subroutine":7,"pod":2,"branch":7,"condition":null,"statement":33}]},"6":{"BEGIN":[{"branch":null,"statement":8,"condition":null,"pod":null,"subroutine":3,"time":null}]},"97":{"setSession":[{"branch":7,"condition":null,"statement":52,"pod":8,"time":null,"subroutine":13}]},"3":{"BEGIN":[{"branch":null,"pod":null,"condition":null,"statement":null,"subroutine":null,"time":null}]},"26":{"getPOSTData":[{"branch":null,"condition":null,"pod":1,"statement":16,"time":null,"subroutine":6}]}},"statement":[3,3,4,4,4,5,5,5,6,6,6,8,8,8,12,13,26,27,28,29,31,32,34,35,37,38,40,41,43,44,46,47,49,54,55,60,61,66,67,68,69,74,75,76,77,82,83,84,85,90,91,92,97,98,99,100,101,102,107,108,109,114,115,116],"branch":[[28,{"text":"if (length $self->{'entity'})"}],[31,{"text":"if (length $self->{'login'})"}],[34,{"text":"if (length $self->{'otp'})"}],[37,{"text":"if (length $self->{'pw'})"}],[40,{"text":"if (length $self->{'remoteaddr'})"}],[43,{"text":"if (length $self->{'session'})"}],[46,{"text":"if (length $self->{'user'})"}]],"pod":[[12,"new"],[26,"getPOSTData"],[54,"getSession"],[60,"getSystemEntity"],[66,"setLogin"],[74,"setOTP"],[82,"setPassword"],[90,"setRemoteAddress"],[97,"setSession"],[107,"setSystemEntity"],[114,"setUser"]],"digest":"54a3bce575e5495a8933b15319b453fd","file":"blib/lib/WebService/Hexonet/Connector/SocketConfig.pm"} \ No newline at end of file diff --git a/cover_db/structure/ca269cda063bdef314df91348a8e3d9e.lock b/cover_db/structure/54a3bce575e5495a8933b15319b453fd.lock similarity index 100% rename from cover_db/structure/ca269cda063bdef314df91348a8e3d9e.lock rename to cover_db/structure/54a3bce575e5495a8933b15319b453fd.lock diff --git a/cover_db/structure/58d6ec4465b0f609ee8b04d3ee46bdb3 b/cover_db/structure/58d6ec4465b0f609ee8b04d3ee46bdb3 deleted file mode 100644 index de6e28b..0000000 --- a/cover_db/structure/58d6ec4465b0f609ee8b04d3ee46bdb3 +++ /dev/null @@ -1 +0,0 @@ -{"start":{"32":{"hasData":[{"branch":1,"statement":19,"subroutine":7,"pod":3,"condition":null,"time":null}]},"7":{"BEGIN":[{"pod":null,"subroutine":3,"statement":8,"branch":null,"time":null,"condition":null}]},"4":{"BEGIN":[{"condition":null,"time":null,"statement":2,"branch":null,"pod":null,"subroutine":1}]},"5":{"BEGIN":[{"branch":null,"statement":5,"pod":null,"subroutine":2,"condition":null,"time":null}]},"23":{"getDataByKey":[{"statement":15,"branch":null,"pod":2,"subroutine":6,"condition":null,"time":null}]},"17":{"getData":[{"time":null,"condition":null,"subroutine":5,"pod":1,"statement":13,"branch":null}]},"11":{"new":[{"subroutine":4,"pod":null,"branch":null,"statement":11,"time":null,"condition":null}]},"3":{"BEGIN":[{"pod":null,"subroutine":null,"statement":null,"branch":null,"time":null,"condition":null}]},"-1":{"__COVER__":[{"condition":null,"time":null,"branch":1,"statement":22,"pod":4,"subroutine":8}]}},"pod":[[11,"new"],[17,"getData"],[23,"getDataByKey"],[32,"hasData"]],"subroutine":[[3,"BEGIN"],[4,"BEGIN"],[5,"BEGIN"],[7,"BEGIN"],[11,"new"],[17,"getData"],[23,"getDataByKey"],[32,"hasData"]],"file":"blib/lib/WebService/Hexonet/Connector/Record.pm","branch":[[25,{"text":"if $self->hasData($key)"}]],"statement":[3,3,4,4,4,5,5,5,7,7,7,11,12,17,18,23,24,25,27,32,33,34],"digest":"58d6ec4465b0f609ee8b04d3ee46bdb3"} \ No newline at end of file diff --git a/cover_db/structure/84a88d969f5d28dcdead50371b604404 b/cover_db/structure/84a88d969f5d28dcdead50371b604404 deleted file mode 100644 index 20a0c40..0000000 --- a/cover_db/structure/84a88d969f5d28dcdead50371b604404 +++ /dev/null @@ -1 +0,0 @@ -{"digest":"84a88d969f5d28dcdead50371b604404","statement":[3,3,4,4,4,5,5,5,6,6,6,8,8,8,12,13,26,27,28,29,31,32,34,35,37,38,40,41,43,44,46,47,49,54,55,60,61,66,67,68,69,74,75,76,77,82,83,84,85,90,91,92,97,98,99,100,101,102,107,108,109,114,115,116],"file":"blib/lib/WebService/Hexonet/Connector/SocketConfig.pm","branch":[[28,{"text":"if (length $self->{'entity'})"}],[31,{"text":"if (length $self->{'login'})"}],[34,{"text":"if (length $self->{'otp'})"}],[37,{"text":"if (length $self->{'pw'})"}],[40,{"text":"if (length $self->{'remoteaddr'})"}],[43,{"text":"if (length $self->{'session'})"}],[46,{"text":"if (length $self->{'user'})"}]],"pod":[[12,"new"],[26,"getPOSTData"],[54,"getSession"],[60,"getSystemEntity"],[66,"setLogin"],[74,"setOTP"],[82,"setPassword"],[90,"setRemoteAddress"],[97,"setSession"],[107,"setSystemEntity"],[114,"setUser"]],"subroutine":[[3,"BEGIN"],[4,"BEGIN"],[5,"BEGIN"],[6,"BEGIN"],[8,"BEGIN"],[12,"new"],[26,"getPOSTData"],[54,"getSession"],[60,"getSystemEntity"],[66,"setLogin"],[74,"setOTP"],[82,"setPassword"],[90,"setRemoteAddress"],[97,"setSession"],[107,"setSystemEntity"],[114,"setUser"]],"start":{"114":{"setUser":[{"statement":61,"branch":7,"subroutine":15,"pod":10,"condition":null,"time":null}]},"74":{"setOTP":[{"condition":null,"time":null,"branch":7,"statement":41,"subroutine":10,"pod":5}]},"6":{"BEGIN":[{"branch":null,"statement":8,"subroutine":3,"pod":null,"condition":null,"time":null}]},"60":{"getSystemEntity":[{"pod":3,"subroutine":8,"branch":7,"statement":35,"time":null,"condition":null}]},"-1":{"__COVER__":[{"time":null,"condition":null,"pod":11,"subroutine":16,"branch":7,"statement":64}]},"3":{"BEGIN":[{"condition":null,"time":null,"statement":null,"branch":null,"pod":null,"subroutine":null}]},"82":{"setPassword":[{"condition":null,"time":null,"branch":7,"statement":45,"subroutine":11,"pod":6}]},"66":{"setLogin":[{"condition":null,"time":null,"statement":37,"branch":7,"pod":4,"subroutine":9}]},"5":{"BEGIN":[{"condition":null,"time":null,"statement":5,"branch":null,"pod":null,"subroutine":2}]},"26":{"getPOSTData":[{"branch":null,"statement":16,"subroutine":6,"pod":1,"condition":null,"time":null}]},"107":{"setSystemEntity":[{"time":null,"condition":null,"pod":9,"subroutine":14,"branch":7,"statement":58}]},"97":{"setSession":[{"condition":null,"time":null,"branch":7,"statement":52,"pod":8,"subroutine":13}]},"8":{"BEGIN":[{"pod":null,"subroutine":4,"branch":null,"statement":11,"time":null,"condition":null}]},"54":{"getSession":[{"condition":null,"time":null,"branch":7,"statement":33,"pod":2,"subroutine":7}]},"4":{"BEGIN":[{"condition":null,"time":null,"branch":null,"statement":2,"subroutine":1,"pod":null}]},"12":{"new":[{"condition":null,"time":null,"branch":null,"statement":14,"pod":null,"subroutine":5}]},"90":{"setRemoteAddress":[{"pod":7,"subroutine":12,"branch":7,"statement":49,"time":null,"condition":null}]}}} \ No newline at end of file diff --git a/cover_db/structure/947dd9f16a5b7381d8db9097f98991af b/cover_db/structure/947dd9f16a5b7381d8db9097f98991af new file mode 100644 index 0000000..53c15fb --- /dev/null +++ b/cover_db/structure/947dd9f16a5b7381d8db9097f98991af @@ -0,0 +1 @@ +{"subroutine":[[3,"BEGIN"],[4,"BEGIN"],[5,"BEGIN"],[7,"BEGIN"],[11,"new"],[21,"getKey"],[27,"getData"],[33,"getDataByIndex"],[42,"hasDataIndex"]],"start":{"-1":{"__COVER__":[{"branch":1,"condition":null,"pod":5,"statement":29,"subroutine":9,"time":null}]},"4":{"BEGIN":[{"subroutine":1,"time":null,"branch":null,"condition":null,"pod":null,"statement":2}]},"5":{"BEGIN":[{"subroutine":2,"time":null,"condition":null,"branch":null,"pod":null,"statement":5}]},"11":{"new":[{"time":null,"subroutine":4,"statement":11,"branch":null,"condition":null,"pod":null}]},"7":{"BEGIN":[{"branch":null,"condition":null,"pod":null,"statement":8,"subroutine":3,"time":null}]},"21":{"getKey":[{"subroutine":5,"time":null,"pod":1,"branch":null,"condition":null,"statement":18}]},"3":{"BEGIN":[{"subroutine":null,"time":null,"condition":null,"branch":null,"statement":null,"pod":null}]},"27":{"getData":[{"condition":null,"branch":null,"statement":20,"pod":2,"subroutine":6,"time":null}]},"33":{"getDataByIndex":[{"branch":null,"pod":3,"condition":null,"statement":22,"time":null,"subroutine":7}]},"42":{"hasDataIndex":[{"condition":null,"branch":1,"statement":26,"pod":4,"time":null,"subroutine":8}]}},"file":"blib/lib/WebService/Hexonet/Connector/Column.pm","digest":"947dd9f16a5b7381d8db9097f98991af","pod":[[11,"new"],[21,"getKey"],[27,"getData"],[33,"getDataByIndex"],[42,"hasDataIndex"]],"branch":[[35,{"text":"if $self->hasDataIndex($idx)"}]],"statement":[3,3,4,4,4,5,5,5,7,7,7,11,12,13,14,14,15,16,21,22,27,28,33,34,35,37,42,43,44]} \ No newline at end of file diff --git a/cover_db/structure/de351d4e7270d7378bf18fcd163b88c7.lock b/cover_db/structure/947dd9f16a5b7381d8db9097f98991af.lock similarity index 100% rename from cover_db/structure/de351d4e7270d7378bf18fcd163b88c7.lock rename to cover_db/structure/947dd9f16a5b7381d8db9097f98991af.lock diff --git a/cover_db/structure/980cbae1a854f2ac49186d1e3095da25 b/cover_db/structure/980cbae1a854f2ac49186d1e3095da25 deleted file mode 100644 index 030f774..0000000 --- a/cover_db/structure/980cbae1a854f2ac49186d1e3095da25 +++ /dev/null @@ -1 +0,0 @@ -{"digest":"980cbae1a854f2ac49186d1e3095da25","condition":[[17,{"type":"or_3","op":"or","left":"not defined $raw","right":"length $raw == 0"}],[22,{"right":"defined $self->{'hash'}{'CODE'}","left":"defined $self->{'hash'}{'DESCRIPTION'}","op":"and","type":"and_3"}]],"pod":[[15,"new"],[31,"getCode"],[37,"getDescription"],[43,"getPlain"],[49,"getQueuetime"],[58,"getHash"],[64,"getRuntime"],[73,"isError"],[80,"isSuccess"],[87,"isTmpError"],[94,"isPending"]],"subroutine":[[3,"BEGIN"],[4,"BEGIN"],[5,"BEGIN"],[6,"BEGIN"],[7,"BEGIN"],[9,"BEGIN"],[15,"new"],[31,"getCode"],[37,"getDescription"],[43,"getPlain"],[49,"getQueuetime"],[58,"getHash"],[64,"getRuntime"],[73,"isError"],[80,"isSuccess"],[87,"isTmpError"],[94,"isPending"]],"statement":[3,3,4,4,4,5,5,5,6,6,6,7,7,7,9,9,9,15,16,17,18,20,21,22,23,24,26,31,32,37,38,43,44,49,50,51,53,58,59,64,65,66,68,73,74,75,80,81,82,87,88,89,94,95,96,98],"branch":[[17,{"text":"if (not defined $raw or length $raw == 0)"}],[22,{"text":"unless (defined $self->{'hash'}{'DESCRIPTION'} and defined $self->{'hash'}{'CODE'})"}],[50,{"text":"if (defined $self->{'hash'}{'QUEUETIME'})"}],[65,{"text":"if (defined $self->{'hash'}{'RUNTIME'})"}],[95,{"text":"if (defined $self->{'hash'}{'PENDING'})"}]],"file":"blib/lib/WebService/Hexonet/Connector/ResponseTemplate.pm","start":{"43":{"getPlain":[{"statement":31,"branch":2,"subroutine":9,"pod":3,"condition":2,"time":null}]},"31":{"getCode":[{"statement":27,"branch":2,"subroutine":7,"pod":1,"condition":2,"time":null}]},"94":{"isPending":[{"condition":2,"time":null,"statement":52,"branch":4,"subroutine":16,"pod":10}]},"80":{"isSuccess":[{"condition":2,"time":null,"branch":4,"statement":46,"subroutine":14,"pod":8}]},"15":{"new":[{"condition":null,"time":null,"statement":17,"branch":null,"subroutine":6,"pod":null}]},"37":{"getDescription":[{"time":null,"condition":2,"subroutine":8,"pod":2,"statement":29,"branch":2}]},"64":{"getRuntime":[{"time":null,"condition":2,"pod":6,"subroutine":12,"statement":39,"branch":3}]},"4":{"BEGIN":[{"statement":2,"branch":null,"subroutine":1,"pod":null,"condition":null,"time":null}]},"7":{"BEGIN":[{"branch":null,"statement":11,"pod":null,"subroutine":4,"condition":null,"time":null}]},"3":{"BEGIN":[{"statement":null,"branch":null,"pod":null,"subroutine":null,"condition":null,"time":null}]},"-1":{"__COVER__":[{"time":null,"condition":2,"pod":11,"subroutine":17,"statement":56,"branch":5}]},"58":{"getHash":[{"condition":2,"time":null,"branch":3,"statement":37,"subroutine":11,"pod":5}]},"6":{"BEGIN":[{"time":null,"condition":null,"subroutine":3,"pod":null,"branch":null,"statement":8}]},"5":{"BEGIN":[{"condition":null,"time":null,"branch":null,"statement":5,"pod":null,"subroutine":2}]},"73":{"isError":[{"pod":7,"subroutine":13,"branch":4,"statement":43,"time":null,"condition":2}]},"87":{"isTmpError":[{"condition":2,"time":null,"branch":4,"statement":49,"pod":9,"subroutine":15}]},"9":{"BEGIN":[{"pod":null,"subroutine":5,"branch":null,"statement":14,"time":null,"condition":null}]},"49":{"getQueuetime":[{"pod":4,"subroutine":10,"statement":33,"branch":2,"time":null,"condition":2}]}}} \ No newline at end of file diff --git a/cover_db/structure/a1a74cc6dd1f8834201b84f13cb28e43 b/cover_db/structure/a1a74cc6dd1f8834201b84f13cb28e43 new file mode 100644 index 0000000..4238183 --- /dev/null +++ b/cover_db/structure/a1a74cc6dd1f8834201b84f13cb28e43 @@ -0,0 +1 @@ +{"condition":[[77,{"op":"&&","right":"$h->{'DESCRIPTION'} eq $tpl2->{'DESCRIPTION'}","left":"$h->{'CODE'} eq $tpl2->{'CODE'}","type":"and_3"}]],"subroutine":[[3,"BEGIN"],[4,"BEGIN"],[5,"BEGIN"],[6,"BEGIN"],[7,"BEGIN"],[9,"BEGIN"],[15,"getInstance"],[32,"generateTemplate"],[38,"addTemplate"],[45,"getTemplate"],[57,"getTemplates"],[68,"hasTemplate"],[74,"isTemplateMatchHash"],[82,"isTemplateMatchPlain"]],"file":"blib/lib/WebService/Hexonet/Connector/ResponseTemplateManager.pm","pod":[[15,"getInstance"],[32,"generateTemplate"],[38,"addTemplate"],[45,"getTemplate"],[57,"getTemplates"],[68,"hasTemplate"],[74,"isTemplateMatchHash"],[82,"isTemplateMatchPlain"]],"branch":[[15,{"text":"unless (defined $instance)"}],[47,{"text":"if ($self->hasTemplate($id)) { }"}]],"statement":[3,3,4,4,4,5,5,5,6,6,6,7,7,7,9,9,9,15,16,17,18,19,20,21,22,23,24,25,27,32,33,38,39,40,45,46,47,48,50,52,57,58,59,60,60,61,63,68,69,74,75,76,77,82,83,84],"digest":"a1a74cc6dd1f8834201b84f13cb28e43","start":{"74":{"isTemplateMatchHash":[{"time":null,"subroutine":12,"branch":2,"condition":null,"statement":49,"pod":6}]},"15":{"getInstance":[{"time":null,"subroutine":6,"branch":null,"condition":null,"statement":17,"pod":null}]},"3":{"BEGIN":[{"time":null,"subroutine":null,"condition":null,"branch":null,"statement":null,"pod":null}]},"45":{"getTemplate":[{"time":null,"subroutine":9,"branch":1,"statement":34,"condition":null,"pod":3}]},"82":{"isTemplateMatchPlain":[{"time":null,"subroutine":13,"condition":1,"branch":2,"statement":53,"pod":7}]},"32":{"generateTemplate":[{"time":null,"subroutine":7,"branch":1,"condition":null,"statement":29,"pod":1}]},"57":{"getTemplates":[{"branch":2,"statement":40,"condition":null,"pod":4,"time":null,"subroutine":10}]},"38":{"addTemplate":[{"branch":1,"statement":31,"condition":null,"pod":2,"subroutine":8,"time":null}]},"5":{"BEGIN":[{"condition":null,"branch":null,"pod":null,"statement":5,"time":null,"subroutine":2}]},"4":{"BEGIN":[{"subroutine":1,"time":null,"condition":null,"branch":null,"statement":2,"pod":null}]},"-1":{"__COVER__":[{"branch":2,"statement":56,"condition":1,"pod":8,"subroutine":14,"time":null}]},"68":{"hasTemplate":[{"branch":2,"pod":5,"condition":null,"statement":47,"subroutine":11,"time":null}]},"7":{"BEGIN":[{"time":null,"subroutine":4,"branch":null,"statement":11,"condition":null,"pod":null}]},"6":{"BEGIN":[{"pod":null,"branch":null,"condition":null,"statement":8,"time":null,"subroutine":3}]},"9":{"BEGIN":[{"branch":null,"condition":null,"statement":14,"pod":null,"time":null,"subroutine":5}]}}} \ No newline at end of file diff --git a/cover_db/structure/a1a74cc6dd1f8834201b84f13cb28e43.lock b/cover_db/structure/a1a74cc6dd1f8834201b84f13cb28e43.lock new file mode 100644 index 0000000..e69de29 diff --git a/cover_db/structure/af75ac8648e24cd828a69ba0feb455d7 b/cover_db/structure/af75ac8648e24cd828a69ba0feb455d7 deleted file mode 100644 index 6230ba7..0000000 --- a/cover_db/structure/af75ac8648e24cd828a69ba0feb455d7 +++ /dev/null @@ -1 +0,0 @@ -{"digest":"af75ac8648e24cd828a69ba0feb455d7","condition":[[59,{"type":"and_3","left":"defined $secured","right":"$secured == 1","op":"and"}],[74,{"type":"and_3","op":"and","left":"defined $secured","right":"$secured == 1"}],[120,{"left":"defined $modules","right":"length $modules > 0","op":"and","type":"and_3"}],[239,{"right":"''","left":"$otp","op":"||","type":"or_2"}]],"subroutine":[[3,"BEGIN"],[4,"BEGIN"],[5,"BEGIN"],[6,"BEGIN"],[7,"BEGIN"],[8,"BEGIN"],[9,"BEGIN"],[10,"BEGIN"],[11,"BEGIN"],[12,"BEGIN"],[13,"BEGIN"],[14,"BEGIN"],[15,"BEGIN"],[22,"BEGIN"],[28,"new"],[43,"enableDebugMode"],[50,"disableDebugMode"],[57,"getPOSTData"],[87,"getSession"],[97,"getURL"],[103,"getUserAgent"],[115,"setUserAgent"],[129,"getProxy"],[138,"setProxy"],[149,"getReferer"],[158,"setReferer"],[169,"getVersion"],[175,"saveSession"],[185,"reuseSession"],[193,"setURL"],[200,"setOTP"],[207,"setSession"],[214,"setRemoteIPAddress"],[221,"setCredentials"],[229,"setRoleCredentials"],[237,"login"],[255,"loginExtended"],[281,"logout"],[291,"request"],[337,"requestNextResponsePage"],[359,"requestAllResponsePages"],[378,"setUserView"],[385,"resetUserView"],[392,"useDefaultConnectionSetup"],[398,"useHighPerformanceConnectionSetup"],[404,"useOTESystem"],[411,"useLIVESystem"],[418,"_flattenCommand"],[440,"_autoIDNConvert"]],"pod":[[28,"new"],[43,"enableDebugMode"],[50,"disableDebugMode"],[57,"getPOSTData"],[87,"getSession"],[97,"getURL"],[103,"getUserAgent"],[115,"setUserAgent"],[129,"getProxy"],[138,"setProxy"],[149,"getReferer"],[158,"setReferer"],[169,"getVersion"],[175,"saveSession"],[185,"reuseSession"],[193,"setURL"],[200,"setOTP"],[207,"setSession"],[214,"setRemoteIPAddress"],[221,"setCredentials"],[229,"setRoleCredentials"],[237,"login"],[255,"loginExtended"],[281,"logout"],[291,"request"],[337,"requestNextResponsePage"],[359,"requestAllResponsePages"],[378,"setUserView"],[385,"resetUserView"],[392,"useDefaultConnectionSetup"],[398,"useHighPerformanceConnectionSetup"],[404,"useOTESystem"],[411,"useLIVESystem"]],"statement":[3,3,4,4,4,5,5,5,6,6,6,7,7,7,8,8,8,9,9,9,10,10,10,11,11,11,12,12,12,13,13,13,14,14,14,15,15,15,22,22,22,28,29,36,37,38,43,44,45,50,51,52,57,58,59,60,62,63,64,64,65,66,67,68,72,74,75,77,78,79,81,82,87,88,89,90,92,97,98,103,104,105,106,107,108,110,115,116,117,118,119,120,121,121,123,124,129,130,131,133,138,139,140,142,144,149,150,151,153,158,159,160,162,164,169,170,175,179,180,185,186,187,188,193,194,195,200,201,202,207,208,209,214,215,216,221,222,223,224,229,230,231,232,237,238,239,240,241,242,243,244,245,246,248,250,255,256,257,258,259,261,262,263,263,264,266,267,268,269,270,271,272,274,276,281,282,283,284,286,291,293,295,298,299,300,302,303,304,305,306,307,308,310,311,312,315,316,317,318,319,319,320,320,321,321,324,325,326,327,327,328,328,329,329,332,337,338,339,340,342,343,344,346,347,348,349,350,351,352,354,359,360,361,362,362,363,365,366,367,368,369,370,371,373,378,379,380,385,386,387,392,393,398,399,404,405,406,411,412,413,418,419,419,420,421,422,424,425,425,426,427,428,429,430,432,435,440,441,442,444,444,444,445,446,448,449,450,451,452,453,454,457,462,463,464,465,466,467,467,468,469,473],"file":"blib/lib/WebService/Hexonet/Connector/APIClient.pm","branch":[[59,{"text":"if (defined $secured and $secured == 1)"}],[65,{"text":"if (defined $cmd->{$key})"}],[63,{"text":"if (ref $cmd eq 'HASH') { }"}],[74,{"text":"if (defined $secured and $secured == 1)"}],[78,{"text":"if (utf8::is_utf8($tmp))"}],[89,{"text":"if (length $sessid)"}],[104,{"text":"unless (length $self->{'ua'})"}],[120,{"text":"if (defined $modules and length $modules > 0)"}],[130,{"text":"if (exists $self->{'curlopts'}{'PROXY'})"}],[139,{"text":"if (length $proxy == 0) { }"}],[150,{"text":"if (exists $self->{'curlopts'}{'REFERER'})"}],[159,{"text":"if (length $referer == 0) { }"}],[244,{"text":"if (defined $col)"}],[241,{"text":"if ($rr->isSuccess)"}],[258,{"text":"unless (defined $otpc)"}],[270,{"text":"if (defined $col)"}],[267,{"text":"if ($rr->isSuccess)"}],[283,{"text":"if ($rr->isSuccess)"}],[307,{"text":"if ($referer)"}],[311,{"text":"if ($proxy)"}],[318,{"text":"if ($self->{'debugMode'})"}],[326,{"text":"if ($self->{'debugMode'})"}],[316,{"text":"if ($r->is_success) { }"}],[339,{"text":"if (defined $mycmd->{'LAST'})"}],[343,{"text":"if (defined $mycmd->{'FIRST'})"}],[349,{"text":"if ($first < $total)"}],[421,{"text":"if ($newkey ne $key)"}],[424,{"text":"if (ref $cmd->{$newkey} eq \"ARRAY\")"}],[441,{"text":"if ($cmd->{'COMMAND'} =~ /^CONVERTIDN$/imsux)"}],[445,{"text":"if (scalar @keys == 0)"}],[452,{"text":"if ($val =~ /[^[:lower:]\\d. -]/imsux)"}],[464,{"text":"if ($col)"}],[462,{"text":"if ($r->isSuccess)"}]],"start":{"-1":{"__COVER__":[{"statement":302,"branch":33,"subroutine":49,"pod":33,"condition":4,"time":null}]},"392":{"useDefaultConnectionSetup":[{"time":null,"condition":4,"pod":29,"subroutine":43,"statement":250,"branch":26}]},"404":{"useOTESystem":[{"condition":4,"time":null,"statement":254,"branch":26,"pod":31,"subroutine":45}]},"175":{"saveSession":[{"time":null,"condition":3,"pod":13,"subroutine":27,"statement":116,"branch":12}]},"6":{"BEGIN":[{"condition":null,"time":null,"statement":8,"branch":null,"subroutine":3,"pod":null}]},"411":{"useLIVESystem":[{"condition":4,"time":null,"branch":26,"statement":257,"pod":32,"subroutine":46}]},"115":{"setUserAgent":[{"pod":7,"subroutine":21,"branch":7,"statement":86,"time":null,"condition":2}]},"103":{"getUserAgent":[{"time":null,"condition":2,"pod":6,"subroutine":20,"statement":79,"branch":6}]},"158":{"setReferer":[{"subroutine":25,"pod":11,"statement":109,"branch":11,"time":null,"condition":3}]},"5":{"BEGIN":[{"time":null,"condition":null,"subroutine":2,"pod":null,"statement":5,"branch":null}]},"440":{"_autoIDNConvert":[{"statement":276,"branch":28,"pod":33,"subroutine":48,"condition":4,"time":null}]},"221":{"setCredentials":[{"subroutine":33,"pod":19,"statement":135,"branch":12,"time":null,"condition":3}]},"418":{"_flattenCommand":[{"time":null,"condition":4,"pod":33,"subroutine":47,"branch":26,"statement":260}]},"8":{"BEGIN":[{"statement":14,"branch":null,"pod":null,"subroutine":5,"condition":null,"time":null}]},"97":{"getURL":[{"time":null,"condition":2,"pod":5,"subroutine":19,"branch":6,"statement":77}]},"169":{"getVersion":[{"branch":12,"statement":114,"pod":12,"subroutine":26,"condition":3,"time":null}]},"337":{"requestNextResponsePage":[{"subroutine":39,"pod":25,"statement":215,"branch":23,"time":null,"condition":4}]},"398":{"useHighPerformanceConnectionSetup":[{"condition":4,"time":null,"statement":252,"branch":26,"pod":30,"subroutine":44}]},"129":{"getProxy":[{"time":null,"condition":3,"pod":8,"subroutine":22,"statement":96,"branch":8}]},"229":{"setRoleCredentials":[{"time":null,"condition":3,"pod":20,"subroutine":34,"statement":139,"branch":12}]},"12":{"BEGIN":[{"statement":26,"branch":null,"pod":null,"subroutine":9,"condition":null,"time":null}]},"22":{"BEGIN":[{"subroutine":13,"pod":null,"statement":38,"branch":null,"time":null,"condition":null}]},"7":{"BEGIN":[{"statement":11,"branch":null,"subroutine":4,"pod":null,"condition":null,"time":null}]},"4":{"BEGIN":[{"condition":null,"time":null,"statement":2,"branch":null,"subroutine":1,"pod":null}]},"15":{"BEGIN":[{"time":null,"condition":null,"subroutine":12,"pod":null,"branch":null,"statement":35}]},"3":{"BEGIN":[{"condition":null,"time":null,"branch":null,"statement":null,"subroutine":null,"pod":null}]},"28":{"new":[{"time":null,"condition":null,"pod":null,"subroutine":14,"branch":null,"statement":41}]},"281":{"logout":[{"branch":17,"statement":174,"pod":23,"subroutine":37,"condition":4,"time":null}]},"378":{"setUserView":[{"pod":27,"subroutine":41,"statement":244,"branch":26,"time":null,"condition":4}]},"11":{"BEGIN":[{"branch":null,"statement":23,"subroutine":8,"pod":null,"condition":null,"time":null}]},"14":{"BEGIN":[{"condition":null,"time":null,"branch":null,"statement":32,"pod":null,"subroutine":11}]},"385":{"resetUserView":[{"subroutine":42,"pod":28,"branch":26,"statement":247,"time":null,"condition":4}]},"291":{"request":[{"pod":24,"subroutine":38,"statement":179,"branch":18,"time":null,"condition":4}]},"214":{"setRemoteIPAddress":[{"pod":18,"subroutine":32,"statement":132,"branch":12,"time":null,"condition":3}]},"10":{"BEGIN":[{"pod":null,"subroutine":7,"statement":20,"branch":null,"time":null,"condition":null}]},"9":{"BEGIN":[{"condition":null,"time":null,"statement":17,"branch":null,"subroutine":6,"pod":null}]},"185":{"reuseSession":[{"branch":12,"statement":119,"pod":14,"subroutine":28,"condition":3,"time":null}]},"87":{"getSession":[{"pod":4,"subroutine":18,"branch":5,"statement":72,"time":null,"condition":2}]},"359":{"requestAllResponsePages":[{"condition":4,"time":null,"statement":230,"branch":26,"subroutine":40,"pod":26}]},"43":{"enableDebugMode":[{"time":null,"condition":null,"subroutine":15,"pod":1,"statement":46,"branch":null}]},"193":{"setURL":[{"subroutine":29,"pod":15,"statement":123,"branch":12,"time":null,"condition":3}]},"237":{"login":[{"pod":21,"subroutine":35,"branch":12,"statement":143,"time":null,"condition":3}]},"200":{"setOTP":[{"condition":3,"time":null,"statement":126,"branch":12,"subroutine":30,"pod":16}]},"207":{"setSession":[{"condition":3,"time":null,"statement":129,"branch":12,"pod":17,"subroutine":31}]},"13":{"BEGIN":[{"condition":null,"time":null,"statement":29,"branch":null,"subroutine":10,"pod":null}]},"57":{"getPOSTData":[{"time":null,"condition":null,"subroutine":17,"pod":3,"statement":52,"branch":null}]},"50":{"disableDebugMode":[{"pod":2,"subroutine":16,"branch":null,"statement":49,"time":null,"condition":null}]},"255":{"loginExtended":[{"pod":22,"subroutine":36,"branch":14,"statement":155,"time":null,"condition":4}]},"138":{"setProxy":[{"time":null,"condition":3,"subroutine":23,"pod":9,"branch":9,"statement":100}]},"149":{"getReferer":[{"condition":3,"time":null,"branch":10,"statement":105,"subroutine":24,"pod":10}]}}} \ No newline at end of file diff --git a/cover_db/structure/c6ad7e7011e471e418ff17ff9ba346e6 b/cover_db/structure/c6ad7e7011e471e418ff17ff9ba346e6 deleted file mode 100644 index 1254783..0000000 --- a/cover_db/structure/c6ad7e7011e471e418ff17ff9ba346e6 +++ /dev/null @@ -1 +0,0 @@ -{"digest":"c6ad7e7011e471e418ff17ff9ba346e6","branch":[[20,{"text":"unless (defined $hash{'PROPERTY'})"}],[25,{"text":"if (defined $hash{'PROPERTY'}{$prop}) { }"}],[19,{"text":"if ($attr =~ /^property\\[([^\\]]*)\\]/imsux) { }"}],[15,{"text":"if (/^([^\\=]*[^\\t\\= ])[\\t ]*=[\\t ]*(.+)/msux)"}],[42,{"text":"if (defined $h->{'PROPERTY'})"}],[52,{"text":"if (defined $h->{'CODE'})"}],[55,{"text":"if (defined $h->{'DESCRIPTION'})"}],[58,{"text":"if (defined $h->{'QUEUETIME'})"}],[61,{"text":"if (defined $h->{'RUNTIME'})"}]],"file":"blib/lib/WebService/Hexonet/Connector/ResponseParser.pm","statement":[3,3,4,4,4,5,5,5,7,7,7,11,12,13,14,15,16,17,18,19,20,21,23,24,25,26,26,28,31,35,40,41,42,43,44,44,45,46,46,47,48,52,53,55,56,58,59,61,62,64,65],"start":{"5":{"BEGIN":[{"subroutine":2,"pod":null,"branch":null,"statement":5,"time":null,"condition":null}]},"-1":{"__COVER__":[{"pod":2,"subroutine":6,"branch":9,"statement":51,"time":null,"condition":null}]},"40":{"serialize":[{"branch":4,"statement":30,"pod":1,"subroutine":5,"condition":null,"time":null}]},"3":{"BEGIN":[{"condition":null,"time":null,"statement":null,"branch":null,"pod":null,"subroutine":null}]},"7":{"BEGIN":[{"statement":8,"branch":null,"subroutine":3,"pod":null,"condition":null,"time":null}]},"4":{"BEGIN":[{"subroutine":1,"pod":null,"branch":null,"statement":2,"time":null,"condition":null}]},"11":{"parse":[{"branch":null,"statement":11,"subroutine":4,"pod":null,"condition":null,"time":null}]}},"pod":[[11,"parse"],[40,"serialize"]],"subroutine":[[3,"BEGIN"],[4,"BEGIN"],[5,"BEGIN"],[7,"BEGIN"],[11,"parse"],[40,"serialize"]]} \ No newline at end of file diff --git a/cover_db/structure/ca269cda063bdef314df91348a8e3d9e b/cover_db/structure/ca269cda063bdef314df91348a8e3d9e deleted file mode 100644 index 1f1d83e..0000000 --- a/cover_db/structure/ca269cda063bdef314df91348a8e3d9e +++ /dev/null @@ -1 +0,0 @@ -{"start":{"214":{"getNextPageNumber":[{"pod":15,"subroutine":26,"branch":18,"statement":147,"time":null,"condition":1}]},"310":{"getRecordsLimitation":[{"time":null,"condition":3,"pod":24,"subroutine":35,"statement":192,"branch":27}]},"93":{"__ANON__":[{"pod":4,"subroutine":14,"statement":89,"branch":8,"time":null,"condition":null}]},"10":{"BEGIN":[{"statement":20,"branch":null,"subroutine":7,"pod":null,"condition":null,"time":null}]},"9":{"BEGIN":[{"condition":null,"time":null,"statement":17,"branch":null,"subroutine":6,"pod":null}]},"101":{"getColumnIndex":[{"statement":89,"branch":8,"subroutine":15,"pod":4,"condition":null,"time":null}]},"14":{"BEGIN":[{"branch":null,"statement":26,"pod":null,"subroutine":9,"condition":null,"time":null}]},"11":{"BEGIN":[{"condition":null,"time":null,"branch":null,"statement":23,"pod":null,"subroutine":8}]},"3":{"BEGIN":[{"time":null,"condition":null,"pod":null,"subroutine":null,"branch":null,"statement":null}]},"157":{"getFirstRecordIndex":[{"time":null,"condition":1,"subroutine":22,"pod":11,"branch":11,"statement":117}]},"351":{"rewindRecordList":[{"condition":3,"time":null,"branch":33,"statement":215,"pod":27,"subroutine":38}]},"255":{"getPreviousPageNumber":[{"condition":2,"time":null,"statement":164,"branch":21,"pod":18,"subroutine":29}]},"138":{"getCurrentPageNumber":[{"statement":108,"branch":9,"subroutine":20,"pod":9,"condition":null,"time":null}]},"76":{"addColumn":[{"subroutine":11,"pod":1,"branch":7,"statement":72,"time":null,"condition":null}]},"121":{"getCommand":[{"condition":null,"time":null,"statement":99,"branch":9,"pod":7,"subroutine":18}]},"149":{"getCurrentRecord":[{"time":null,"condition":1,"pod":10,"subroutine":21,"statement":114,"branch":10}]},"109":{"getColumnKeys":[{"time":null,"condition":null,"pod":5,"subroutine":16,"statement":93,"branch":9}]},"297":{"getRecordsTotalCount":[{"condition":3,"time":null,"branch":25,"statement":185,"pod":23,"subroutine":34}]},"238":{"getPagination":[{"time":null,"condition":2,"pod":17,"subroutine":28,"branch":21,"statement":161}]},"189":{"getListHash":[{"subroutine":24,"pod":13,"branch":17,"statement":137,"time":null,"condition":1}]},"84":{"addRecord":[{"condition":null,"time":null,"statement":78,"branch":7,"pod":2,"subroutine":12}]},"359":{"__ANON__":[{"condition":3,"time":null,"branch":33,"statement":223,"subroutine":40,"pod":28}]},"380":{"_hasPreviousRecord":[{"statement":232,"branch":33,"pod":28,"subroutine":43,"condition":5,"time":null}]},"18":{"new":[{"statement":29,"branch":null,"subroutine":10,"pod":null,"condition":null,"time":null}]},"5":{"BEGIN":[{"time":null,"condition":null,"pod":null,"subroutine":2,"statement":5,"branch":null}]},"127":{"getCommandPlain":[{"subroutine":19,"pod":8,"branch":9,"statement":101,"time":null,"condition":null}]},"323":{"hasNextPage":[{"statement":199,"branch":29,"subroutine":36,"pod":25,"condition":3,"time":null}]},"290":{"getRecordsCount":[{"statement":181,"branch":25,"pod":22,"subroutine":33,"condition":3,"time":null}]},"275":{"getRecord":[{"time":null,"condition":2,"subroutine":31,"pod":20,"statement":174,"branch":24}]},"6":{"BEGIN":[{"time":null,"condition":null,"pod":null,"subroutine":3,"statement":8,"branch":null}]},"227":{"getNumberOfPages":[{"subroutine":27,"pod":16,"statement":155,"branch":20,"time":null,"condition":1}]},"372":{"_hasNextRecord":[{"condition":4,"time":null,"branch":33,"statement":227,"subroutine":42,"pod":28}]},"115":{"getColumns":[{"statement":96,"branch":9,"subroutine":17,"pod":6,"condition":null,"time":null}]},"-1":{"__COVER__":[{"statement":234,"branch":33,"pod":28,"subroutine":44,"condition":6,"time":null}]},"4":{"BEGIN":[{"statement":2,"branch":null,"pod":null,"subroutine":1,"condition":null,"time":null}]},"7":{"BEGIN":[{"condition":null,"time":null,"branch":null,"statement":11,"subroutine":4,"pod":null}]},"206":{"getNextRecord":[{"time":null,"condition":1,"pod":14,"subroutine":25,"branch":17,"statement":144}]},"284":{"getRecords":[{"condition":3,"time":null,"statement":178,"branch":25,"subroutine":32,"pod":21}]},"365":{"_hasCurrentRecord":[{"pod":28,"subroutine":41,"branch":33,"statement":223,"time":null,"condition":3}]},"172":{"getLastRecordIndex":[{"time":null,"condition":1,"pod":12,"subroutine":23,"branch":14,"statement":127}]},"337":{"hasPreviousPage":[{"condition":3,"time":null,"statement":207,"branch":31,"subroutine":37,"pod":26}]},"267":{"getPreviousRecord":[{"statement":171,"branch":23,"pod":19,"subroutine":30,"condition":2,"time":null}]},"91":{"getColumn":[{"time":null,"condition":null,"subroutine":13,"pod":3,"branch":7,"statement":82}]},"8":{"BEGIN":[{"condition":null,"time":null,"statement":14,"branch":null,"subroutine":5,"pod":null}]},"358":{"_hasColumn":[{"subroutine":39,"pod":28,"branch":33,"statement":218,"time":null,"condition":3}]}},"statement":[3,3,4,4,4,5,5,5,6,6,6,7,7,7,8,8,8,9,9,9,10,10,10,11,11,11,14,14,14,18,19,21,22,23,25,25,26,27,28,30,31,33,34,35,37,39,40,41,42,44,45,46,46,47,48,49,49,50,51,52,53,56,57,58,59,60,61,62,63,64,68,71,76,77,77,78,78,79,84,85,85,86,91,92,93,93,93,94,96,101,102,103,104,109,110,110,115,116,116,121,122,127,128,129,129,130,131,133,138,139,140,141,142,144,149,150,152,157,158,159,160,161,162,165,165,166,167,172,173,174,175,176,177,180,181,182,184,189,190,191,191,192,194,201,206,207,209,214,215,216,217,219,220,221,222,227,228,229,230,231,233,238,239,250,255,256,257,258,260,261,262,267,268,270,275,276,277,279,284,285,285,290,291,291,292,297,298,299,300,301,302,305,310,311,312,313,314,315,318,323,324,325,326,328,329,330,332,337,338,339,340,342,343,344,346,351,352,353,358,359,359,359,360,365,366,366,367,372,373,374,374,375,380,381],"file":"blib/lib/WebService/Hexonet/Connector/Response.pm","branch":[[22,{"text":"unless (defined $ph)"}],[21,{"text":"if ($self->{'raw'} =~ /[{][[:upper:]_]+[}]/gmsux)"}],[35,{"text":"if (defined $self->{'command'}{'PASSWORD'})"}],[52,{"text":"if ($len > $count)"}],[63,{"text":"if (defined $v)"}],[61,{"text":"if (defined $col)"}],[45,{"text":"if (defined $h->{'PROPERTY'})"}],[92,{"text":"if ($self->_hasColumn($key))"}],[103,{"text":"if defined $col"}],[141,{"text":"if (defined $first and $limit > 0)"}],[150,{"text":"if $self->_hasCurrentRecord"}],[161,{"text":"if (defined $f)"}],[159,{"text":"if (defined $col)"}],[166,{"text":"if $len > 0"}],[176,{"text":"if (defined $l)"}],[174,{"text":"if (defined $col)"}],[181,{"text":"if ($len > 0)"}],[207,{"text":"if $self->_hasNextRecord"}],[216,{"text":"if ($cp < 0)"}],[221,{"text":"if $page <= $pages"}],[230,{"text":"if ($t > 0 and $limit > 0)"}],[257,{"text":"if ($cp < 0)"}],[261,{"text":"if $np > 0"}],[268,{"text":"if $self->_hasPreviousRecord"}],[276,{"text":"if ($idx >= 0 and $self->getRecordsCount > $idx)"}],[301,{"text":"if (defined $t)"}],[299,{"text":"if (defined $col)"}],[314,{"text":"if (defined $l)"}],[312,{"text":"if (defined $col)"}],[325,{"text":"if ($cp < 0)"}],[329,{"text":"if ($np <= $self->getNumberOfPages)"}],[339,{"text":"if ($cp < 0)"}],[343,{"text":"if ($pp > 0)"}]],"subroutine":[[3,"BEGIN"],[4,"BEGIN"],[5,"BEGIN"],[6,"BEGIN"],[7,"BEGIN"],[8,"BEGIN"],[9,"BEGIN"],[10,"BEGIN"],[11,"BEGIN"],[14,"BEGIN"],[18,"new"],[76,"addColumn"],[84,"addRecord"],[91,"getColumn"],[93,"__ANON__"],[101,"getColumnIndex"],[109,"getColumnKeys"],[115,"getColumns"],[121,"getCommand"],[127,"getCommandPlain"],[138,"getCurrentPageNumber"],[149,"getCurrentRecord"],[157,"getFirstRecordIndex"],[172,"getLastRecordIndex"],[189,"getListHash"],[206,"getNextRecord"],[214,"getNextPageNumber"],[227,"getNumberOfPages"],[238,"getPagination"],[255,"getPreviousPageNumber"],[267,"getPreviousRecord"],[275,"getRecord"],[284,"getRecords"],[290,"getRecordsCount"],[297,"getRecordsTotalCount"],[310,"getRecordsLimitation"],[323,"hasNextPage"],[337,"hasPreviousPage"],[351,"rewindRecordList"],[358,"_hasColumn"],[359,"__ANON__"],[365,"_hasCurrentRecord"],[372,"_hasNextRecord"],[380,"_hasPreviousRecord"]],"pod":[[18,"new"],[76,"addColumn"],[84,"addRecord"],[91,"getColumn"],[101,"getColumnIndex"],[109,"getColumnKeys"],[115,"getColumns"],[121,"getCommand"],[127,"getCommandPlain"],[138,"getCurrentPageNumber"],[149,"getCurrentRecord"],[157,"getFirstRecordIndex"],[172,"getLastRecordIndex"],[189,"getListHash"],[206,"getNextRecord"],[214,"getNextPageNumber"],[227,"getNumberOfPages"],[238,"getPagination"],[255,"getPreviousPageNumber"],[267,"getPreviousRecord"],[275,"getRecord"],[284,"getRecords"],[290,"getRecordsCount"],[297,"getRecordsTotalCount"],[310,"getRecordsLimitation"],[323,"hasNextPage"],[337,"hasPreviousPage"],[351,"rewindRecordList"]],"condition":[[141,{"right":"$limit > 0","left":"defined $first","op":"and","type":"and_3"}],[230,{"type":"and_3","right":"$limit > 0","left":"$t > 0","op":"and"}],[276,{"op":"and","left":"$idx >= 0","right":"$self->getRecordsCount > $idx","type":"and_3"}],[367,{"right":"$self->{'recordIndex'} < $len","left":"$len > 0 && $self->{'recordIndex'} >= 0","op":"&&","type":"and_3"}],[375,{"type":"and_3","right":"$next < $len","left":"$self->_hasCurrentRecord","op":"&&"}],[381,{"op":"&&","right":"$self->_hasCurrentRecord","left":"$self->{'recordIndex'} > 0","type":"and_3"}]],"digest":"ca269cda063bdef314df91348a8e3d9e"} \ No newline at end of file diff --git a/cover_db/structure/de351d4e7270d7378bf18fcd163b88c7 b/cover_db/structure/de351d4e7270d7378bf18fcd163b88c7 deleted file mode 100644 index 272141e..0000000 --- a/cover_db/structure/de351d4e7270d7378bf18fcd163b88c7 +++ /dev/null @@ -1 +0,0 @@ -{"statement":[3,3,4,4,4,5,5,5,7,7,7,11,12,13,14,14,15,16,21,22,27,28,33,34,35,37,42,43,44],"file":"blib/lib/WebService/Hexonet/Connector/Column.pm","branch":[[35,{"text":"if $self->hasDataIndex($idx)"}]],"pod":[[11,"new"],[21,"getKey"],[27,"getData"],[33,"getDataByIndex"],[42,"hasDataIndex"]],"subroutine":[[3,"BEGIN"],[4,"BEGIN"],[5,"BEGIN"],[7,"BEGIN"],[11,"new"],[21,"getKey"],[27,"getData"],[33,"getDataByIndex"],[42,"hasDataIndex"]],"start":{"27":{"getData":[{"statement":20,"branch":null,"pod":2,"subroutine":6,"condition":null,"time":null}]},"21":{"getKey":[{"branch":null,"statement":18,"subroutine":5,"pod":1,"condition":null,"time":null}]},"-1":{"__COVER__":[{"time":null,"condition":null,"subroutine":9,"pod":5,"branch":1,"statement":29}]},"3":{"BEGIN":[{"condition":null,"time":null,"statement":null,"branch":null,"subroutine":null,"pod":null}]},"33":{"getDataByIndex":[{"condition":null,"time":null,"branch":null,"statement":22,"pod":3,"subroutine":7}]},"11":{"new":[{"pod":null,"subroutine":4,"statement":11,"branch":null,"time":null,"condition":null}]},"42":{"hasDataIndex":[{"subroutine":8,"pod":4,"statement":26,"branch":1,"time":null,"condition":null}]},"5":{"BEGIN":[{"branch":null,"statement":5,"subroutine":2,"pod":null,"condition":null,"time":null}]},"7":{"BEGIN":[{"condition":null,"time":null,"branch":null,"statement":8,"pod":null,"subroutine":3}]},"4":{"BEGIN":[{"condition":null,"time":null,"statement":2,"branch":null,"pod":null,"subroutine":1}]}},"digest":"de351d4e7270d7378bf18fcd163b88c7"} \ No newline at end of file diff --git a/docs/apiclient.html b/docs/apiclient.html index ea29039..8fb95bd 100644 --- a/docs/apiclient.html +++ b/docs/apiclient.html @@ -5,7 +5,7 @@ + + + + +

NAME

+ +

WebService::Hexonet::Connector::Logger - Library to cover API request and response data output / logging.

+ +

SYNOPSIS

+ +

This module is internally used by the WebService::Hexonet::Connector::APIClient module. +To be used in the way:

+ +
    # create a new instance by
+    $logger = WebService::Hexonet::Connector::Logger->new();
+
+    # Log API Request / Response Data
+    # * specify request data in $data in string format
+    # * specify an instance of WebService::Hexonet::Connector::Response in $r.    
+    # * specify an error message as string in $error (optional parameter)
+    $logger->log( $data, $r, $error );
+    #  vs.
+    $logger->log( $data, $r );    
+ +

DESCRIPTION

+ +

HEXONET Backend API communication will be printed to STDOUT/STDERR by default. This mechanism can be overwritten by a CustomLogger implementation. Use method setCustomLogger of WebService::Hexonet::Connector::APIClient for this. Important is that a custom implementation provides method `log` and supports all the arguments explained.

+ +

Methods

+ +
+
new
+ +
+

Returns a new WebService::Hexonet::Connector::Logger object.

+ +
log($post, $r, $error)
+ +
+

Log API Request / Response Data Specify request data in $data in string format Specify an instance of WebService::Hexonet::Connector::Response in $r. Specify an error message as string in $error. Optional. Thought for forwarding HTTP errors.

+
+
+ +

LICENSE AND COPYRIGHT

+ +

This program is licensed under the MIT License.

+ +

AUTHOR

+ +

HEXONET GmbH

+ + + + diff --git a/docs/record.html b/docs/record.html index 21ce316..3c28f78 100644 --- a/docs/record.html +++ b/docs/record.html @@ -5,7 +5,7 @@