From f9fd4080b997beedfdca30d9be9f447d5a9b8889 Mon Sep 17 00:00:00 2001 From: Ritesh Chitlangi Date: Sat, 24 Jul 2021 14:42:08 +0800 Subject: [PATCH] added epp message queue calls --- epp-client/examples/client.rs | 22 ++++++++++++++++- epp-client/src/epp.rs | 2 ++ epp-client/src/epp/request/message.rs | 1 + epp-client/src/epp/request/message/ack.rs | 27 +++++++++++++++++++++ epp-client/src/epp/response.rs | 12 +++++++++ epp-client/src/epp/response/message.rs | 1 + epp-client/src/epp/response/message/ack.rs | 3 +++ epp-client/src/epp/response/message/poll.rs | 23 ++++++++++++++++++ 8 files changed, 90 insertions(+), 1 deletion(-) create mode 100644 epp-client/src/epp/request/message/ack.rs create mode 100644 epp-client/src/epp/response/message/ack.rs diff --git a/epp-client/examples/client.rs b/epp-client/examples/client.rs index 5ea335d..f477a8b 100644 --- a/epp-client/examples/client.rs +++ b/epp-client/examples/client.rs @@ -260,6 +260,22 @@ async fn delete_host(client: &mut EppClient) { client.transact::<_, EppHostDeleteResponse>(&host_delete).await.unwrap(); } +async fn poll_message(client: &mut EppClient) { + let message_poll = EppMessagePoll::new(gen_client_tr_id("eppdev").unwrap().as_str()); + + // println!("{}", message_poll.serialize().unwrap()); + + client.transact::<_, EppMessagePollResponse>(&message_poll).await.unwrap(); +} + +async fn ack_message(client: &mut EppClient) { + let message_ack = EppMessageAck::new(12345, gen_client_tr_id("eppdev").unwrap().as_str()); + + println!("{}", message_ack.serialize().unwrap()); + + // client.transact::<_, EppMessageAckResponse>(&message_ack).await.unwrap(); +} + async fn hello(client: &mut EppClient) { let greeting = client.hello().await.unwrap(); @@ -294,7 +310,7 @@ async fn main() { // create_domain(&mut client).await; - query_domain(&mut client).await; + // query_domain(&mut client).await; // update_domain(&mut client).await; @@ -321,4 +337,8 @@ async fn main() { // update_host(&mut client).await; // delete_host(&mut client).await; + + // poll_message(&mut client).await; + + // ack_message(&mut client).await; } diff --git a/epp-client/src/epp.rs b/epp-client/src/epp.rs index 9fe39b5..22f87f6 100644 --- a/epp-client/src/epp.rs +++ b/epp-client/src/epp.rs @@ -22,6 +22,7 @@ pub use request::host::create::*; pub use request::host::delete::*; pub use request::host::info::*; pub use request::host::update::*; +pub use request::message::ack::*; pub use request::message::poll::*; pub use response::contact::check::*; @@ -41,4 +42,5 @@ pub use response::host::create::*; pub use response::host::delete::*; pub use response::host::info::*; pub use response::host::update::*; +pub use response::message::ack::*; pub use response::message::poll::*; diff --git a/epp-client/src/epp/request/message.rs b/epp-client/src/epp/request/message.rs index 5726c38..60b48c9 100644 --- a/epp-client/src/epp/request/message.rs +++ b/epp-client/src/epp/request/message.rs @@ -1 +1,2 @@ +pub mod ack; pub mod poll; diff --git a/epp-client/src/epp/request/message/ack.rs b/epp-client/src/epp/request/message/ack.rs new file mode 100644 index 0000000..f7905a8 --- /dev/null +++ b/epp-client/src/epp/request/message/ack.rs @@ -0,0 +1,27 @@ +use epp_client_macros::*; + +use crate::epp::command::Command; +use crate::epp::object::{ElementName, EppObject, StringValueTrait}; +use serde::{Deserialize, Serialize}; + +pub type EppMessageAck = EppObject>; + +#[derive(Serialize, Deserialize, Debug, ElementName)] +#[element_name(name = "ack")] +pub struct MessageAck { + op: String, + #[serde(rename = "msgID")] + message_id: String, +} + +impl EppMessageAck { + pub fn new(message_id: u32, client_tr_id: &str) -> EppMessageAck { + EppObject::build(Command:: { + command: MessageAck { + op: "ack".to_string(), + message_id: message_id.to_string(), + }, + client_tr_id: client_tr_id.to_string_value(), + }) + } +} diff --git a/epp-client/src/epp/response.rs b/epp-client/src/epp/response.rs index 4b2c820..55084a0 100644 --- a/epp-client/src/epp/response.rs +++ b/epp-client/src/epp/response.rs @@ -153,11 +153,23 @@ pub struct ResponseTRID { pub server_tr_id: StringValue, } +#[derive(Serialize, Deserialize, Debug, PartialEq, ElementName)] +pub struct MessageQueue { + pub count: u32, + pub id: String, + #[serde(rename = "qDate")] + pub date: StringValue, + #[serde(rename = "msg")] + pub message: StringValue, +} + #[derive(Serialize, Deserialize, Debug, PartialEq, ElementName)] #[serde(rename_all = "lowercase")] #[element_name(name = "response")] pub struct CommandResponse { pub result: EppResult, + #[serde(rename = "msgQ")] + pub message_queue: Option, #[serde(rename = "resData")] pub res_data: Option, #[serde(rename = "trID")] diff --git a/epp-client/src/epp/response/message.rs b/epp-client/src/epp/response/message.rs index 5726c38..60b48c9 100644 --- a/epp-client/src/epp/response/message.rs +++ b/epp-client/src/epp/response/message.rs @@ -1 +1,2 @@ +pub mod ack; pub mod poll; diff --git a/epp-client/src/epp/response/message/ack.rs b/epp-client/src/epp/response/message/ack.rs new file mode 100644 index 0000000..c129fb4 --- /dev/null +++ b/epp-client/src/epp/response/message/ack.rs @@ -0,0 +1,3 @@ +use crate::epp::response::EppCommandResponse; + +pub type EppMessageAckResponse = EppCommandResponse; diff --git a/epp-client/src/epp/response/message/poll.rs b/epp-client/src/epp/response/message/poll.rs index 8b13789..b4bcc7a 100644 --- a/epp-client/src/epp/response/message/poll.rs +++ b/epp-client/src/epp/response/message/poll.rs @@ -1 +1,24 @@ +use crate::epp::object::{EppObject, StringValue}; +use crate::epp::response::CommandResponse; +use serde::{Deserialize, Serialize}; +pub type EppMessagePollResponse = EppObject>; + +#[derive(Serialize, Deserialize, Debug)] +pub struct MessageDomainTransferData { + #[serde(rename = "xmlns:obj")] + xmlns: String, + pub name: StringValue, + #[serde(rename = "trStatus")] + pub transfer_status: StringValue, + #[serde(rename = "reID")] + pub requester_id: StringValue, + #[serde(rename = "reDate")] + pub request_date: StringValue, + #[serde(rename = "acID")] + pub responder_id: StringValue, + #[serde(rename = "acDate")] + pub respond_by_date: StringValue, + #[serde(rename = "exDate")] + pub expiry_date: StringValue, +}