File Coverage

blib/lib/WebService/Mattermost/V4/API/Resource/Channels.pm
Criterion Covered Total %
statement 3 22 13.6
branch 0 8 0.0
condition 0 3 0.0
subroutine 1 4 25.0
pod 3 3 100.0
total 7 40 17.5


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

3: # ABSTRACT: Wrapped API methods for the channels API endpoints. 4:
5: use Moo;
6:
7: extends 'WebService::Mattermost::V4::API::Resource';
8:
9: ################################################################################
10:
11: sub create {
12: my $self = shift;
13: my $args = shift;
14:
15: $args->{type} = uc $args->{type} if $args->{type};
16:
17: # O for public, P for private
18: if (!$args->{type} || !grep { $_ eq $args->{type} } qw(O P)) {
19: return $self->error_return('"type" must be O or P');
20: }
21:
22: return $self->_post({
23: parameters => $args,
24: required => [ qw(team_id name display_name type) ],
25: });
26: }
27:
28: sub create_direct_channel {
29: my $self = shift;
30: my $user_ids = shift;
31:
32: if (scalar @{$user_ids} != 2) {
33: return $self->error_return('Two user IDs must be passed');
34: }
35:
36: return $self->_post({
37: endpoint => 'direct',
38: parameters => $user_ids,
39: });
40: }
41:
42: sub create_group_channel {
43: my $self = shift;
44: my $user_ids = shift;
45:
46: if (scalar @{$user_ids} < 2) {
47: return $self->error_return('At least two user IDs must be passed');
48: }
49:
50: return $self->_post({
51: endpoint => 'group',
52: parameters => $user_ids,
53: });
54: }
55:
56: ################################################################################
57:
58: 1;
59:
60: __END__
61:
62: =pod
63:
64: =encoding UTF-8
65:
66: =head1 NAME
67:
68: WebService::Mattermost::V4::API::Resource::Channels - Wrapped API methods for the channels API endpoints.
69:
70: =head1 VERSION
71:
72: version 0.30
73:
74: =head1 DESCRIPTION
75:
76: =head2 USAGE
77:
78: use WebService::Mattermost;
79:
80: my $mm = WebService::Mattermost->new({
81: authenticate => 1,
82: username => 'me@somewhere.com',
83: password => 'hunter2',
84: base_url => 'https://my.mattermost.server.com/api/v4/',
85: });
86:
87: my $resource = $mm->api->channels;
88:
89: =head2 METHODS
90:
91: =over 4
92:
93: =item C<create()>
94:
95: L<Create a channel|https://api.mattermost.com/#tag/channels%2Fpaths%2F~1channels%2Fpost>
96:
97: Create a public or private channel.
98:
99: my $response = $resource->create({
100: # Required arguments
101: type => 'P', # P for private, O for public
102: team_id => '1234abcd',
103: name => 'my-new-channel',
104: display_name => 'MyNewChannel',
105:
106: # Optional arguments
107: purpose => 'A channel for testing',
108: header => 'Channel topic',
109: });
110:
111: =item C<create_direct_channel()>
112:
113: L<Create a direct message channel|https://api.mattermost.com/#tag/channels%2Fpaths%2F~1channels~1direct%2Fpost>
114:
115: Create a direct message channel between two users. Two user IDs must be
116: provided.
117:
118: my $response = $resource->create_direct_channel([ qw(
119: user_1_id_here
120: user_2_id_here
121: ) ]);
122:
123: =item C<create_group_channel()>
124:
125: L<Create a group message channel|https://api.mattermost.com/#tag/channels%2Fpaths%2F~1channels~1group%2Fpost>
126:
127: Create a direct message channel between two users. Two user IDs must be
128: provided.
129:
130: my $response = $resource->create_group_channel([ qw(
131: user_1_id_here
132: user_2_id_here
133: user_3_id_here
134: ) ]);
135:
136: =back
137:
138: =head1 AUTHOR
139:
140: Mike Jones <mike@netsplit.org.uk>
141:
142: =head1 COPYRIGHT AND LICENSE
143:
144: This software is Copyright (c) 2023 by Mike Jones.
145:
146: This is free software, licensed under:
147:
148: The MIT (X11) License
149:
150: =cut
151: