use strict;
use vars qw(%info %SIG $CACHE);
use Tie::IxHash;
+
use base 'FS::part_export';
tie my %options, 'Tie::IxHash',
# admin logins.
%info = (
- 'svc' => 'svc_acct',
- 'desc' => 'Google hosted mail',
- 'options' => \%options,
- 'nodomain' => 'Y',
+ 'svc' => 'svc_acct',
+ 'desc' => 'Google hosted mail',
+ 'options' => \%options,
+ 'nodomain' => 'Y',
+ 'no_machine' => 1,
+ 'default_svc_class' => 'Email',
'notes' => <<'END'
Export accounts to the Google Provisioning API. Requires
REST::Google::Apps::Provisioning from CPAN.
);
}
-sub captcha_url {
+sub auth_error {
my $self = shift;
my $google = $self->google_handle;
- if (exists ($google->{'captcha_url'}) ) {
- return 'http://www.google.com/accounts/'.$google->{'captcha_url'};
- }
- else {
- return '';
+ if ( $google->{'error'} ) {
+ my $url = $google->{'captcha_url'} || '';
+ $url = "http://www.google.com/accounts/$url" if $url;
+ return { 'captcha_url' => $url,
+ 'message' =>
+ 'Unable to connect to the Google API: '.$google->{'error'}.'.',
+ };
}
+ return; #nothing on success
}
sub captcha_auth {
sub google_handle {
my $self = shift;
- my $class = 'REST::Google::Apps::Provisioning';
my %opt = @_;
- eval "use $class";
-
- die "failed to load $class\n" if $@;
+ my @class = (
+ 'REST::Google::Apps::Provisioning',
+ 'Cache::FileCache',
+ 'LWP::UserAgent 5.815',
+ );
+ foreach (@class) {
+ eval "use $_";
+ die "failed to load $_\n" if $@;
+ }
$CACHE ||= new Cache::FileCache( {
'namespace' => __PACKAGE__,
'cache_root' => "$FS::UID::cache_dir/cache.$FS::UID::datasrc",
} );
- my $google = $class->new( 'domain' => $self->option('domain') );
+ my $google = REST::Google::Apps::Provisioning->new(
+ 'domain' => $self->option('domain')
+ );
# REST::Google::Apps::Provisioning lacks error reporting. We deal
# with that by hooking HTTP::Response to throw a useful fatal error