File Coverage

blib/lib/LINE/Bot/API/Event/Message.pm
Criterion Covered Total %
statement 61 71 85.9
branch 1 2 50.0
condition n/a
subroutine 35 43 81.4
pod 0 11 0.0
total 97 127 76.3


line stmt bran cond sub pod time code
1             package LINE::Bot::API::Event::Message;
2 47     47   322 use strict;
  47         101  
  47         1405  
3 47     47   238 use warnings;
  47         123  
  47         1266  
4 47     47   803 use parent 'LINE::Bot::API::Event::Base';
  47         383  
  47         364  
5              
6 47     47   2102 use Carp 'carp';
  47         90  
  47         14313  
7             our @CARP_NOT = qw( LINE::Bot::API::Event::Message LINE::Bot::API::Event LINE::Bot::API);
8              
9             my %TYPE2CLASS = (
10             text => 'LINE::Bot::API::Event::Message::Text',
11             image => 'LINE::Bot::API::Event::Message::Image',
12             video => 'LINE::Bot::API::Event::Message::Video',
13             audio => 'LINE::Bot::API::Event::Message::Audio',
14             location => 'LINE::Bot::API::Event::Message::Location',
15             sticker => 'LINE::Bot::API::Event::Message::Sticker',
16             file => 'LINE::Bot::API::Event::Message::File',
17             );
18              
19             sub new {
20 19     19 0 45 my($class, %args) = @_;
21              
22 19         30 my $type = $args{message}{type};
23 19         28 my $message_class = $TYPE2CLASS{$type};
24 19 50       30 unless ($message_class) {
25 0         0 carp 'Unsupported message type: ' . $type;
26 0         0 $message_class = $class;
27             }
28              
29 19         111 bless { %args }, $message_class;
30             }
31              
32 1     1 0 4 sub is_message_event { 1 }
33              
34 1     1 0 5 sub message_id { $_[0]->{message}{id} }
35              
36 11     11 0 6036 sub message_type { $_[0]->{message}{type} }
37              
38 0     0 0 0 sub is_text_message { 0 }
39 0     0 0 0 sub is_image_message { 0 }
40 0     0 0 0 sub is_video_message { 0 }
41 0     0 0 0 sub is_audio_message { 0 }
42 0     0 0 0 sub is_location_message { 0 }
43 0     0 0 0 sub is_sticker_message { 0 }
44 0     0 0 0 sub is_file_message { 0 }
45              
46             package LINE::Bot::API::Event::Message::Text {
47 47     47   387 use parent 'LINE::Bot::API::Event::Message';
  47         113  
  47         292  
48              
49 1     1   4 sub is_text_message { 1 }
50              
51 1     1   5 sub text { $_[0]->{message}{text} }
52 1     1   9 sub emojis { $_[0]->{message}{emojis} }
53             }
54              
55             package LINE::Bot::API::Event::Message::Image {
56 47     47   6641 use parent 'LINE::Bot::API::Event::Message';
  47         108  
  47         223  
57              
58 1     1   4 sub is_image_message { 1 }
59              
60 3     3   15 sub content_provider { $_[0]->{message}{contentProvider} }
61             }
62              
63             package LINE::Bot::API::Event::Message::Video {
64 47     47   5650 use parent 'LINE::Bot::API::Event::Message';
  47         123  
  47         227  
65              
66 1     1   4 sub is_video_message { 1 }
67              
68 3     3   20 sub content_provider { $_[0]->{message}{contentProvider} }
69             }
70              
71             package LINE::Bot::API::Event::Message::Audio {
72 47     47   5281 use parent 'LINE::Bot::API::Event::Message';
  47         118  
  47         249  
73              
74 1     1   4 sub is_audio_message { 1 }
75              
76 3     3   13 sub content_provider { $_[0]->{message}{contentProvider} }
77             }
78              
79             package LINE::Bot::API::Event::Message::Location {
80 47     47   5158 use parent 'LINE::Bot::API::Event::Message';
  47         116  
  47         215  
81              
82 1     1   4 sub is_location_message { 1 }
83              
84 1     1   5 sub title { $_[0]->{message}{title} }
85 1     1   6 sub address { $_[0]->{message}{address} }
86 1     1   5 sub latitude { $_[0]->{message}{latitude} }
87 1     1   4 sub longitude { $_[0]->{message}{longitude} }
88             }
89              
90             package LINE::Bot::API::Event::Message::Sticker {
91 47     47   8441 use parent 'LINE::Bot::API::Event::Message';
  47         104  
  47         220  
92              
93 1     1   5 sub is_sticker_message { 1 }
94              
95 1     1   5 sub package_id { $_[0]->{message}{packageId} }
96 1     1   4 sub sticker_id { $_[0]->{message}{stickerId} }
97 0     0   0 sub stickerResourceType { $_[0]->{message}{stickerResourceType} }
98             }
99              
100             package LINE::Bot::API::Event::Message::File {
101 47     47   7077 use parent 'LINE::Bot::API::Event::Message';
  47         128  
  47         224  
102              
103 1     1   5 sub is_file_message { 1 }
104              
105 1     1   5 sub file_name { $_[0]->{message}{fileName} }
106 1     1   5 sub file_size { $_[0]->{message}{fileSize} }
107             }
108              
109             1;