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   16 use 5.026_000;
  1         4  
4 1     1   5 use strict;
  1         2  
  1         19  
5 1     1   4 use warnings;
  1         2  
  1         39  
6              
7 1     1   6 use version 0.9917; our $VERSION = version->declare('v2.9.0');
  1         18  
  1         6  
8              
9              
10             sub parse {
11 113     113 1 274 my $response = shift;
12 113         223 my %hash = ();
13 113         641 $response =~ s/\r\n/\n/gmsx;
14 113         1184 foreach ( split /\n/msx, $response ) {
15 3972 100       14853 if (/^([^\=]*[^\t\= ])[\t ]*=[\t ]*(.+)/msx) {
16 3711         7973 my $attr = $1;
17 3711         6412 my $value = $2;
18 3711         14845 $value =~ s/[\t ]*$//msx;
19 3711 100       10577 if ( $attr =~ /^property\[([^\]]*)\]/imsx ) {
20 3370 100       7196 if ( !defined $hash{PROPERTY} ) {
21 50         140 $hash{PROPERTY} = {};
22             }
23 3370         6621 my $prop = uc $1;
24 3370         5837 $prop =~ s/\s//ogmsx;
25 3370 100       6571 if ( defined $hash{PROPERTY}{$prop} ) {
26 3113         4342 push @{ $hash{PROPERTY}{$prop} }, $value;
  3113         9159  
27             } else {
28 257         846 $hash{PROPERTY}{$prop} = [ $value ];
29             }
30             } else {
31 341         1114 $hash{ uc $attr } = $value;
32             }
33             }
34             }
35 113         715 return \%hash;
36             }
37              
38              
39             sub serialize {
40 6     6 1 52 my $h = shift;
41 6         13 my $plain = '[RESPONSE]';
42 6 100       17 if ( defined $h->{PROPERTY} ) {
43 3         8 my $props = $h->{PROPERTY};
44 3         5 foreach my $key ( sort keys %{$props} ) {
  3         18  
45 5         8 my $i = 0;
46 5         9 foreach my $val ( @{ $props->{$key} } ) {
  5         11  
47 11         28 $plain .= "\r\nPROPERTY[${key}][${i}]=${val}";
48 11         24 $i++;
49             }
50             }
51             }
52 6 100       37 if ( defined $h->{CODE} ) {
53 5         21 $plain .= "\r\nCODE=" . $h->{CODE};
54             }
55 6 100       17 if ( defined $h->{DESCRIPTION} ) {
56 5         25 $plain .= "\r\nDESCRIPTION=" . $h->{DESCRIPTION};
57             }
58 6 100       25 if ( defined $h->{QUEUETIME} ) {
59 1         5 $plain .= "\r\nQUEUETIME=" . $h->{QUEUETIME};
60             }
61 6 100       20 if ( defined $h->{RUNTIME} ) {
62 1         3 $plain .= "\r\nRUNTIME=" . $h->{RUNTIME};
63             }
64 6         14 $plain .= "\r\nEOF\r\n";
65 6         21 return $plain;
66             }
67              
68             1;
69              
70             __END__