NAME
WWW::eNom::Contact - Representation of eNom Contact
SYNOPSIS
use
strict;
use
warnings;
use
WWW::eNom;
use
WWW::eNom::Contact;
my
$api
= WWW::eNom->new( ... );
my
$contact
= WWW::eNom::Contact->new( ... );
# New Contact Object
my
$contact
= WWW::eNom::Contact->new(
first_name
=>
'Ada'
,
last_name
=>
'Byron'
,
organization_name
=>
'Lovelace'
,
# Optional
job_title
=>
'Countess'
,
# Optional if no organization_name, otherwise required
address1
=>
'University of London'
,
address2
=>
'Analytical Engine Dept'
,
# Optional
city
=>
'London'
,
#state => 'Texas', # Optional, primarily used for US Contacts
country
=>
'GB'
,
zipcode
=>
'WC1E 7HU'
,
=>
'ada.byron@lovelace.com'
,
phone_number
=>
'18005551212'
,
fax_number
=>
'18005551212'
,
# Optional if no organization_name, otherwise required
);
# Contact Creation
my
$registrant_contact_creation_payload
=
$contact
->construct_creation_request(
'Registrant'
);
my
$admin_contact_creation_payload
=
$contact
->construct_creation_request(
'Admin'
);
my
$technical_contact_creation_payload
=
$contact
->construct_creation_request(
'Tech'
);
my
$billing_contact_creation_payload
=
$contact
->construct_creation_request(
'AuxBilling'
);
my
$response
=
$api
->submit({
method
=>
'Purchase'
,
params
=> {
...,
%{
$registrant_contact_creation_payload
},
%{
$admin_contact_creation_payload
},
%{
$technical_contact_creation_payload
},
%{
$billing_contact_creation_payload
},
}
});
# Contact Retrieval
my
$response
=
$self
->submit({
method
=>
'GetContacts'
,
params
=> {
Domain
=>
$domain_name
}
});
my
$contacts
;
for
my
$contact_type
(
qw( Registrant Admin Tech AuxBilling )
) {
my
$raw_contact_response
=
$response
->{GetContacts}{
$contact_type
};
my
$common_contact_response
;
for
my
$field
(
keys
%{
$raw_contact_response
} ) {
if
(
$field
!~ m/
$contact_type
/ ) {
next
;
}
$common_contact_response
->{
substr
(
$field
,
length
(
$contact_type
) ) } =
$raw_contact_response
->{
$field
} // { };
}
$contacts
->{
$contact_type
} = WWW::eNom::Contact->construct_from_response(
$common_contact_response
);
}
DESCRIPTION
Representation of an eNom Contact.
ATTRIBUTES
first_name
last_name
organization_name
Predicate of has_organization_name and clearer of clear_organization_name.
NOTE If the organization_name is specified then the previously optional job_title and fax_number attributes become required.
job_title
Predicate of has_job_title and clearer of clear_job_title.
NOTE this field is required if an organization_name was provided.
address1
address2
Predicate of has_address2 and clearer of clear_address2
city
state
Required for Contacts with a US Address, the full name of the state so Texas rather than TX should be used.
Predicate of has_state and clearer of clear_state.
country
The ISO-3166-1 alpha-2 (two character country code) is preferred. You can use a full country name, just keep in mind your response from eNom will be the country code.
zipcode
phone_number
An instance of WWW::eNom::PhoneNumber, but this will coerce from a Number::Phone object or a string based representation of the phone number. This will also stringify to a human readable phone number.
fax_number
An instance of WWW::eNom::PhoneNumber, but this will coerce from a Number::Phone object or a string based representation of the phone number. This will also stringify to a human readable phone number.
Predicate of has_fax_number and clearer of clear_fax_number.
NOTE this field is required if an organization_name was provided.
METHODS
construct_creation_request
my
$api
= WWW::eNom->new( ... );
my
$contact
= WWW::eNom::Contact->new( ... );
my
$registrant_contact_creation_payload
=
$contact
->construct_creation_request(
'Registrant'
);
my
$admin_contact_creation_payload
=
$contact
->construct_creation_request(
'Admin'
);
my
$technical_contact_creation_payload
=
$contact
->construct_creation_request(
'Tech'
);
my
$billing_contact_creation_payload
=
$contact
->construct_creation_request(
'AuxBilling'
);
my
$response
=
$api
->submit({
method
=>
'Purchase'
,
params
=> {
...,
%{
$registrant_contact_creation_payload
},
%{
$admin_contact_creation_payload
},
%{
$technical_contact_creation_payload
},
%{
$billing_contact_creation_payload
},
}
});
Converts $self into a HashRef suitable for creation of a contact with eNom. Accepts a string that must be one of the following:
- Registrant
- Admin
- Tech
- AuxBilling
-
AuxBilling is what eNom calls the "Billing" contact for WHOIS data since the Billing contact is actually the reseller.
construct_from_response
my
$response
=
$api
->submit({
method
=>
'GetContacts'
,
params
=> {
Domain
=>
$domain_name
}
});
my
$contacts
;
for
my
$contact_type
(
qw( Registrant Admin Tech AuxBilling )
) {
my
$raw_contact_response
=
$response
->{GetContacts}{
$contact_type
};
my
$common_contact_response
;
for
my
$field
(
keys
%{
$raw_contact_response
} ) {
if
(
$field
!~ m/
$contact_type
/ ) {
next
;
}
$common_contact_response
->{
substr
(
$field
,
length
(
$contact_type
) ) } =
$raw_contact_response
->{
$field
} // { };
}
$contacts
->{
$contact_type
} = WWW::eNom::Contact->construct_from_response(
$common_contact_response
);
}
Getting a contact from a response is a bit more involved then other data marshallers. This is because the fields are all prefixed with the contact type. Rather than having just FirstName the response will contain a field like TechFirstName. This must be processed off before feeding in the HashRef of the response into the construct_from_response method. Returned is an instance of self.