File Coverage

blib/lib/Archive/Har/Entry/Timings.pm
Criterion Covered Total %
statement 12 128 9.3
branch 0 66 0.0
condition 0 18 0.0
subroutine 4 16 25.0
pod 9 10 90.0
total 25 238 10.5


line stmt bran cond sub pod time code
1             package Archive::Har::Entry::Timings;
2              
3 1     1   4 use warnings;
  1         2  
  1         26  
4 1     1   25 use strict;
  1         1  
  1         15  
5 1     1   3 use Carp();
  1         1  
  1         9  
6 1     1   3 use Archive::Har::Entry::Cache::Request();
  1         1  
  1         827  
7              
8             our $VERSION = '0.21';
9              
10 0     0     sub _DOES_NOT_APPLY { return -1 }
11              
12             sub new {
13 0     0 1   my ( $class, $params ) = @_;
14 0           my $self = {};
15 0           bless $self, $class;
16 0 0         if ( defined $params ) {
17 0 0         if ( defined $params->{blocked} ) {
18 0           $self->blocked( $params->{blocked} );
19             }
20 0 0         if ( defined $params->{dns} ) {
21 0           $self->dns( $params->{dns} );
22             }
23 0 0         if ( defined $params->{connect} ) {
24 0           $self->connect( $params->{connect} );
25             }
26 0           $self->send( $params->{send} );
27 0           $self->wait( $params->{wait} );
28 0           $self->receive( $params->{receive} );
29 0 0         if ( defined $params->{ssl} ) {
30 0           $self->ssl( $params->{ssl} );
31             }
32 0 0         if ( defined $params->{comment} ) {
33 0           $self->comment( $params->{comment} );
34             }
35 0           foreach my $key ( sort { $a cmp $b } keys %{$params} ) {
  0            
  0            
36 0 0         if ( $key =~ /^_[[:alnum:]]+$/smx ) { # private fields
37 0           $self->$key( $params->{$key} );
38             }
39             }
40             }
41 0           return $self;
42             }
43              
44             sub blocked {
45 0     0 1   my ( $self, $new ) = @_;
46 0           my $old = $self->{blocked};
47 0 0         if ( @_ > 1 ) {
48 0 0         if ( defined $new ) {
49 0           $self->{blocked} = $new + 0;
50             }
51             else {
52 0           $self->{blocked} = _DOES_NOT_APPLY();
53             }
54             }
55 0 0 0       if ( ( defined $old ) && ( $old eq _DOES_NOT_APPLY() ) ) {
56 0           return;
57             }
58             else {
59 0           return $old;
60             }
61             }
62              
63             sub dns {
64 0     0 1   my ( $self, $new ) = @_;
65 0           my $old = $self->{dns};
66 0 0         if ( @_ > 1 ) {
67 0 0         if ( defined $new ) {
68 0           $self->{dns} = $new + 0;
69             }
70             else {
71 0           $self->{dns} = _DOES_NOT_APPLY();
72             }
73             }
74 0 0 0       if ( ( defined $old ) && ( $old eq _DOES_NOT_APPLY() ) ) {
75 0           return;
76             }
77             else {
78 0           return $old;
79             }
80             }
81              
82             sub connect {
83 0     0 1   my ( $self, $new ) = @_;
84 0           my $old = $self->{connect};
85 0 0         if ( @_ > 1 ) {
86 0 0         if ( defined $new ) {
87 0           $self->{connect} = $new + 0;
88             }
89             else {
90 0           $self->{connect} = _DOES_NOT_APPLY();
91             }
92             }
93 0 0 0       if ( ( defined $old ) && ( $old eq _DOES_NOT_APPLY() ) ) {
94 0           return;
95             }
96             else {
97 0           return $old;
98             }
99             }
100              
101             sub send {
102 0     0 1   my ( $self, $new ) = @_;
103 0           my $old = $self->{send};
104 0 0         if ( @_ > 1 ) {
105 0           $self->{send} = $new;
106             }
107 0           return $old;
108             }
109              
110             sub wait {
111 0     0 1   my ( $self, $new ) = @_;
112 0           my $old = $self->{wait};
113 0 0         if ( @_ > 1 ) {
114 0           $self->{wait} = $new;
115             }
116 0           return $old;
117             }
118              
119             sub receive {
120 0     0 1   my ( $self, $new ) = @_;
121 0           my $old = $self->{receive};
122 0 0         if ( @_ > 1 ) {
123 0           $self->{receive} = $new;
124             }
125 0           return $old;
126             }
127              
128             sub ssl {
129 0     0 1   my ( $self, $new ) = @_;
130 0           my $old = $self->{ssl};
131 0 0         if ( @_ > 1 ) {
132 0 0         if ( defined $new ) {
133 0           $self->{ssl} = $new;
134             }
135             else {
136 0           $self->{ssl} = _DOES_NOT_APPLY();
137             }
138             }
139 0 0 0       if ( ( defined $old ) && ( $old eq _DOES_NOT_APPLY() ) ) {
140 0           return;
141             }
142             else {
143 0           return $old;
144             }
145             }
146              
147             sub comment {
148 0     0 1   my ( $self, $new ) = @_;
149 0           my $old = $self->{comment};
150 0 0         if ( @_ > 1 ) {
151 0           $self->{comment} = $new;
152             }
153 0           return $old;
154             }
155              
156             sub AUTOLOAD {
157 0     0     my ( $self, $new ) = @_;
158              
159 0           my $name = $Archive::Har::Entry::Timings::AUTOLOAD;
160 0           $name =~ s/.*://smx; # strip fully-qualified portion
161              
162 0           my $old;
163 0 0         if ( $name =~ /^_[[:alnum:]]+$/smx ) { # private fields
    0          
164 0           $old = $self->{$name};
165 0 0         if ( @_ > 1 ) {
166 0           $self->{$name} = $new;
167             }
168             }
169             elsif ( $name eq 'DESTROY' ) {
170             }
171             else {
172 0           Carp::croak(
173             "$name is not specified in the HAR 1.2 spec and does not start with an underscore"
174             );
175             }
176 0           return $old;
177             }
178              
179             sub TO_JSON {
180 0     0 0   my ($self) = @_;
181 0           my $json = {};
182 0 0         if ( defined $self->blocked() ) {
183 0           $json->{blocked} = $self->blocked() + 0;
184             }
185             else {
186 0           $json->{blocked} = _DOES_NOT_APPLY();
187             }
188 0 0         if ( defined $self->dns() ) {
189 0           $json->{dns} = $self->dns() + 0;
190             }
191             else {
192 0           $json->{dns} = _DOES_NOT_APPLY();
193             }
194 0 0         if ( defined $self->connect() ) {
195 0           $json->{connect} = $self->connect() + 0;
196             }
197             else {
198 0           $json->{connect} = _DOES_NOT_APPLY();
199             }
200 0   0       $json->{send} = ( $self->send() || 0 ) + 0;
201 0   0       $json->{wait} = ( $self->wait() || 0 ) + 0;
202 0   0       $json->{receive} = ( $self->receive() || 0 ) + 0;
203 0 0         if ( defined $self->ssl() ) {
204 0           $json->{ssl} = $self->ssl() + 0;
205             }
206             else {
207 0           $json->{ssl} = _DOES_NOT_APPLY();
208             }
209 0 0         if ( defined $self->comment() ) {
210 0           $json->{comment} = $self->comment();
211             }
212 0           foreach my $key ( sort { $a cmp $b } keys %{$self} ) {
  0            
  0            
213 0 0         next if ( !defined $self->{$key} );
214 0 0         if ( $key =~ /^_[[:alnum:]]+$/smx ) { # private fields
215 0           $json->{$key} = $self->{$key};
216             }
217             }
218              
219 0           return $json;
220             }
221              
222             1;
223             __END__