File Coverage

blib/lib/WebService/Mattermost/V4/API/Resource/Emoji.pm
Criterion Covered Total %
statement 3 23 13.0
branch 0 4 0.0
condition 0 3 0.0
subroutine 1 6 16.6
pod 4 5 80.0
total 8 41 19.5


line stmt bran cond sub pod time code
1             package WebService::Mattermost::V4::API::Resource::Emoji;
2:

3: # ABSTRACT: Wrapped API methods for the emoji API endpoints. 4:
5: use Moo;
6:
7: extends 'WebService::Mattermost::V4::API::Resource';
8:
9: ################################################################################
10:
11: around [ qw(get delete get_image) ] => sub {
12: my $orig = shift;
13: my $self = shift;
14: my $id = shift;
15:
16: return $self->validate_id($orig, $id, @_);
17: };
18:
19: sub custom {
20: my $self = shift;
21:
22: return $self->_get({ view => 'Emoji' });
23: }
24:
25: sub create {
26: my $self = shift;
27: my $name = shift;
28: my $filename = shift;
29: my $creator_id = shift;
30:
31: unless ($filename && -f $filename) {
32: return $self->error_return("'${filename}' is not a real file");
33: }
34:
35: return $self->_single_view_post({
36: view => 'Emoji',
37: override_data_type => 'form',
38: parameters => {
39: image => { file => $filename },
40: emoji => {
41: name => $name,
42: creator_id => $creator_id,
43: },
44: },
45: });
46: }
47:
48: sub get {
49: my $self = shift;
50: my $id = shift;
51:
52: return $self->_single_view_get({
53: view => 'Emoji',
54: endpoint => '%s',
55: ids => [ $id ],
56: });
57: }
58:
59: sub delete {
60: my $self = shift;
61: my $id = shift;
62:
63: return $self->_single_view_delete({
64: view => 'Emoji',
65: endpoint => '%s',
66: ids => [ $id ],
67: });
68: }
69:
70: sub get_by_name {
71: my $self = shift;
72: my $name = shift;
73:
74: unless ($name) {
75: return $self->error_return('The first argument should be an emoji name');
76: }
77:
78: return $self->_single_view_get({
79: view => 'Emoji',
80: endpoint => 'name/%s',
81: ids => [ $name ],
82: });
83: }
84:
85: sub get_image {
86: my $self = shift;
87: my $id = shift;
88:
89: return $self->_single_view_get({
90: view => 'Emoji',
91: endpoint => '%s/image',
92: ids => [ $id ],
93: });
94: }
95:
96: sub search {
97: my $self = shift;
98: my $args = shift;
99:
100: return $self->_post({
101: view => 'Emoji',
102: endpoint => 'search',
103: parameters => $args,
104: required => [ 'term' ],
105: });
106: }
107:
108: sub autocomplete {
109: my $self = shift;
110: my $name = shift;
111:
112: return $self->_single_view_get({
113: view => 'Emoji',
114: endpoint => 'autocomplete',
115: parameters => { name => $name },
116: });
117: }
118:
119: ################################################################################
120:
121: 1;
122:
123: __END__
124:
125: =pod
126:
127: =encoding UTF-8
128:
129: =head1 NAME
130:
131: WebService::Mattermost::V4::API::Resource::Emoji - Wrapped API methods for the emoji API endpoints.
132:
133: =head1 VERSION
134:
135: version 0.30
136:
137: =head1 DESCRIPTION
138:
139: use WebService::Mattermost;
140:
141: my $mm = WebService::Mattermost->new({
142: authenticate => 1,
143: username => 'me@somewhere.com',
144: password => 'hunter2',
145: base_url => 'https://my.mattermost.server.com/api/v4/',
146: });
147:
148: my $resource = $mm->api->emoji;
149:
150: =head2 METHODS
151:
152: =over 4
153:
154: =item C<custom()>
155:
156: Get all custom emojis.
157:
158: my $response = $resource->custom();
159:
160: =item C<get()>
161:
162: Get an emoji by its ID.
163:
164: my $response = $resource->get('EMOJI-ID-HERE');
165:
166: =item C<delete()>
167:
168: Delete an emoji by its ID.
169:
170: my $response = $resource->delete('EMOJI-ID-HERE');
171:
172: =item C<get_by_name()>
173:
174: Get an emoji by its name.
175:
176: my $response = $resource->get_by_name('EMOJI-NAME-HERE');
177:
178: =item C<get_image()>
179:
180: Get an emoji's image by its ID.
181:
182: my $response = $resource->get_image('EMOJI-ID-HERE');
183:
184: =item C<search()>
185:
186: Search custom emojis.
187:
188: my $response = $resource->search({
189: # Required arguments
190: term => 'Term here',
191:
192: # Optional arguments
193: prefix_only => 'Prefix here',
194: });
195:
196: =item C<autocomplete()>
197:
198: Autocomplete an emoji name.
199:
200: my $response = $resource->autocomplete('START-OF-EMOJI-NAME');
201:
202: =back
203:
204: =head1 SEE ALSO
205:
206: =over 4
207:
208: =item L<Official Emoji documentation|https://api.mattermost.com/#tag/emoji>
209:
210: =back
211:
212: =head1 AUTHOR
213:
214: Mike Jones <mike@netsplit.org.uk>
215:
216: =head1 COPYRIGHT AND LICENSE
217:
218: This software is Copyright (c) 2023 by Mike Jones.
219:
220: This is free software, licensed under:
221:
222: The MIT (X11) License
223:
224: =cut
225: