File Coverage

blib/lib/API/MailboxOrg/API/Mail.pm
Criterion Covered Total %
statement 26 74 35.1
branch 0 12 0.0
condition n/a
subroutine 9 15 60.0
pod 6 6 100.0
total 41 107 38.3


line stmt bran cond sub pod time code
1              
2             # ABSTRACT: MailboxOrg::API::Mail
3              
4             # ---
5             # This class is auto-generated by bin/get_mailbox_api.pl
6             # ---
7              
8             use v5.24;
9 2     2   1160  
  2         6  
10             use strict;
11 2     2   54 use warnings;
  2         3  
  2         44  
12 2     2   9  
  2         4  
  2         45  
13             use Moo;
14 2     2   9 use Types::Standard qw(Enum Str Int InstanceOf ArrayRef);
  2         5  
  2         12  
15 2     2   561 use API::MailboxOrg::Types qw(HashRefRestricted Boolean);
  2         4  
  2         23  
16 2     2   2261 use Params::ValidationCompiler qw(validation_for);
  2         4  
  2         12  
17 2     2   777  
  2         3  
  2         123  
18             extends 'API::MailboxOrg::APIBase';
19              
20             with 'MooX::Singleton';
21              
22             use feature 'signatures';
23 2     2   10 no warnings 'experimental::signatures';
  2         28  
  2         158  
24 2     2   12  
  2         4  
  2         1668  
25             our $VERSION = '1.0.1'; # VERSION
26              
27             my %validators = (
28             'add' => validation_for(
29             params => {
30             mail => { type => Str, optional => 0 },
31             password => { type => Str, optional => 0 },
32             password_hash => { type => Str, optional => 1 },
33             plan => { type => Enum[qw(light standard premium)], optional => 0 },
34             additional_mail_quota => { type => Str, optional => 1 },
35             additional_cloud_quota => { type => Str, optional => 1 },
36             first_name => { type => Str, optional => 0 },
37             last_name => { type => Str, optional => 0 },
38             inboxsave => { type => Boolean, optional => 0 },
39             forwards => { type => ArrayRef, optional => 0 },
40             memo => { type => Str, optional => 1 },
41             catchall => { type => Boolean, optional => 1 },
42             create_own_context => { type => Boolean, optional => 1 },
43             title => { type => Str, optional => 1 },
44             birthday => { type => Str, optional => 1 },
45             position => { type => Str, optional => 1 },
46             department => { type => Str, optional => 1 },
47             company => { type => Str, optional => 1 },
48             street => { type => Str, optional => 1 },
49             postal_code => { type => Str, optional => 1 },
50             city => { type => Str, optional => 1 },
51             phone => { type => Str, optional => 1 },
52             fax => { type => Str, optional => 1 },
53             cell_phone => { type => Str, optional => 1 },
54             recover => { type => Boolean, optional => 1 },
55             skip_welcome_mail => { type => Boolean, optional => 1 },
56              
57             },
58             ),
59             'del' => validation_for(
60             params => {
61             mail => { type => Str, optional => 0 },
62              
63             },
64             ),
65             'get' => validation_for(
66             params => {
67             mail => { type => Str, optional => 0 },
68              
69             },
70             ),
71             'list' => validation_for(
72             params => {
73             domain => { type => Str, optional => 0 },
74              
75             },
76             ),
77             'register' => validation_for(
78             params => {
79             token => { type => Str, optional => 0 },
80             mail => { type => Str, optional => 0 },
81             password => { type => Str, optional => 0 },
82             alternate_mail => { type => Str, optional => 1 },
83             first_name => { type => Str, optional => 0 },
84             last_name => { type => Str, optional => 0 },
85             lang => { type => Enum[qw(de en fr)], optional => 1 },
86              
87             },
88             ),
89             'set' => validation_for(
90             params => {
91             mail => { type => Str, optional => 0 },
92             password => { type => Str, optional => 1 },
93             password_hash => { type => Str, optional => 1 },
94             plan => { type => Enum[qw(MAIL MAILXL MAILXXL MAILXXXL Office OfficeXL OfficeXXL OfficeXXXL light standard premium)], optional => 1 },
95             additional_mail_quota => { type => Str, optional => 1 },
96             additional_cloud_quota => { type => Str, optional => 1 },
97             first_name => { type => Str, optional => 1 },
98             last_name => { type => Str, optional => 1 },
99             inboxsave => { type => Boolean, optional => 1 },
100             forwards => { type => ArrayRef, optional => 1 },
101             aliases => { type => ArrayRef, optional => 1 },
102             alternate_mail => { type => Str, optional => 1 },
103             memo => { type => Str, optional => 1 },
104             active => { type => Boolean, optional => 1 },
105             title => { type => Str, optional => 1 },
106             birthday => { type => Str, optional => 1 },
107             position => { type => Str, optional => 1 },
108             department => { type => Str, optional => 1 },
109             company => { type => Str, optional => 1 },
110             street => { type => Str, optional => 1 },
111             postal_code => { type => Str, optional => 1 },
112             city => { type => Str, optional => 1 },
113             phone => { type => Str, optional => 1 },
114             fax => { type => Str, optional => 1 },
115             cell_phone => { type => Str, optional => 1 },
116              
117             },
118             ),
119              
120             );
121              
122              
123             my $validator = $validators{'add'};
124 0     0 1   %params = $validator->(%params) if $validator;
  0            
  0            
  0            
125 0            
126 0 0         my %opt = (needs_auth => 1);
127              
128 0           return $self->_request( 'mail.add', \%params, \%opt );
129             }
130 0            
131             my $validator = $validators{'del'};
132             %params = $validator->(%params) if $validator;
133 0     0 1    
  0            
  0            
  0            
134 0           my %opt = (needs_auth => 1);
135 0 0          
136             return $self->_request( 'mail.del', \%params, \%opt );
137 0           }
138              
139 0           my $validator = $validators{'get'};
140             %params = $validator->(%params) if $validator;
141              
142 0     0 1   my %opt = (needs_auth => 1);
  0            
  0            
  0            
143 0            
144 0 0         return $self->_request( 'mail.get', \%params, \%opt );
145             }
146 0            
147             my $validator = $validators{'list'};
148 0           %params = $validator->(%params) if $validator;
149              
150             my %opt = (needs_auth => 1);
151 0     0 1    
  0            
  0            
  0            
152 0           return $self->_request( 'mail.list', \%params, \%opt );
153 0 0         }
154              
155 0           my $validator = $validators{'register'};
156             %params = $validator->(%params) if $validator;
157 0            
158             my %opt = ();
159              
160 0     0 1   return $self->_request( 'mail.register', \%params, \%opt );
  0            
  0            
  0            
161 0           }
162 0 0          
163             my $validator = $validators{'set'};
164 0           %params = $validator->(%params) if $validator;
165              
166 0           my %opt = (needs_auth => 1);
167              
168             return $self->_request( 'mail.set', \%params, \%opt );
169 0     0 1   }
  0            
  0            
  0            
170 0            
171 0 0          
172             1;
173 0            
174              
175 0           =pod
176              
177             =encoding UTF-8
178              
179             =head1 NAME
180              
181             API::MailboxOrg::API::Mail - MailboxOrg::API::Mail
182              
183             =head1 VERSION
184              
185             version 1.0.1
186              
187             =head1 SYNOPSIS
188              
189             use API::MailboxOrg;
190              
191             my $user = '1234abc';
192             my $password = '1234abc';
193              
194             my $api = API::MailboxOrg->new(
195             user => $user,
196             password => $password,
197             );
198              
199             =head1 METHODS
200              
201             =head2 add
202              
203             Adds an e-mail address
204              
205             Available for admin, account, domain
206              
207             Parameters:
208              
209             =over 4
210              
211             =item * mail
212              
213             =item * password
214              
215             =item * password_hash
216              
217             =item * plan
218              
219             =item * additional_mail_quota
220              
221             =item * additional_cloud_quota
222              
223             =item * first_name
224              
225             =item * last_name
226              
227             =item * inboxsave
228              
229             =item * forwards
230              
231             =item * memo
232              
233             =item * catchall
234              
235             =item * create_own_context
236              
237             =item * title
238              
239             =item * birthday
240              
241             =item * position
242              
243             =item * department
244              
245             =item * company
246              
247             =item * street
248              
249             =item * postal_code
250              
251             =item * city
252              
253             =item * phone
254              
255             =item * fax
256              
257             =item * cell_phone
258              
259             =item * recover
260              
261             =item * skip_welcome_mail
262              
263             =back
264              
265             returns: array
266              
267             $api->mail->add(%params);
268              
269             =head2 del
270              
271             Deletes an e-mail address
272              
273             Available for admin, reseller, account, domain
274              
275             Parameters:
276              
277             =over 4
278              
279             =item * mail
280              
281             =back
282              
283             returns: boolean
284              
285             $api->mail->del(%params);
286              
287             =head2 get
288              
289             Returns e-mail address details
290              
291             Available for admin, reseller, account, domain, mail
292              
293             Parameters:
294              
295             =over 4
296              
297             =item * mail
298              
299             =back
300              
301             returns: array
302              
303             $api->mail->get(%params);
304              
305             =head2 list
306              
307             Returns a list of e-mail addresses + configuration information
308              
309             Available for admin, reseller, account, domain
310              
311             Parameters:
312              
313             =over 4
314              
315             =item * domain
316              
317             =back
318              
319             returns: array
320              
321             $api->mail->list(%params);
322              
323             =head2 register
324              
325             Adds an e-mail address (using a predefined token)
326              
327             Parameters:
328              
329             =over 4
330              
331             =item * token
332              
333             =item * mail
334              
335             =item * password
336              
337             =item * alternate_mail
338              
339             =item * first_name
340              
341             =item * last_name
342              
343             =item * lang
344              
345             =back
346              
347             returns: boolean
348              
349             $api->mail->register(%params);
350              
351             =head2 set
352              
353             Modifies e-mail address properties
354              
355             Available for admin, reseller, account, domain, mail, domain
356              
357             Parameters:
358              
359             =over 4
360              
361             =item * mail
362              
363             =item * password
364              
365             =item * password_hash
366              
367             =item * plan
368              
369             =item * additional_mail_quota
370              
371             =item * additional_cloud_quota
372              
373             =item * first_name
374              
375             =item * last_name
376              
377             =item * inboxsave
378              
379             =item * forwards
380              
381             =item * aliases
382              
383             =item * alternate_mail
384              
385             =item * memo
386              
387             =item * active
388              
389             =item * title
390              
391             =item * birthday
392              
393             =item * position
394              
395             =item * department
396              
397             =item * company
398              
399             =item * street
400              
401             =item * postal_code
402              
403             =item * city
404              
405             =item * phone
406              
407             =item * fax
408              
409             =item * cell_phone
410              
411             =back
412              
413             returns: array
414              
415             $api->mail->set(%params);
416              
417             =head1 AUTHOR
418              
419             Renee Baecker <reneeb@cpan.org>
420              
421             =head1 COPYRIGHT AND LICENSE
422              
423             This software is Copyright (c) 2022 by Renee Baecker.
424              
425             This is free software, licensed under:
426              
427             The Artistic License 2.0 (GPL Compatible)
428              
429             =cut