File Coverage

blib/lib/Net/Gnats/Command/FDSC.pm
Criterion Covered Total %
statement 33 35 94.2
branch 14 18 77.7
condition 2 3 66.6
subroutine 8 8 100.0
pod 2 3 66.6
total 59 67 88.0


line stmt bran cond sub pod time code
1             package Net::Gnats::Command::FDSC;
2 40     40   197 use parent 'Net::Gnats::Command';
  40         75  
  40         208  
3 40     40   2173 use strictures;
  40         71  
  40         219  
4             BEGIN {
5 40     40   8970 $Net::Gnats::Command::FDSC::VERSION = '0.22';
6             }
7 40     40   238 use vars qw($VERSION);
  40         72  
  40         1539  
8              
9 40     40   201 use Net::Gnats::Constants qw(CODE_INFORMATION CODE_INVALID_FIELD_NAME);
  40         73  
  40         14193  
10              
11             =head1 NAME
12              
13             Net::Gnats::Command::FDSC
14              
15             =head1 DESCRIPTION
16              
17             Returns a human-readable description of the listed field(s). The possible responses are:
18              
19             Like the FVLD command, the standard continuation protocol will be
20             used if multiple fields were specified with the command.
21              
22             =head1 PROTOCOL
23              
24             FDSC [fields...]
25              
26             =head1 RESPONSES
27              
28             350 (CODE_INFORMATION)
29              
30             The normal response; the supplied text is the field description.
31              
32             410 (CODE_INVALID_FIELD_NAME)
33              
34             The specified field does not exist.
35              
36             =cut
37              
38             my $c = 'FDSC';
39              
40             sub new {
41 41     41 1 135 my ( $class, %options ) = @_;
42 41         101 my $self = bless \%options, $class;
43 41         221 $self->{requests_multi} = 0;
44 41 100       178 return $self if not defined $self->{fields};
45 40 50       166 if (ref $self->{fields} eq 'ARRAY') {
46 40 100       75 $self->{requests_multi} = 1 if scalar @{ $self->{fields} } > 1;
  40         185  
47             }
48             else {
49 0         0 $self->{fields} = [ $self->{fields} ];
50             }
51 40         156 return $self;
52             }
53              
54             sub as_string {
55 88     88 1 174 my ($self) = @_;
56 88 100       307 return undef if not defined $self->{fields};
57 86 50       359 return undef if ref $self->{fields} ne 'ARRAY';
58 86 50       127 return undef if scalar @{ $self->{fields} } == 0;
  86         302  
59 86         199 return $c . ' ' . join ( ' ', @{$self->{fields}} );
  86         610  
60             }
61              
62             # this command can take multiple fields, each getting their own response.
63             # so, we check that 'everything' is okay by looking at the parent response.
64             sub is_ok {
65 3     3 0 6 my $self = shift;
66 3 100       10 return 0 if not defined $self->response;
67 2 100 66     9 if ( $self->{requests_multi} == 0 and
68             $self->response->code == CODE_INFORMATION) {
69 1         5 return 1;
70             }
71 1 50       3 return 1 if $self->response->code == CODE_INFORMATION;
72 0           return 0;
73             }
74              
75             1;