Domain-Register-DomainShare

 view release on metacpan or  search on metacpan

lib/Domain/Register/DomainShare.pm  view on Meta::CPAN

    $self->{_client} = REST::Client->new({ host => 'https://api.domainshare.tk', timeout => 10 });
    
    return $self;
}

sub ping {
    my ($self) = @_;
    $self->_make_request('ping', undef, [], {});
}

sub availability_check {
    my ($self, $args) = @_;
    $self->_make_request('availability_check', undef, ['email', 'password', 'domainname'], $args);
}

sub register {
    my ($self, $args) = @_;
    $self->_make_request('register', 'registration', ['email', 'password', 'domainname', 'enduseremail'], $args);
}

sub renew {
    my ($self, $args) = @_;
    $self->_make_request('renew', undef, ['email', 'password', 'domainname'], $args);
}

sub host_registration {
    my ($self, $args) = @_;
    $self->_make_request('host_registration', undef, ['email', 'password', 'hostname', 'ipaddress'], $args);
}

sub host_removal {
    my ($self, $args) = @_;
    $self->_make_request('host_removal', undef, ['email', 'password', 'hostname'], $args);
}

sub host_list {
    my ($self, $args) = @_;
    $self->_make_request('host_list', undef, ['email', 'password', 'domainname'], $args);
}

sub modify {
    my ($self, $args) = @_;
    $self->_make_request('modify', undef, ['email', 'password', 'domainname'], $args);
}

sub resend_email {
    my ($self, $args) = @_;
    $self->_make_request('resend_email', undef, ['email', 'password', 'domainname'], $args);
}

sub domain_deactivate {
    my ($self, $args) = @_;
    $self->_make_request('domain_deactivate', undef, ['email', 'password', 'domainname', 'reason'], $args);
}

sub domain_reactivate {
    my ($self, $args) = @_;
    $self->_make_request('domain_reactivate', undef, ['email', 'password', 'domainname'], $args);
}

sub update_parking {
    my ($self, $args) = @_;
    $self->_make_request('update_parking', undef, ['email', 'password', 'domainname'], $args);
}


sub _make_request {
    my ($self, $name, $xmlname, $fields, $args) = @_;
    $xmlname ||= $name;

    my ($status, $errors) = check_mandatory_fields($args, @$fields);
    return ($status, $errors) unless ($status);
    $self->{_client}->POST("/$name", prepare_post_body($args) );

    print $self->{_client}->responseContent() if $::DotTKDebug;
    my $xc = XMLin($self->{_client}->responseContent());

    return parse_server_reply($xc, $xmlname);
}

sub prepare_post_body {
  my ($args) = @_;
  join ( '&', map {
    my $key = $_;
    if (ref $args->{$key} eq 'ARRAY') {
      my @a = map { URI::Escape::uri_escape($key) . '=' . URI::Escape::uri_escape($_) } @{$args->{$key}};
    } else {
      URI::Escape::uri_escape($key) . '=' . URI::Escape::uri_escape($args->{$_});
    }
    ;
  } (keys %$args));
  #join ( '&', (map { URI::Escape::uri_escape($_) . '=' . URI::Escape::uri_escape($args->{$_}) } keys %$args));
}

sub check_mandatory_fields
{
  my ( $args, @names) = @_;
  for my $name (@names) {
    if ((!defined($args->{$name})) || (length($args->{$name}) == 0)) {
      return (0, { type => "Input error", reason => "$name is mandatory"} );
    }
  }
  return (1, undef);
}

sub parse_server_reply
{
  my ($xc, $namespace) = @_;
  if ($xc->{status} eq 'OK') {
    return (1, values_for($xc, $namespace));
  } else {
    return (0, { type => "Server Error", reason => $xc->{reason} });
  }
}

sub values_for
{
  my ($xc, $namespace) = @_;
  $xc->{"partner_$namespace"};
}



( run in 0.806 second using v1.01-cache-2.11-cpan-39bf76dae61 )