File Coverage

blib/lib/WebService/Mattermost/V4/API/Resource/Roles.pm
Criterion Covered Total %
statement 3 9 33.3
branch 0 2 0.0
condition 0 2 0.0
subroutine 1 2 50.0
pod 1 1 100.0
total 5 16 31.2


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

3: # ABSTRACT: Wrapped API methods for the roles API endpoints. 4:
5: use Moo;
6:
7: extends 'WebService::Mattermost::V4::API::Resource';
8:
9: ################################################################################
10:
11: around [ qw(get_by_id get_by_name update_by_id) ] => 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 get_by_id {
20: my $self = shift;
21: my $id = shift;
22:
23: return $self->_get({
24: endpoint => '%s',
25: ids => [ $id ],
26: });
27: }
28:
29: sub get_by_name {
30: my $self = shift;
31: my $name = shift;
32:
33: return $self->_get({
34: endpoint => 'name/%s',
35: ids => [ $name ],
36: });
37: }
38:
39: sub update_by_id {
40: my $self = shift;
41: my $id = shift;
42: my $args = shift;
43:
44: return $self->_patch({
45: endpoint => '%s/patch',
46: parameters => $args,
47: });
48: }
49:
50: sub get_by_names {
51: my $self = shift;
52: my $names = shift;
53:
54: unless (ref $names eq 'ARRAY' && scalar @{$names}) {
55: return $self->error_return('The first argument must be an ArrayRef of names');
56: }
57:
58: return $self->_post({
59: endpoint => 'names',
60: parameters => $names,
61: });
62: }
63:
64: ################################################################################
65:
66: 1;
67:
68: __END__
69:
70: =pod
71:
72: =encoding UTF-8
73:
74: =head1 NAME
75:
76: WebService::Mattermost::V4::API::Resource::Roles - Wrapped API methods for the roles API endpoints.
77:
78: =head1 VERSION
79:
80: version 0.30
81:
82: =head1 DESCRIPTION
83:
84: =head2 USAGE
85:
86: use WebService::Mattermost;
87:
88: my $mm = WebService::Mattermost->new({
89: authenticate => 1,
90: username => 'me@somewhere.com',
91: password => 'hunter2',
92: base_url => 'https://my.mattermost.server.com/api/v4/',
93: });
94:
95: my $resource = $mm->api->roles;
96:
97: =head2 METHODS
98:
99: =over 4
100:
101: =item C<get_by_id()>
102:
103: L<Get a role|https://api.mattermost.com/#tag/roles%2Fpaths%2F~1roles~1%7Brole_id%7D%2Fget>
104:
105: my $response = $resource->get_by_id('ID-HERE');
106:
107: =item C<get_by_name()>
108:
109: L<Get a role|https://api.mattermost.com/#tag/roles%2Fpaths%2F~1roles~1name~1%7Brole_name%7D%2Fget>
110:
111: my $response = $resource->get_by_name('NAME-HERE');
112:
113: =item C<update_by_id()>
114:
115: L<Patch a role|https://api.mattermost.com/#tag/roles%2Fpaths%2F~1roles~1%7Brole_id%7D~1patch%2Fput>
116:
117: my $response = $resource->update_by_id('ID-HERE', {
118: permissions => [ qw(
119: PERMISSION-HERE
120: ANOTHER-PERMISSION-HERE
121: ) ],
122: });
123:
124: =item C<get_by_names()>
125:
126: L<Get a list of roles by name|https://api.mattermost.com/#tag/roles%2Fpaths%2F~1roles~1names%2Fpost>
127:
128: my $response = $resource->get_by_names([ qw(NAME-1-HERE NAME-2-HERE) ]);
129:
130: =back
131:
132: =head1 AUTHOR
133:
134: Mike Jones <mike@netsplit.org.uk>
135:
136: =head1 COPYRIGHT AND LICENSE
137:
138: This software is Copyright (c) 2023 by Mike Jones.
139:
140: This is free software, licensed under:
141:
142: The MIT (X11) License
143:
144: =cut
145: