IO-EPP

 view release on metacpan or  search on metacpan

lib/IO/EPP/CNic.pm  view on Meta::CPAN


    return $answ;
}

=head1 METHODS

Further overlap functions where the provider has features

=head2 login

Ext params for login,

INPUT: new password for change

=cut

sub login {
    my ( $self, $pw ) = @_;

    my $svcs = '
    <objURI>urn:ietf:params:xml:ns:contact-1.0</objURI>
    <objURI>urn:ietf:params:xml:ns:domain-1.0</objURI>
    <objURI>urn:ietf:params:xml:ns:host-1.0</objURI>';

    my $extension = '
     <extURI>urn:ietf:params:xml:ns:rgp-1.0</extURI>
     <extURI>urn:ietf:params:xml:ns:secDNS-1.1</extURI>
     <extURI>urn:ietf:params:xml:ns:idn-1.0</extURI>
     <extURI>urn:ietf:params:xml:ns:fee-0.5</extURI>
     <extURI>urn:ietf:params:xml:ns:launch-1.0</extURI>
     <extURI>urn:ietf:params:xml:ns:regtype-0.1</extURI>
     <extURI>urn:ietf:params:xml:ns:auxcontact-0.1</extURI>';

    return $self->SUPER::login( $pw, $svcs, $extension );
}

sub create_contact {
    my ( $self, $params ) = @_;

    $params->{company} =~ s/&/&amp;/g;

    $params->{addr} = [ $params->{addr} ] unless ref $params->{addr};
    s/&/&amp;/g for @{$params->{addr}};

    $params->{cont_id} = IO::EPP::Base::gen_id( 16 );

    my $visible = $$params{pp_flag} ? 0 : 1;

    $params->{authinfo} ||= IO::EPP::Base::gen_pw( 16 );

    $params->{pp_ext} = '
    <contact:disclose flag="'.$visible.'">
     <contact:voice/>
     <contact:email/>
    </contact:disclose>';

    return $self->SUPER::create_contact( $params );
}


sub update_contact {
    my ( $self, $params ) = @_;

    if ( ref $params->{chg} ) {
        $params->{chg}{company} =~ s/&/&amp;/g if $params->{chg}{company};

        $params->{chg}{addr} = [ $params->{chg}{addr} ] unless ref $params->{chg}{addr};
        s/&/&amp;/g for @{$params->{chg}{addr}};

        $params->{chg}{authinfo} ||= IO::EPP::Base::gen_pw( 16 );
    }

    my $visible = $$params{pp_flag} ? 0 : 1;

    $params->{pp_ext} = '
    <contact:disclose flag="'.$visible.'">
     <contact:voice/>
     <contact:email/>
    </contact:disclose>';

    return $self->SUPER::update_contact( $params );
}


sub update_ns {
    my ( $self, $params ) = @_;

    $params->{no_empty_chg} = 1;

    return $self->SUPER::update_ns( $params );
}

=head2 check_premium

Get prices for premium domains

=cut

sub check_premium {
    my ( $self, $params ) = @_;

    $params->{domains} = [ delete $params->{dname} ] if $params->{dname};

    return ( 0, 0, 'no domains' ) unless $params->{domains} && scalar( @{$params->{domains}} );

    my $dms = '';
    foreach my $dm ( @{$params->{domains}} ) {
        $dms .= qq|    <fee:domain>
     <fee:name>$dm</fee:name>
     <fee:currency>USD</fee:currency>
     <fee:command>create</fee:command>
     <fee:period unit="y">1</fee:period>
    </fee:domain>\n|;
    }

    $params->{extension} = qq|   <fee:check xmlns:fee="urn:ietf:params:xml:ns:fee-0.5">\n$dms   </fee:check>\n|;

    return $self->SUPER::check_domains( $params );
}


# Get info on Claims Notice
sub check_claims {
    my ( $self, $params ) = @_;

    $params->{domains} = [ delete $params->{dname} ] if $params->{dname};

    $params->{extension} =
'   <launch:check xmlns:launch="urn:ietf:params:xml:ns:launch-1.0" type="claims">
    <launch:phase>claims</launch:phase>
   </launch:check>
';

    return $self->SUPER::check_domains( $params );
}

=head1 create_domain

CentralNic requires a domain price for each registration, need keys:
C<cost> -- the price of a domain, if the domain is registered for several years, the first year is the price of registration, and the remaining year is the price of renewal;
C<currency> -- price currency.

For IDN domains you need to specify C<idn_lang> -- the code page of the name and C<uname> -- the name itself in utf8

=cut



( run in 3.862 seconds using v1.01-cache-2.11-cpan-fe3c2283af0 )