[MOBY-dev] malformed authURI [solved]

Jason Stewart jason.e.stewart at gmail.com
Sat May 24 11:13:37 UTC 2008


Hey Mark,

2008/5/23 Mark Wilkinson <markw at illuminae.com>:
> the authURI is really intended to be the authority's domain name... so
> whatever regexp/error message changes you think will indicate that please go
> ahead :-)

The regex checking for email and authURI is the same in three
different places so I thought I would centralize it to use a
subroutine that dies on error - so the code can be shared (in case the
messages or the regex's want to get changed later.

The subs look like this:

sub _validateAuthURI {
    my $auth = shift @_;

    my $error = "";
    if ($auth =~ '[/:]') {
	$error = "has a colon or a slash - must not have an http:// prefix,
and must not have trailing path info";
    } elsif ($auth =~ /\./) {
	$error = "must take the form NNN.NNN.NNN";
    }
    die "Malformed authURI - $error" if $error;
}

sub _validateEmail {
    my $email = shift @_;

    my $error = "";
    if ($email !~ /\S\@\S+\.\S+/) {
	$error = "Malformed email - must be a valid email address of the form
name\@organization.foo";
    }
    die $error if $error;
}

and they replace this code:

	return &_error( "Malformed authURI - must not have an http:// prefix", "" )
	  if $AuthURI =~ '[/:]';
	return &_error( "Malformed authURI - must take the form NNN.NNN.NNN", "" )
	  unless $AuthURI =~ /\./;
	return &_error("Malformed email - must be a valid email address of
the form name\@organization.foo","")
	  unless $contactEmail =~ /\S\@\S+\.\S+/;

with this:

	eval {_validateAuthURI($auth)};
	&_error($@) if $@;
	eval {_validateEmail($email)};
	&_error($@) if $@;

Does that look acceptable?

Mark and Eddie, I had one question about using that code in
registerService() - there seems to be two different error handling
strategies going on - there is an $error variable that is being added
to if any payload errors are found, but then authURI and email
validation causes _error() to be called immediately ... I was
wondering if this was accidental or on purpose? Should I changed the
authURI and email validation failure to also add to $error instead of
calling _error() immediately?

Cheers, jas.



More information about the MOBY-dev mailing list