File Coverage

blib/lib/LINE/Bot/API/Event/Message.pm
Criterion Covered Total %
statement 61 74 82.4
branch 1 2 50.0
condition n/a
subroutine 35 46 76.0
pod 0 11 0.0
total 97 133 72.9


line stmt bran cond sub pod time code
1             package LINE::Bot::API::Event::Message;
2 53     53   432 use strict;
  53         109  
  53         2026  
3 53     53   276 use warnings;
  53         107  
  53         2770  
4 53     53   842 use parent 'LINE::Bot::API::Event::Base';
  53         459  
  53         527  
5              
6 53     53   3080 use Carp 'carp';
  53         121  
  53         19260  
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 68 my($class, %args) = @_;
21              
22 19         34 my $type = $args{message}{type};
23 19         35 my $message_class = $TYPE2CLASS{$type};
24 19 50       36 unless ($message_class) {
25 0         0 carp 'Unsupported message type: ' . $type;
26 0         0 $message_class = $class;
27             }
28              
29 19         156 bless { %args }, $message_class;
30             }
31              
32 1     1 0 6 sub is_message_event { 1 }
33              
34 1     1 0 6 sub message_id { $_[0]->{message}{id} }
35              
36 11     11 0 9302 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 53     53   435 use parent 'LINE::Bot::API::Event::Message';
  53         143  
  53         450  
48              
49 1     1   5 sub is_text_message { 1 }
50              
51 1     1   6 sub text { $_[0]->{message}{text} }
52 1     1   10 sub emojis { $_[0]->{message}{emojis} }
53 0     0   0 sub mention { $_[0]->{mention} }
54             }
55              
56             package LINE::Bot::API::Event::Message::Image {
57 53     53   9531 use parent 'LINE::Bot::API::Event::Message';
  53         141  
  53         262  
58              
59 1     1   66 sub is_image_message { 1 }
60              
61 3     3   21 sub content_provider { $_[0]->{message}{contentProvider} }
62              
63 0     0   0 sub image_set { $_[0]->{message}{imageSet} }
64             }
65              
66             package LINE::Bot::API::Event::Message::Video {
67 53     53   7923 use parent 'LINE::Bot::API::Event::Message';
  53         121  
  53         266  
68              
69 1     1   5 sub is_video_message { 1 }
70              
71 3     3   25 sub content_provider { $_[0]->{message}{contentProvider} }
72             }
73              
74             package LINE::Bot::API::Event::Message::Audio {
75 53     53   6584 use parent 'LINE::Bot::API::Event::Message';
  53         136  
  53         545  
76              
77 1     1   6 sub is_audio_message { 1 }
78              
79 3     3   21 sub content_provider { $_[0]->{message}{contentProvider} }
80             }
81              
82             package LINE::Bot::API::Event::Message::Location {
83 53     53   7328 use parent 'LINE::Bot::API::Event::Message';
  53         240  
  53         315  
84              
85 1     1   21 sub is_location_message { 1 }
86              
87 1     1   7 sub title { $_[0]->{message}{title} }
88 1     1   7 sub address { $_[0]->{message}{address} }
89 1     1   7 sub latitude { $_[0]->{message}{latitude} }
90 1     1   7 sub longitude { $_[0]->{message}{longitude} }
91             }
92              
93             package LINE::Bot::API::Event::Message::Sticker {
94 53     53   9757 use parent 'LINE::Bot::API::Event::Message';
  53         165  
  53         254  
95              
96 1     1   5 sub is_sticker_message { 1 }
97              
98 1     1   8 sub package_id { $_[0]->{message}{packageId} }
99 1     1   7 sub sticker_id { $_[0]->{message}{stickerId} }
100 0     0   0 sub stickerResourceType { $_[0]->{message}{stickerResourceType} }
101 0     0   0 sub keywords { $_[0]->{message}{keywords} }
102             }
103              
104             package LINE::Bot::API::Event::Message::File {
105 53     53   10206 use parent 'LINE::Bot::API::Event::Message';
  53         138  
  53         230  
106              
107 1     1   5 sub is_file_message { 1 }
108              
109 1     1   5 sub file_name { $_[0]->{message}{fileName} }
110 1     1   6 sub file_size { $_[0]->{message}{fileSize} }
111             }
112              
113             1;