File Coverage

blib/lib/WebService/Hexonet/Connector/ResponseParser.pm
Criterion Covered Total %
statement 51 51 100.0
branch 18 18 100.0
condition n/a
subroutine 6 6 100.0
pod 2 2 100.0
total 77 77 100.0


line stmt bran cond sub pod time code
1             package WebService::Hexonet::Connector::ResponseParser;
2              
3 1     1   17 use 5.026_000;
  1         3  
4 1     1   25 use strict;
  1         2  
  1         24  
5 1     1   4 use warnings;
  1         3  
  1         45  
6              
7 1     1   7 use version 0.9917; our $VERSION = version->declare('v2.9.2');
  1         15  
  1         5  
8              
9              
10             sub parse {
11 111     111 1 228 my $response = shift;
12 111         215 my %hash = ();
13 111         624 $response =~ s/\r\n/\n/gmsx;
14 111         1163 foreach ( split /\n/msx, $response ) {
15 4075 100       15214 if (/^([^\=]*[^\t\= ])[\t ]*=[\t ]*(.+)/msx) {
16 3822         8244 my $attr = $1;
17 3822         6613 my $value = $2;
18 3822         15518 $value =~ s/[\t ]*$//msx;
19 3822 100       10806 if ( $attr =~ /^property\[([^\]]*)\]/imsx ) {
20 3491 100       7421 if ( !defined $hash{PROPERTY} ) {
21 49         149 $hash{PROPERTY} = {};
22             }
23 3491         6940 my $prop = uc $1;
24 3491         5957 $prop =~ s/\s//ogmsx;
25 3491 100       6837 if ( defined $hash{PROPERTY}{$prop} ) {
26 3235         4834 push @{ $hash{PROPERTY}{$prop} }, $value;
  3235         8908  
27             } else {
28 256         804 $hash{PROPERTY}{$prop} = [ $value ];
29             }
30             } else {
31 331         973 $hash{ uc $attr } = $value;
32             }
33             }
34             }
35 111         664 return \%hash;
36             }
37              
38              
39             sub serialize {
40 6     6 1 53 my $h = shift;
41 6         13 my $plain = '[RESPONSE]';
42 6 100       18 if ( defined $h->{PROPERTY} ) {
43 3         8 my $props = $h->{PROPERTY};
44 3         6 foreach my $key ( sort keys %{$props} ) {
  3         17  
45 5         11 my $i = 0;
46 5         8 foreach my $val ( @{ $props->{$key} } ) {
  5         16  
47 11         32 $plain .= "\r\nPROPERTY[${key}][${i}]=${val}";
48 11         24 $i++;
49             }
50             }
51             }
52 6 100       20 if ( defined $h->{CODE} ) {
53 5         14 $plain .= "\r\nCODE=" . $h->{CODE};
54             }
55 6 100       18 if ( defined $h->{DESCRIPTION} ) {
56 5         13 $plain .= "\r\nDESCRIPTION=" . $h->{DESCRIPTION};
57             }
58 6 100       26 if ( defined $h->{QUEUETIME} ) {
59 1         4 $plain .= "\r\nQUEUETIME=" . $h->{QUEUETIME};
60             }
61 6 100       17 if ( defined $h->{RUNTIME} ) {
62 1         3 $plain .= "\r\nRUNTIME=" . $h->{RUNTIME};
63             }
64 6         12 $plain .= "\r\nEOF\r\n";
65 6         21 return $plain;
66             }
67              
68             1;
69              
70             __END__