File Coverage

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


line stmt bran cond sub pod time code
1             package Archive::Har::Entry::Timings;
2              
3 1     1   6 use warnings;
  1         1  
  1         29  
4 1     1   37 use strict;
  1         2  
  1         21  
5 1     1   4 use Carp();
  1         2  
  1         20  
6 1     1   5 use Archive::Har::Entry::Cache::Request();
  1         1  
  1         1389  
7              
8             our $VERSION = 0.19;
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
164 0           $old = $self->{$name};
165 0 0         if ( @_ > 1 ) {
166 0           $self->{$name} = $new;
167             }
168             }
169             else {
170 0           Carp::croak(
171             "$name is not specified in the HAR 1.2 spec and does not start with an underscore"
172             );
173             }
174 0           return $old;
175             }
176              
177             sub TO_JSON {
178 0     0 0   my ($self) = @_;
179 0           my $json = {};
180 0 0         if ( defined $self->blocked() ) {
181 0           $json->{blocked} = $self->blocked() + 0;
182             }
183             else {
184 0           $json->{blocked} = _DOES_NOT_APPLY();
185             }
186 0 0         if ( defined $self->dns() ) {
187 0           $json->{dns} = $self->dns() + 0;
188             }
189             else {
190 0           $json->{dns} = _DOES_NOT_APPLY();
191             }
192 0 0         if ( defined $self->connect() ) {
193 0           $json->{connect} = $self->connect() + 0;
194             }
195             else {
196 0           $json->{connect} = _DOES_NOT_APPLY();
197             }
198 0   0       $json->{send} = ( $self->send() || 0 ) + 0;
199 0   0       $json->{wait} = ( $self->wait() || 0 ) + 0;
200 0   0       $json->{receive} = ( $self->receive() || 0 ) + 0;
201 0 0         if ( defined $self->ssl() ) {
202 0           $json->{ssl} = $self->ssl() + 0;
203             }
204             else {
205 0           $json->{ssl} = _DOES_NOT_APPLY();
206             }
207 0 0         if ( defined $self->comment() ) {
208 0           $json->{comment} = $self->comment();
209             }
210 0           foreach my $key ( sort { $a cmp $b } keys %{$self} ) {
  0            
  0            
211 0 0         next if ( !defined $self->{$key} );
212 0 0         if ( $key =~ /^_[[:alnum:]]+$/smx ) { # private fields
213 0           $json->{$key} = $self->{$key};
214             }
215             }
216              
217 0           return $json;
218             }
219              
220             1;
221             __END__