| 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__ |