aboutsummaryrefslogtreecommitdiffstats
path: root/lib/Fripost/Schema/Util.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Fripost/Schema/Util.pm')
-rw-r--r--lib/Fripost/Schema/Util.pm64
1 files changed, 61 insertions, 3 deletions
diff --git a/lib/Fripost/Schema/Util.pm b/lib/Fripost/Schema/Util.pm
index 2692421..0f6821c 100644
--- a/lib/Fripost/Schema/Util.pm
+++ b/lib/Fripost/Schema/Util.pm
@@ -13,9 +13,9 @@ use utf8;
use Exporter 'import';
our @EXPORT_OK = qw /concat get_perms explode
- must_attrs email_valid
- canonical_dn ldap_explode_dn
- split_addr/;
+ must_attrs email_valid split_addr
+ canonical_dn ldap_explode_dn ldap_error
+ assert softdie/;
use Email::Valid;
use Net::IDN::Encode;
use Net::LDAP::Util;
@@ -155,6 +155,64 @@ sub split_addr {
split /\@/, $addr, 2;
}
+sub ldap_error {
+ my $mesg = shift;
+ my %options = @_;
+
+ my $error;
+ if (defined $options{'-die'}) {
+ if (ref $options{'-die'} eq 'HASH') {
+ if (exists $options{'-die'}->{$mesg->code}) {
+ $error = $options{'-die'}->{$mesg->code};
+ }
+ elsif (exists $options{'-die'}->{_}) {
+ $error = $options{'-die'}->{_};
+ }
+ else {
+ $error = $mesg->error;
+ }
+ }
+ else {
+ $error = $options{'-die'} if $mesg->code;
+ }
+ }
+ else {
+ $error = $mesg->error if $mesg->code;
+ }
+
+ return $mesg unless defined $error;
+ return unless $error;
+
+ if (defined $options{'-error'}) {
+ ${$options{'-error'}} = $error;
+ }
+ else {
+ die $error, "\n";
+ }
+}
+
+sub assert {
+ my $what = shift;
+ my %options = @_;
+
+ return $what if defined $what;
+ die "Not defined.\n" unless defined $options{'-die'};
+
+ if (defined $options{'-error'}) {
+ ${$options{'-error'}} = $options{'-die'};
+ }
+ else {
+ die $options{'-die'}, "\n";
+ }
+}
+
+sub softdie {
+ my $mesg = shift;
+ my %options = @_;
+
+ $options{'-die'} = $mesg;
+ &assert (undef, %options);
+}
=head1 AUTHOR