File Coverage

blib/lib/REST/Google/Apps/EmailSettings.pm
Criterion Covered Total %
statement 7 9 77.7
branch n/a
condition n/a
subroutine 3 3 100.0
pod n/a
total 10 12 83.3


line stmt bran cond sub pod time code
1             package REST::Google::Apps::EmailSettings;
2              
3 1     1   20193 use Carp;
  1         2  
  1         82  
4 1     1   1172 use LWP::UserAgent;
  1         67738  
  1         42  
5 1     1   450 use XML::Simple;
  0            
  0            
6              
7             use strict;
8             use warnings;
9              
10             our $VERSION = '1.1.6';
11              
12              
13              
14             sub new {
15             my $self = bless {}, shift;
16              
17             my ( $arg );
18             %{$arg} = @_;
19              
20             map { $arg->{lc($_)} = $arg->{$_} } keys %{$arg};
21              
22             $self->{'domain'} = $arg->{'domain'} || croak( "Missing required 'domain' argument" );
23              
24             $self->{'lwp'} = LWP::UserAgent->new();
25             $self->{'lwp'}->agent( 'RESTGoogleAppsEmailSettings/' . $VERSION );
26              
27             if ( $arg->{'username'} && $arg->{'password'} ) {
28             $self->authenticate(
29             'username' => $arg->{'username'},
30             'password' => $arg->{'password'}
31             )
32             || croak qq(Unable to retrieve authentication token);
33             }
34              
35             $self->{'xml'} = XML::Simple->new();
36              
37             return( $self );
38             }
39              
40              
41              
42             sub authenticate {
43             my $self = shift;
44              
45             return( 1 ) if $self->{'token'};
46              
47             my ( $arg );
48             %{$arg} = @_;
49              
50             map { $arg->{lc($_)} = $arg->{$_} } keys %{$arg};
51              
52             foreach my $param ( qw/ username password / ) {
53             $arg->{$param} || croak( "Missing required '$param' argument" );
54             }
55              
56             my $response = $self->{'lwp'}->post(
57             'https://www.google.com/accounts/ClientLogin',
58             [
59             'accountType' => 'HOSTED',
60             'service' => 'apps',
61             'Email' => $arg->{'username'} . '@' . $self->{'domain'},
62             'Passwd' => $arg->{'password'}
63             ]
64             );
65              
66             $response->is_success() || return( 0 );
67              
68             foreach ( split( /\n/, $response->content() ) ) {
69             $self->{'token'} = $1 if /^Auth=(.+)$/;
70             last if $self->{'token'};
71             }
72              
73             return( 1 ) if $self->{'token'} || return( 0 );
74             }
75              
76              
77              
78             sub createLabel {
79             my $self = shift;
80              
81             my ( $arg );
82             %{$arg} = @_;
83              
84             map { $arg->{lc($_)} = $arg->{$_} } keys %{$arg};
85              
86             foreach my $param ( qw/ username label / ) {
87             $arg->{$param} || croak( "Missing required '$param' argument" );
88             }
89              
90             my $url = qq(https://apps-apis.google.com/a/feeds/emailsettings/2.0/$self->{'domain'}/$arg->{'username'}/label);
91              
92             my ( $body );
93              
94             $body = $self->_xmlpre();
95              
96             $body .= qq( \n);
97              
98             $body .= $self->_xmlpost();
99              
100             my $result = $self->_request(
101             'method' => 'POST',
102             'url' => $url,
103             'body' => $body
104             ) || return( 0 );
105              
106             return( 1 );
107             }
108              
109              
110              
111             sub createFilter {
112             my $self = shift;
113              
114             my ( $arg );
115             %{$arg} = @_;
116              
117             map { $arg->{lc($_)} = $arg->{$_} } keys %{$arg};
118              
119             foreach my $param ( qw/ username / ) {
120             $arg->{$param} || croak( "Missing required '$param' argument" );
121             }
122              
123             unless (
124             $arg->{'from'} || $arg->{'to'} || $arg->{'subject'} || $arg->{'hasword'} || $arg->{'noWord'} || $arg->{'attachment'}
125             ) {
126             croak( "Missing required filter criteria" );
127             }
128              
129             unless (
130             $arg->{'label'} || $arg->{'markasread'} || $arg->{'archive'}
131             ) {
132             croak( "Missing required filter action" );
133             }
134              
135             my $url = qq(https://apps-apis.google.com/a/feeds/emailsettings/2.0/$self->{'domain'}/$arg->{'username'}/filter);
136              
137             my ( $body );
138              
139             $body = $self->_xmlpre();
140              
141             foreach my $param ( qw/ from to subject / ) {
142             $body .= qq( \n) if $arg->{$param};
143             }
144              
145             $body .= qq( \n) if $arg->{'hasword'};
146             $body .= qq( \n) if $arg->{'noword'};
147             $body .= qq( \n) if $arg->{'attachment'};
148              
149             $body .= qq( \n) if $arg->{'label'};
150             $body .= qq( \n) if $arg->{'markasread'};
151             $body .= qq( \n) if $arg->{'archive'};
152              
153             $body .= $self->_xmlpost();
154              
155             my $result = $self->_request(
156             'method' => 'POST',
157             'url' => $url,
158             'body' => $body
159             ) || return( 0 );
160              
161             return( 1 );
162             }
163              
164              
165              
166             sub createSendAs {
167             my $self = shift;
168              
169             my ( $arg );
170             %{$arg} = @_;
171              
172             map { $arg->{lc($_)} = $arg->{$_} } keys %{$arg};
173              
174             foreach my $param ( qw/ username name address / ) {
175             $arg->{$param} || croak( "Missing required '$param' argument" );
176             }
177              
178             my $url = qq(https://apps-apis.google.com/a/feeds/emailsettings/2.0/$self->{'domain'}/$arg->{'username'}/sendas);
179              
180             my ( $body );
181              
182             $body = $self->_xmlpre();
183              
184             $body .= qq( \n);
185             $body .= qq( \n);
186             $body .= qq( \n) if $arg->{'replyto'};
187             $body .= qq( \n) if $arg->{'default'};
188              
189             $body .= $self->_xmlpost();
190              
191             my $result = $self->_request(
192             'method' => 'POST',
193             'url' => $url,
194             'body' => $body
195             ) || return( 0 );
196              
197             return( 1 );
198             }
199              
200              
201              
202             sub enableWebClips {
203             my $self = shift;
204              
205             my ( $arg );
206             %{$arg} = @_;
207              
208             map { $arg->{lc($_)} = $arg->{$_} } keys %{$arg};
209              
210             foreach my $param ( qw/ username / ) {
211             $arg->{$param} || croak( "Missing required '$param' argument" );
212             }
213              
214             my $url = qq(https://apps-apis.google.com/a/feeds/emailsettings/2.0/$self->{'domain'}/$arg->{'username'}/webclip);
215              
216             my ( $body );
217              
218             $body = $self->_xmlpre();
219              
220             $body .= qq( \n);
221              
222             $body .= $self->_xmlpost();
223              
224             my $result = $self->_request(
225             'method' => 'PUT',
226             'url' => $url,
227             'body' => $body
228             ) || return( 0 );
229              
230             return( 1 );
231             }
232              
233             sub disableWebClips {
234             my $self = shift;
235              
236             my ( $arg );
237             %{$arg} = @_;
238              
239             map { $arg->{lc($_)} = $arg->{$_} } keys %{$arg};
240              
241             foreach my $param ( qw/ username / ) {
242             $arg->{$param} || croak( "Missing required '$param' argument" );
243             }
244              
245             my $url = qq(https://apps-apis.google.com/a/feeds/emailsettings/2.0/$self->{'domain'}/$arg->{'username'}/webclip);
246              
247             my ( $body );
248              
249             $body = $self->_xmlpre();
250              
251             $body .= qq( \n);
252              
253             $body .= $self->_xmlpost();
254              
255             my $result = $self->_request(
256             'method' => 'PUT',
257             'url' => $url,
258             'body' => $body
259             ) || return( 0 );
260              
261             return( 1 );
262             }
263              
264              
265              
266             sub enableForwarding {
267             my $self = shift;
268              
269             my ( $arg );
270             %{$arg} = @_;
271              
272             map { $arg->{lc($_)} = $arg->{$_} } keys %{$arg};
273              
274             foreach my $param ( qw/ username forwardto / ) {
275             $arg->{$param} || croak( "Missing required '$param' argument" );
276             }
277              
278             my $url = qq(https://apps-apis.google.com/a/feeds/emailsettings/2.0/$self->{'domain'}/$arg->{'username'}/forwarding);
279              
280             my ( $body );
281              
282             $body = $self->_xmlpre();
283              
284             $body .= qq( \n);
285             $body .= qq( \n);
286              
287             if ( $arg->{'action'} ) {
288             $arg->{'action'} = uc( $arg->{'action'} );
289              
290             $body .= qq( \n);
291             }
292             else {
293             $body .= qq( \n);
294             }
295              
296             $body .= $self->_xmlpost();
297              
298             my $result = $self->_request(
299             'method' => 'PUT',
300             'url' => $url,
301             'body' => $body
302             ) || return( 0 );
303              
304             return( 1 );
305             }
306              
307             sub disableForwarding {
308             my $self = shift;
309              
310             my ( $arg );
311             %{$arg} = @_;
312              
313             map { $arg->{lc($_)} = $arg->{$_} } keys %{$arg};
314              
315             foreach my $param ( qw/ username / ) {
316             $arg->{$param} || croak( "Missing required '$param' argument" );
317             }
318              
319             my $url = qq(https://apps-apis.google.com/a/feeds/emailsettings/2.0/$self->{'domain'}/$arg->{'username'}/forwarding);
320              
321             my ( $body );
322              
323             $body = $self->_xmlpre();
324              
325             $body .= qq( \n);
326              
327             $body .= $self->_xmlpost();
328              
329             my $result = $self->_request(
330             'method' => 'PUT',
331             'url' => $url,
332             'body' => $body
333             ) || return( 0 );
334              
335             return( 1 );
336             }
337              
338              
339              
340             sub enablePOP {
341             my $self = shift;
342              
343             my ( $arg );
344             %{$arg} = @_;
345              
346             map { $arg->{lc($_)} = $arg->{$_} } keys %{$arg};
347              
348             foreach my $param ( qw/ username / ) {
349             $arg->{$param} || croak( "Missing required '$param' argument" );
350             }
351              
352             my $url = qq(https://apps-apis.google.com/a/feeds/emailsettings/2.0/$self->{'domain'}/$arg->{'username'}/pop);
353              
354             my ( $body );
355              
356             $body = $self->_xmlpre();
357              
358             $body .= qq( \n);
359              
360             if ( $arg->{'enableFor'} ) {
361             if ( $arg->{'enablefor'} eq 'all' ) { $arg->{'enablefor'} = 'ALL_MAIL'; }
362             if ( $arg->{'enablefor'} eq 'now' ) { $arg->{'enablefor'} = 'MAIL_FROM_NOW_ON'; }
363              
364             $body .= qq( \n);
365             }
366             else {
367             $body .= qq( \n);
368             }
369              
370             if ( $arg->{'action'} ) {
371             $arg->{'action'} = uc( $arg->{'action'} );
372              
373             $body .= qq( \n);
374             }
375             else {
376             $body .= qq( \n);
377             }
378              
379             $body .= $self->_xmlpost();
380              
381             my $result = $self->_request(
382             'method' => 'PUT',
383             'url' => $url,
384             'body' => $body
385             ) || return( 0 );
386              
387             return( 1 );
388              
389             }
390              
391             sub disablePOP {
392             my $self = shift;
393              
394             my ( $arg );
395             %{$arg} = @_;
396              
397             map { $arg->{lc($_)} = $arg->{$_} } keys %{$arg};
398              
399             foreach my $param ( qw/ username / ) {
400             $arg->{$param} || croak( "Missing required '$param' argument" );
401             }
402              
403             my $url = qq(https://apps-apis.google.com/a/feeds/emailsettings/2.0/$self->{'domain'}/$arg->{'username'}/pop);
404              
405             my ( $body );
406              
407             $body = $self->_xmlpre();
408              
409             $body .= qq( \n);
410              
411             $body .= $self->_xmlpost();
412              
413             my $result = $self->_request(
414             'method' => 'PUT',
415             'url' => $url,
416             'body' => $body
417             ) || return( 0 );
418              
419             return( 1 );
420             }
421              
422              
423             sub enableIMAP {
424             my $self = shift;
425              
426             my ( $arg );
427             %{$arg} = @_;
428              
429             map { $arg->{lc($_)} = $arg->{$_} } keys %{$arg};
430              
431             foreach my $param ( qw/ username / ) {
432             $arg->{$param} || croak( "Missing required '$param' argument" );
433             }
434              
435             my $url = qq(https://apps-apis.google.com/a/feeds/emailsettings/2.0/$self->{'domain'}/$arg->{'username'}/imap);
436              
437             my ( $body );
438              
439             $body = $self->_xmlpre();
440              
441             $body .= qq( \n);
442              
443             $body .= $self->_xmlpost();
444              
445             my $result = $self->_request(
446             'method' => 'PUT',
447             'url' => $url,
448             'body' => $body
449             ) || return( 0 );
450              
451             return( 1 );
452             }
453              
454             sub disableIMAP {
455             my $self = shift;
456              
457             my ( $arg );
458             %{$arg} = @_;
459              
460             map { $arg->{lc($_)} = $arg->{$_} } keys %{$arg};
461              
462             foreach my $param ( qw/ username / ) {
463             $arg->{$param} || croak( "Missing required '$param' argument" );
464             }
465              
466             my $url = qq(https://apps-apis.google.com/a/feeds/emailsettings/2.0/$self->{'domain'}/$arg->{'username'}/imap);
467              
468             my ( $body );
469              
470             $body = $self->_xmlpre();
471              
472             $body .= qq( \n);
473              
474             $body .= $self->_xmlpost();
475              
476             my $result = $self->_request(
477             'method' => 'PUT',
478             'url' => $url,
479             'body' => $body
480             ) || return( 0 );
481              
482             return( 1 );
483             }
484              
485              
486              
487             sub enableVacation {
488             my $self = shift;
489              
490             my ( $arg );
491             %{$arg} = @_;
492              
493             map { $arg->{lc($_)} = $arg->{$_} } keys %{$arg};
494              
495             foreach my $param ( qw/ username subject message / ) {
496             $arg->{$param} || croak( "Missing required '$param' argument" );
497             }
498              
499             my $url = qq(https://apps-apis.google.com/a/feeds/emailsettings/2.0/$self->{'domain'}/$arg->{'username'}/vacation);
500              
501             my ( $body );
502              
503             $body = $self->_xmlpre();
504              
505             $body .= qq( \n);
506             $body .= qq( \n);
507             $body .= qq( \n);
508             $body .= qq( \n) if $arg->{'contactsonly'};
509              
510             $body .= $self->_xmlpost();
511              
512             my $result = $self->_request(
513             'method' => 'PUT',
514             'url' => $url,
515             'body' => $body
516             ) || return( 0 );
517              
518             return( 1 );
519             }
520              
521             sub disableVacation {
522             my $self = shift;
523              
524             my ( $arg );
525             %{$arg} = @_;
526              
527             map { $arg->{lc($_)} = $arg->{$_} } keys %{$arg};
528              
529             foreach my $param ( qw/ username / ) {
530             $arg->{$param} || croak( "Missing required '$param' argument" );
531             }
532              
533             my $url = qq(https://apps-apis.google.com/a/feeds/emailsettings/2.0/$self->{'domain'}/$arg->{'username'}/vacation);
534              
535             my ( $body );
536              
537             $body = $self->_xmlpre();
538              
539             $body .= qq( \n);
540              
541             $body .= $self->_xmlpost();
542              
543             my $result = $self->_request(
544             'method' => 'PUT',
545             'url' => $url,
546             'body' => $body
547             ) || return( 0 );
548              
549             return( 1 );
550             }
551              
552              
553              
554             sub enableSignature {
555             my $self = shift;
556              
557             my ( $arg );
558             %{$arg} = @_;
559              
560             map { $arg->{lc($_)} = $arg->{$_} } keys %{$arg};
561              
562             foreach my $param ( qw/ username signature / ) {
563             $arg->{$param} || croak( "Missing required '$param' argument" );
564             }
565              
566             my $url = qq(https://apps-apis.google.com/a/feeds/emailsettings/2.0/$self->{'domain'}/$arg->{'username'}/signature);
567              
568             my ( $body );
569              
570             $body = $self->_xmlpre();
571              
572             $body .= qq( \n);
573              
574             $body .= $self->_xmlpost();
575              
576             my $result = $self->_request(
577             'method' => 'PUT',
578             'url' => $url,
579             'body' => $body
580             ) || return( 0 );
581              
582             return( 1 );
583             }
584              
585             sub disableSignature {
586             my $self = shift;
587              
588             my ( $arg );
589             %{$arg} = @_;
590              
591             map { $arg->{lc($_)} = $arg->{$_} } keys %{$arg};
592              
593             foreach my $param ( qw/ username / ) {
594             $arg->{$param} || croak( "Missing required '$param' argument" );
595             }
596              
597             my $url = qq(https://apps-apis.google.com/a/feeds/emailsettings/2.0/$self->{'domain'}/$arg->{'username'}/signature);
598              
599             my ( $body );
600              
601             $body = $self->_xmlpre();
602              
603             $body .= qq( \n);
604              
605             $body .= $self->_xmlpost();
606              
607             my $result = $self->_request(
608             'method' => 'PUT',
609             'url' => $url,
610             'body' => $body
611             ) || return( 0 );
612              
613             return( 1 );
614             }
615              
616              
617              
618             sub setLanguage {
619             my $self = shift;
620              
621             my ( $arg );
622             %{$arg} = @_;
623              
624             map { $arg->{lc($_)} = $arg->{$_} } keys %{$arg};
625              
626             foreach my $param ( qw/ username language / ) {
627             $arg->{$param} || croak( "Missing required '$param' argument" );
628             }
629              
630             my $url = qq(https://apps-apis.google.com/a/feeds/emailsettings/2.0/$self->{'domain'}/$arg->{'username'}/language);
631              
632             my ( $body );
633              
634             $body = $self->_xmlpre();
635              
636             $body .= qq( \n);
637              
638             $body .= $self->_xmlpost();
639              
640             my $result = $self->_request(
641             'method' => 'PUT',
642             'url' => $url,
643             'body' => $body
644             ) || return( 0 );
645              
646             return( 1 );
647             }
648              
649              
650              
651             sub setPageSize {
652             my $self = shift;
653              
654             my ( $arg );
655             %{$arg} = @_;
656              
657             map { $arg->{lc($_)} = $arg->{$_} } keys %{$arg};
658              
659             foreach my $param ( qw/ username pagesize / ) {
660             $arg->{$param} || croak( "Missing required '$param' argument" );
661             }
662              
663             my $url = qq(https://apps-apis.google.com/a/feeds/emailsettings/2.0/$self->{'domain'}/$arg->{'username'}/general);
664              
665             my ( $body );
666              
667             $body = $self->_xmlpre();
668              
669             $body .= qq( \n);
670              
671             $body .= $self->_xmlpost();
672              
673             my $result = $self->_request(
674             'method' => 'PUT',
675             'url' => $url,
676             'body' => $body
677             ) || return( 0 );
678              
679             return( 1 );
680             }
681              
682              
683              
684             sub enableShortcuts {
685             my $self = shift;
686              
687             my ( $arg );
688             %{$arg} = @_;
689              
690             map { $arg->{lc($_)} = $arg->{$_} } keys %{$arg};
691              
692             foreach my $param ( qw/ username / ) {
693             $arg->{$param} || croak( "Missing required '$param' argument" );
694             }
695              
696             my $url = qq(https://apps-apis.google.com/a/feeds/emailsettings/2.0/$self->{'domain'}/$arg->{'username'}/general);
697              
698             my ( $body );
699              
700             $body = $self->_xmlpre();
701              
702             $body .= qq( \n);
703              
704             $body .= $self->_xmlpost();
705              
706             my $result = $self->_request(
707             'method' => 'PUT',
708             'url' => $url,
709             'body' => $body
710             ) || return( 0 );
711              
712             return( 1 );
713             }
714              
715             sub disableShortcuts {
716             my $self = shift;
717              
718             my ( $arg );
719             %{$arg} = @_;
720              
721             map { $arg->{lc($_)} = $arg->{$_} } keys %{$arg};
722              
723             foreach my $param ( qw/ username / ) {
724             $arg->{$param} || croak( "Missing required '$param' argument" );
725             }
726              
727             my $url = qq(https://apps-apis.google.com/a/feeds/emailsettings/2.0/$self->{'domain'}/$arg->{'username'}/general);
728              
729             my ( $body );
730              
731             $body = $self->_xmlpre();
732              
733             $body .= qq( \n);
734              
735             $body .= $self->_xmlpost();
736              
737             my $result = $self->_request(
738             'method' => 'PUT',
739             'url' => $url,
740             'body' => $body
741             ) || return( 0 );
742              
743             return( 1 );
744             }
745              
746              
747              
748             sub enableArrows {
749             my $self = shift;
750              
751             my ( $arg );
752             %{$arg} = @_;
753              
754             map { $arg->{lc($_)} = $arg->{$_} } keys %{$arg};
755              
756             foreach my $param ( qw/ username / ) {
757             $arg->{$param} || croak( "Missing required '$param' argument" );
758             }
759              
760             my $url = qq(https://apps-apis.google.com/a/feeds/emailsettings/2.0/$self->{'domain'}/$arg->{'username'}/general);
761              
762             my ( $body );
763              
764             $body = $self->_xmlpre();
765              
766             $body .= qq( \n);
767              
768             $body .= $self->_xmlpost();
769              
770             my $result = $self->_request(
771             'method' => 'PUT',
772             'url' => $url,
773             'body' => $body
774             ) || return( 0 );
775              
776             return( 1 );
777             }
778              
779             sub disableArrows {
780             my $self = shift;
781              
782             my ( $arg );
783             %{$arg} = @_;
784              
785             map { $arg->{lc($_)} = $arg->{$_} } keys %{$arg};
786              
787             foreach my $param ( qw/ username / ) {
788             $arg->{$param} || croak( "Missing required '$param' argument" );
789             }
790              
791             my $url = qq(https://apps-apis.google.com/a/feeds/emailsettings/2.0/$self->{'domain'}/$arg->{'username'}/general);
792              
793             my ( $body );
794              
795             $body = $self->_xmlpre();
796              
797             $body .= qq( \n);
798              
799             $body .= $self->_xmlpost();
800              
801             my $result = $self->_request(
802             'method' => 'PUT',
803             'url' => $url,
804             'body' => $body
805             ) || return( 0 );
806              
807             return( 1 );
808             }
809              
810              
811              
812             sub enableSnippets {
813             my $self = shift;
814              
815             my ( $arg );
816             %{$arg} = @_;
817              
818             map { $arg->{lc($_)} = $arg->{$_} } keys %{$arg};
819              
820             foreach my $param ( qw/ username / ) {
821             $arg->{$param} || croak( "Missing required '$param' argument" );
822             }
823              
824             my $url = qq(https://apps-apis.google.com/a/feeds/emailsettings/2.0/$self->{'domain'}/$arg->{'username'}/general);
825              
826             my ( $body );
827              
828             $body = $self->_xmlpre();
829              
830             $body .= qq( \n);
831              
832             $body .= $self->_xmlpost();
833              
834             my $result = $self->_request(
835             'method' => 'PUT',
836             'url' => $url,
837             'body' => $body
838             ) || return( 0 );
839              
840             return( 1 );
841             }
842              
843             sub disableSnippets {
844             my $self = shift;
845              
846             my ( $arg );
847             %{$arg} = @_;
848              
849             map { $arg->{lc($_)} = $arg->{$_} } keys %{$arg};
850              
851             foreach my $param ( qw/ username / ) {
852             $arg->{$param} || croak( "Missing required '$param' argument" );
853             }
854              
855             my $url = qq(https://apps-apis.google.com/a/feeds/emailsettings/2.0/$self->{'domain'}/$arg->{'username'}/general);
856              
857             my ( $body );
858              
859             $body = $self->_xmlpre();
860              
861             $body .= qq( \n);
862              
863             $body .= $self->_xmlpost();
864              
865             my $result = $self->_request(
866             'method' => 'PUT',
867             'url' => $url,
868             'body' => $body
869             ) || return( 0 );
870              
871             return( 1 );
872             }
873              
874              
875              
876             sub _request {
877             my $self = shift;
878              
879             $self->{'token'}
880             || croak qq(Authenticate first!);
881              
882             my ( $arg );
883             %{$arg} = @_;
884              
885             my $request = HTTP::Request->new( $arg->{'method'} => $arg->{'url'} );
886              
887             $request->header( 'Content-Type' => 'application/atom+xml' );
888             $request->header( 'Authorization' => 'GoogleLogin auth=' . $self->{'token'} );
889              
890             if ( $arg->{'body'} ) {
891             $request->header( 'Content-Length' => length( $arg->{'body'} ) );
892             $request->content( $arg->{'body'} );
893             }
894              
895             my $response = $self->{'lwp'}->request( $request );
896              
897             $response->is_success() || return( 0 );
898             $response->content() || return( 1 );
899              
900             return( $self->{'xml'}->XMLin( $response->content() ) );
901             }
902              
903              
904              
905             sub _xmlpre {
906             ( my $xml = << ' END' ) =~ s/^\s+//gm;
907            
908            
909             END
910              
911             return( $xml );
912             }
913              
914             sub _xmlpost {
915             ( my $xml = << ' END' ) =~ s/^\s+//gm;
916            
917             END
918              
919             return( $xml );
920             }
921              
922              
923              
924             1;
925