+ return $srs;
+}
+
+=item get_status
+
+Returns a reference to a hashref containing information on the domain's status. The keys
+defined depend on the status.
+
+'unregistered' means the domain is not registered.
+
+Otherwise, if the domain is in an asynchronous operation such as a transfer, returns the state
+of that operation.
+
+Otherwise returns a value indicating if the domain can be managed through our reseller account.
+
+=cut
+
+sub get_status {
+ my ( $self, $svc_domain ) = @_;
+ my $rslt = {};
+
+ eval "use Net::OpenSRS;";
+ return $@ if $@;
+
+ my $srs = $self->get_srs;
+
+ if ($srs->is_available( $svc_domain->domain )) {
+ $rslt->{'unregistered'} = 1;
+ } else {
+ $rslt = $srs->check_transfer( $svc_domain->domain );
+ if (defined($rslt->{'reason'})) {
+ my $rv = $srs->make_request(
+ {
+ action => 'belongs_to_rsp',
+ object => 'domain',
+ attributes => {
+ domain => $svc_domain->domain
+ }
+ }
+ );
+ if ($rv) {
+ $self->_set_response;
+ if ( $rv->{attributes}->{'domain_expdate'} ) {
+ $rslt->{'expdate'} = $rv->{attributes}->{'domain_expdate'};
+ }
+ }
+ }
+ }
+
+ return $rslt; # Success
+}
+
+=item register
+
+Attempts to register the domain through the reseller account associated with this export.
+
+Like most export functions, returns an error message on failure or undef on success.
+
+=cut
+
+sub register {
+ my ( $self, $svc_domain, $years ) = @_;
+
+ return "Net::OpenSRS does not support period other than 1 year" if $years != 1;
+
+ eval "use Net::OpenSRS;";
+ return $@ if $@;
+
+ my $err = $self->is_supported_domain( $svc_domain );
+ return $err if $err;
+
+ my $cust_main = $svc_domain->cust_svc->cust_pkg->cust_main;
+
+ my $c = gen_contact_info($cust_main);
+
+ $err = validate_contact_info($c);
+ return $err if $err;
+
+ my $srs = $self->get_srs;