The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
package App1::PickDomain;

=head1 NAME

App1::PickDomain - handle this step of the App1 app

=cut

use strict;
use warnings;
use base qw(App1);

sub hash_swap {
    my $self = shift;
    return {
        remote_addr => $ENV{'REMOTE_ADDR'},
        time        => scalar(localtime),
    };
}

sub hash_validation {
    return {
        'group no_alert'   => 1,
        'group no_confirm' => 1,
        domain => {
            required   => 1,
            to_lower_case => 1,
            type       => 'DOMAIN',
            type_error => 'Please enter a valid domain',
        },
    };
}

sub finalize {
    my $self = shift;
    my $domain = $self->form->{'domain'};

    # contrived "check" for availability
    # in theory - these checks would also cache with something like memcache
    if ($domain =~ /^(\w+)\.com$/) { # for this test - .com isn't available
        $self->stash->{'domain_prefix'} = $1;
    } else {
        $self->stash->{'domain_available'} = 1;
    }

    return 1;
}

1;