From e9dd75e5eaf8c79ea86cd53058d0ed5022ead448 Mon Sep 17 00:00:00 2001
From: Guillaume Rousse <guillaume.rousse@renater.fr>
Date: Thu, 26 Jul 2018 15:41:44 +0200
Subject: [PATCH] load barely used modules dynamically

---
 lib/AccountManager/App.pm | 13 +++++++------
 1 file changed, 7 insertions(+), 6 deletions(-)

diff --git a/lib/AccountManager/App.pm b/lib/AccountManager/App.pm
index dac6a93..3779ca8 100644
--- a/lib/AccountManager/App.pm
+++ b/lib/AccountManager/App.pm
@@ -4,15 +4,11 @@ use strict;
 use warnings;
 
 use CGI;
-use DateTime;
 use English qw(-no_match_vars);
-use Encode;
 use Log::Any::Adapter;
 use List::MoreUtils qw(uniq);
-use MIME::Lite;
 use Template;
 use Template::Constants qw(:chomp);
-use Text::CSV;
 
 use AccountManager::Account;
 use AccountManager::Account::Manager;
@@ -553,6 +549,7 @@ sub req_complete_challenge {
     }
 
     # compute a new token
+    eval "require DateTime";
     my $validity_period =
         $self->{configuration}->{service}->{tokens_validity_period};
     my $token = AccountManager::Token->new(
@@ -605,10 +602,13 @@ sub req_complete_challenge {
     $tt2->process('send_authentication_token.tt2.html', $data, \$html_content);
 
     # wrap in message
+    eval "require MIME::Lite";
+    eval "require Encode";
+
     my $message = MIME::Lite->new(
         From    => sprintf('eduGAIN Access Check <%s>', $self->{configuration}->{mailer}->{from}),
         To      => $self->{in}->{email},
-        Subject => encode("MIME-Header", sprintf('[eduGAIN Access Check] %s', $self->{lh}->maketext("Test accounts request"))),
+        Subject => Encode::encode("MIME-Header", sprintf('[eduGAIN Access Check] %s', $self->{lh}->maketext("Test accounts request"))),
         Type    => 'multipart/alternative',
     );
     $message->attach(
@@ -737,7 +737,7 @@ sub req_create_accounts {
         $self->{configuration}->{$entity}->{account_validity_period} ||
         $self->{configuration}->{service}->{account_validity_period};
 
-
+    eval "require DateTime";
     my $download_token = AccountManager::Token->new(
         db              => $self->{db},
         email_address   => $self->{in}->{email},
@@ -923,6 +923,7 @@ sub req_download_accounts {
         -content_disposition => 'attachment; filename="accounts.csv"'
     );
 
+    eval "require Text::CSV";
     my $csv = Text::CSV->new ({ binary => 1, eol => "\r\n", quote_space => 0 });
     $csv->print(\*STDOUT, [ qw/
         username
-- 
GitLab