File Coverage

blib/lib/AWS/Lambda/Quick/Processor.pm
Criterion Covered Total %
statement 15 29 51.7
branch 0 4 0.0
condition n/a
subroutine 5 7 71.4
pod 0 2 0.0
total 20 42 47.6


line stmt bran cond sub pod time code
1             package AWS::Lambda::Quick::Processor;
2 1     1   283806 use Mo qw( default required );
  1         491  
  1         6  
3              
4             our $VERSION = '1.0000';
5              
6 1     1   2099 use AWS::Lambda::Quick::CreateZip ();
  1         4  
  1         26  
7 1     1   526 use AWS::Lambda::Quick::Upload ();
  1         4  
  1         32  
8 1     1   8 use File::Temp qw( tempdir );
  1         3  
  1         85  
9 1     1   7 use Path::Tiny qw( path );
  1         3  
  1         335  
10              
11             has name => required => 1;
12             has src_filename => required => 1;
13              
14             has 'description';
15             has 'extra_files';
16             has 'memory_size';
17             has 'region';
18             has 'stage_name';
19             has 'timeout';
20              
21             has _tempdir => sub {
22             return tempdir( CLEANUP => 1 );
23             };
24             has zip_filename => sub {
25             return path( shift->_tempdir, 'handler.zip' );
26             };
27              
28             sub selfkv {
29 0     0 0   my $self = shift;
30 0           my @computed_args;
31 0           for my $key (@_) {
32 0           my $val = $self->$key;
33 0 0         push @computed_args, $key => $val if defined $val;
34             }
35 0           return @computed_args;
36             }
37              
38             sub process {
39 0     0 0   my $self = shift;
40              
41 0           AWS::Lambda::Quick::CreateZip->new(
42             $self->selfkv(
43             qw(
44             extra_files
45             src_filename
46             zip_filename
47             )
48             ),
49             )->create_zip;
50              
51 0           my $uploader = AWS::Lambda::Quick::Upload->new(
52             $self->selfkv(
53             qw(
54             description
55             memory_size
56             name
57             region
58             stage_name
59             timeout
60             zip_filename
61             )
62             ),
63             );
64              
65 0 0         if ( $ENV{AWS_LAMBDA_QUICK_UPDATE_CODE_ONLY} ) {
66 0           $uploader->just_update_function_code;
67 0           return q{};
68             }
69              
70 0           $uploader->upload;
71 0           return $uploader->api_url;
72             }
73              
74             1;
75              
76             __END__
77              
78             =head1 NAME
79              
80             AWS::Lambda::Quick::Processor - main object class for AWS::Lambda::Quick
81              
82             =head1 DESCRIPTION
83              
84             No user servicable parts. See L<AWS::Lambda::Quick> for usage.
85              
86             =head1 AUTHOR
87              
88             Written by Mark Fowler B<mark@twoshortplanks.com>
89              
90             Copyright Mark Fowler 2019.
91              
92             This program is free software; you can redistribute it and/or modify
93             it under the same terms as Perl itself.
94              
95             =head1 SEE ALSO
96              
97             L<AWS::Lambda::Quick>
98              
99             =cut