2021-07-22 14:01:46 +00:00
|
|
|
use epp_client::{epp::request::generate_client_tr_id, connection::client::EppClient, connection, epp::xml::EppXml};
|
2021-07-22 18:41:22 +00:00
|
|
|
use epp_client::epp::object::StringValueTrait;
|
2021-07-22 17:12:50 +00:00
|
|
|
use epp_client::epp::object::data::ContactStatus;
|
2021-07-22 10:35:20 +00:00
|
|
|
use epp_client::epp::request::domain::check::EppDomainCheck;
|
|
|
|
use epp_client::epp::response::domain::check::EppDomainCheckResponse;
|
|
|
|
use epp_client::epp::request::contact::check::EppContactCheck;
|
|
|
|
use epp_client::epp::response::contact::check::EppContactCheckResponse;
|
|
|
|
use epp_client::epp::object::data::{PostalInfo, Address, Phone};
|
|
|
|
use epp_client::epp::request::contact::create::EppContactCreate;
|
2021-07-22 15:08:01 +00:00
|
|
|
use epp_client::epp::response::contact::create::EppContactCreateResponse;
|
2021-07-22 17:12:50 +00:00
|
|
|
use epp_client::epp::request::contact::info::EppContactInfo;
|
|
|
|
use epp_client::epp::response::contact::info::EppContactInfoResponse;
|
|
|
|
use epp_client::epp::request::contact::update::EppContactUpdate;
|
|
|
|
use epp_client::epp::response::contact::update::EppContactUpdateResponse;
|
|
|
|
use epp_client::epp::request::contact::delete::EppContactDelete;
|
|
|
|
use epp_client::epp::response::contact::delete::EppContactDeleteResponse;
|
2021-07-22 18:41:22 +00:00
|
|
|
use epp_client::epp::request::domain::create::DomainContact;
|
|
|
|
use epp_client::epp::request::domain::create::{HostObjList, HostAttrList};
|
|
|
|
use epp_client::epp::request::domain::create::EppDomainCreate;
|
|
|
|
//use epp_client::epp::response::domain::create::EppDomainCreateResponse;
|
2021-07-22 10:35:20 +00:00
|
|
|
|
|
|
|
async fn check_domains(client: &mut EppClient) {
|
|
|
|
let domains = vec!["eppdev.com", "hexonet.net"];
|
|
|
|
let domain_check = EppDomainCheck::new(domains, generate_client_tr_id("eppdev").unwrap().as_str());
|
|
|
|
|
|
|
|
client.transact::<EppDomainCheck, EppDomainCheckResponse>(&domain_check).await.unwrap();
|
|
|
|
}
|
|
|
|
|
|
|
|
async fn check_contacts(client: &mut EppClient) {
|
|
|
|
let contacts = vec!["eppdev-contact-1", "eppdev-contact-2"];
|
|
|
|
let contact_check = EppContactCheck::new(contacts, generate_client_tr_id("eppdev").unwrap().as_str());
|
|
|
|
|
|
|
|
client.transact::<_, EppContactCheckResponse>(&contact_check).await.unwrap();
|
|
|
|
}
|
|
|
|
|
2021-07-22 15:08:01 +00:00
|
|
|
async fn create_contact(client: &mut EppClient) {
|
2021-07-22 10:35:20 +00:00
|
|
|
let street = vec!["58", "Orchid Road"];
|
|
|
|
let address = Address::new(street, "Paris", "Paris", "392374", "FR");
|
|
|
|
let postal_info = PostalInfo::new("int", "John Doe", "Acme Widgets", address);
|
|
|
|
let mut voice = Phone::new("+47.47237942");
|
|
|
|
voice.set_extension("123");
|
|
|
|
let mut fax = Phone::new("+47.86698799");
|
|
|
|
fax.set_extension("677");
|
|
|
|
|
|
|
|
let mut contact_create = EppContactCreate::new("eppdev-contact-1", "contact@eppdev.net", postal_info, voice, "eppdev-387323", generate_client_tr_id("eppdev").unwrap().as_str());
|
|
|
|
contact_create.set_fax(fax);
|
|
|
|
|
2021-07-22 15:08:01 +00:00
|
|
|
// println!("xml: {}", contact_create.serialize().unwrap());
|
2021-07-22 10:35:20 +00:00
|
|
|
|
2021-07-22 15:08:01 +00:00
|
|
|
client.transact::<_, EppContactCreateResponse>(&contact_create).await.unwrap();
|
2021-07-22 10:35:20 +00:00
|
|
|
}
|
|
|
|
|
2021-07-22 17:12:50 +00:00
|
|
|
async fn update_contact(client: &mut EppClient) {
|
|
|
|
let contact_info = EppContactInfo::new("eppdev-contact-1", "eppdev-387323", generate_client_tr_id("eppdev").unwrap().as_str());
|
|
|
|
let contact_info_response = client.transact::<_, EppContactInfoResponse>(&contact_info).await.unwrap();
|
|
|
|
|
|
|
|
let mut contact_update = EppContactUpdate::new("eppdev-contact-1", generate_client_tr_id("eppdev").unwrap().as_str());
|
|
|
|
let contact_info_res_data = contact_info_response.data.res_data.unwrap();
|
|
|
|
contact_update.set_info("newemail@eppdev.net", contact_info_res_data.info_data.postal_info, contact_info_res_data.info_data.voice, contact_info_res_data.info_data.auth_info.password.to_string().as_str());
|
|
|
|
let add_statuses = vec![ContactStatus { status: "clientTransferProhibited".to_string() }];
|
|
|
|
contact_update.remove_statuses(add_statuses);
|
|
|
|
|
|
|
|
// println!("{}", contact_update.serialize().unwrap());
|
|
|
|
|
|
|
|
client.transact::<_, EppContactUpdateResponse>(&contact_update).await.unwrap();
|
|
|
|
}
|
|
|
|
|
|
|
|
async fn query_contact(client: &mut EppClient) {
|
|
|
|
let mut contact_info = EppContactInfo::new("eppdev-contact-1", "eppdev-387323", generate_client_tr_id("eppdev").unwrap().as_str());
|
|
|
|
|
|
|
|
client.transact::<_, EppContactInfoResponse>(&contact_info).await.unwrap();
|
|
|
|
}
|
|
|
|
|
|
|
|
async fn delete_contact(client: &mut EppClient) {
|
|
|
|
let contact_delete = EppContactDelete::new("eppdev-contact-1", generate_client_tr_id("eppdev").unwrap().as_str());
|
|
|
|
|
|
|
|
client.transact::<_, EppContactDeleteResponse>(&contact_delete).await.unwrap();
|
|
|
|
}
|
|
|
|
|
2021-07-22 18:41:22 +00:00
|
|
|
async fn create_domain() {
|
|
|
|
let contacts = vec![
|
|
|
|
DomainContact {
|
|
|
|
contact_type: "tech".to_string(),
|
|
|
|
id: "eppdev-contact-1".to_string()
|
|
|
|
},
|
|
|
|
DomainContact {
|
|
|
|
contact_type: "billing".to_string(),
|
|
|
|
id: "eppdev-contact-1".to_string()
|
|
|
|
}
|
|
|
|
];
|
|
|
|
let domain_create = EppDomainCreate::<HostAttrList>::new("eppdev.com", 1, vec!["ns1.test.com", "ns2.test.com"], "eppdev-contact-1", "eppdevauth123", contacts, generate_client_tr_id("eppdev").unwrap().as_str());
|
|
|
|
|
|
|
|
println!("{}", domain_create.serialize().unwrap());
|
|
|
|
}
|
|
|
|
|
2021-07-22 10:44:38 +00:00
|
|
|
async fn hello(client: &mut EppClient) {
|
2021-07-22 14:01:46 +00:00
|
|
|
let greeting = client.hello().await.unwrap();
|
2021-07-22 10:44:38 +00:00
|
|
|
|
2021-07-22 14:01:46 +00:00
|
|
|
println!("{:?}", greeting);
|
2021-07-22 10:44:38 +00:00
|
|
|
}
|
|
|
|
|
2021-07-22 10:35:20 +00:00
|
|
|
#[tokio::main]
|
|
|
|
async fn main() {
|
2021-07-22 18:41:22 +00:00
|
|
|
// let mut client = match EppClient::new("hexonet").await {
|
|
|
|
// Ok(client) => {
|
|
|
|
// println!("{:?}", client.greeting());
|
|
|
|
// client
|
|
|
|
// },
|
|
|
|
// Err(e) => panic!("Error: {}", e)
|
|
|
|
// };
|
2021-07-22 10:35:20 +00:00
|
|
|
|
2021-07-22 14:01:46 +00:00
|
|
|
// hello(&mut client).await;
|
2021-07-22 10:44:38 +00:00
|
|
|
|
2021-07-22 15:08:01 +00:00
|
|
|
// check_domains(&mut client).await;
|
2021-07-22 10:35:20 +00:00
|
|
|
|
2021-07-22 10:44:38 +00:00
|
|
|
// check_contacts(&mut client).await;
|
2021-07-22 10:35:20 +00:00
|
|
|
|
2021-07-22 17:12:50 +00:00
|
|
|
// create_contact(&mut client).await;
|
|
|
|
|
|
|
|
// query_contact(&mut client).await;
|
|
|
|
|
|
|
|
// update_contact(&mut client).await;
|
|
|
|
|
|
|
|
// delete_contact(&mut client).await;
|
2021-07-22 18:41:22 +00:00
|
|
|
|
|
|
|
// create_domain().await;
|
2021-07-22 10:35:20 +00:00
|
|
|
}
|