File Coverage

blib/lib/WebService/Mattermost/V4/API/Object/Team.pm
Criterion Covered Total %
statement 17 23 73.9
branch 0 4 0.0
condition n/a
subroutine 5 11 45.4
pod 0 1 0.0
total 22 39 56.4


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

3: # ABSTRACT: A team item. 4:
5: use Moo;
6: use Types::Standard qw(Bool InstanceOf Str);
7:
8: use WebService::Mattermost::Helper::Alias 'v4';
9:
10: extends 'WebService::Mattermost::V4::API::Object';
11: with qw(
12: WebService::Mattermost::V4::API::Object::Role::APIMethods
13: WebService::Mattermost::V4::API::Object::Role::Name
14: WebService::Mattermost::V4::API::Object::Role::Description
15: WebService::Mattermost::V4::API::Object::Role::ID
16: WebService::Mattermost::V4::API::Object::Role::Timestamps
17: );
18:
19: ################################################################################
20:
21: has channels => (is => 'lazy', isa => InstanceOf[v4 'Team::Channels']);
22: has company_name => (is => 'lazy', isa => Str);
23: has display_name => (is => 'lazy', isa => Str);
24: has email => (is => 'lazy', isa => Str);
25: has invite_id => (is => 'lazy', isa => Str);
26: has is_invite_only => (is => 'lazy', isa => Bool);
27: has open_invite => (is => 'lazy', isa => Bool);
28:
29: ################################################################################
30:
31: sub BUILD {
32: my $self = shift;
33:
34: $self->api_resource_name('team');
35: $self->set_available_api_methods([ qw(
36: add_member
37: add_members
38: channels.public
39: delete
40: get_icon
41: invite_by_emails
42: members
43: members_by_ids
44: patch
45: remove_icon
46: search_posts
47: set_icon
48: set_scheme
49: stats
50: update
51: ) ]);
52:
53: return 1;
54: }
55:
56: ################################################################################
57:
58: sub _build_channels {
59: my $self = shift;
60:
61: my $team_channels = $self->new_related_resource('teams', 'Team::Channels');
62:
63: $team_channels->id($self->id);
64:
65: return $team_channels;
66: }
67:
68: sub _build_company_name { shift->raw_data->{company_name} }
69: sub _build_display_name { shift->raw_data->{display_name} }
70: sub _build_email { shift->raw_data->{email} }
71: sub _build_invite_id { shift->raw_data->{invite_id} }
72: sub _build_is_invite_only { shift->raw_data->{type} eq 'I' ? 1 : 0 }
73: sub _build_open_invite { shift->raw_data->{open_invite} ? 1 : 0 }
74:
75: ################################################################################
76:
77: 1;
78:
79: __END__
80:
81: =pod
82:
83: =encoding UTF-8
84:
85: =head1 NAME
86:
87: WebService::Mattermost::V4::API::Object::Team - A team item.
88:
89: =head1 VERSION
90:
91: version 0.28
92:
93: =head1 DESCRIPTION
94:
95: Object version of a Mattermost team.
96:
97: =head2 METHODS
98:
99: See matching methods in L<WebService::Mattermost::V4::API::Resource::Team>
100: for full documentation.
101:
102: ID parameters are not required:
103:
104: my $response = $mattermost->api->team->get('ID-HERE')->item->delete();
105:
106: Is the same as:
107:
108: my $response = $mattermost->api->team->delete('ID-HERE');
109:
110: =over 4
111:
112: =item C<add_member()>
113:
114: =item C<add_members()>
115:
116: =item C<delete()>
117:
118: =item C<get_icon()>
119:
120: =item C<invite_by_emails()>
121:
122: =item C<members()>
123:
124: =item C<members_by_ids()>
125:
126: =item C<patch()>
127:
128: =item C<remove_icon()>
129:
130: =item C<search_posts()>
131:
132: =item C<set_icon()>
133:
134: =item C<set_scheme()>
135:
136: =item C<stats()>
137:
138: =item C<update()>
139:
140: =back
141:
142: =head2 ATTRIBUTES
143:
144: =over 4
145:
146: =item C<id>
147:
148: The team's ID.
149:
150: =item C<name>
151:
152: The team's name.
153:
154: =item C<display_name>
155:
156: =item C<email>
157:
158: Contact address for the team.
159:
160: =item C<invite_id>
161:
162: =item C<is_invite_only>
163:
164: Boolean.
165:
166: =item C<open_invite>
167:
168: Boolean.
169:
170: =back
171:
172: =head1 SEE ALSO
173:
174: =over 4
175:
176: =item L<WebService::Mattermost::V4::API::Resource::Team>
177:
178: =item L<WebService::Mattermost::V4::API::Resource::Teams>
179:
180: =item L<WebService::Mattermost::V4::API::Object::Role::Name>
181:
182: =item L<WebService::Mattermost::V4::API::Object::Role::Description>
183:
184: =item L<WebService::Mattermost::V4::API::Object::Role::ID>
185:
186: =item L<WebService::Mattermost::V4::API::Object::Role::Timestamps>
187:
188: =back
189:
190: =head1 AUTHOR
191:
192: Mike Jones <mike@netsplit.org.uk>
193:
194: =head1 COPYRIGHT AND LICENSE
195:
196: This software is Copyright (c) 2020 by Mike Jones.
197:
198: This is free software, licensed under:
199:
200: The MIT (X11) License
201:
202: =cut
203: