net_deleter_api/api/
network.rs1use ion_rs;
2
3use ion_rs::IonReader;
4use ion_rs::IonType;
5use ion_rs::IonWriter;
6
7use ion_rs::ReaderBuilder;
8
9use net_core_api::core::api::API;
10use net_core_api::core::encoder_api::Encoder;
11use net_core_api::core::decoder_api::Decoder;
12use net_core_api::core::typed_api::Typed;
13
14const DATA_TYPE: &str = "delete-network-request";
15
16#[derive(Debug, PartialEq, Eq)]
17pub struct DeleteNetworkRequestDTO {
18 id: String,
19}
20impl API for DeleteNetworkRequestDTO { }
21
22impl DeleteNetworkRequestDTO {
23 pub fn new(id: &str) -> Self {
24 DeleteNetworkRequestDTO {
25 id: id.to_string(),
26 }
27 }
28
29 pub fn get_id(&self) -> &str {
30 &self.id
31 }
32}
33
34impl Encoder for DeleteNetworkRequestDTO {
35 fn encode(&self) -> Vec<u8> {
36 let buffer: Vec<u8> = Vec::new();
37
38 let binary_writer_builder = ion_rs::BinaryWriterBuilder::new();
39 let mut writer = binary_writer_builder.build(buffer.clone()).unwrap();
40
41 writer.step_in(IonType::Struct).expect("Error while creating an ion struct");
42
43 writer.set_field_name("id");
44 writer.write_string(&self.id).unwrap();
45
46 writer.step_out().unwrap();
47 writer.flush().unwrap();
48
49 writer.output().as_slice().into()
50 }
51}
52
53impl Decoder for DeleteNetworkRequestDTO {
54 fn decode(data: &[u8]) -> Self {
55 let mut binary_user_reader = ReaderBuilder::new().build(data).unwrap();
56 binary_user_reader.next().unwrap();
57 binary_user_reader.step_in().unwrap();
58
59 binary_user_reader.next().unwrap();
60 let id = binary_user_reader.read_str().unwrap();
61
62 DeleteNetworkRequestDTO::new(
63 id,
64 )
65 }
66}
67
68impl Typed for DeleteNetworkRequestDTO {
69 fn get_data_type() -> &'static str {
70 DATA_TYPE
71 }
72
73 fn get_type(&self) -> &str {
74 Self::get_data_type()
75 }
76}
77
78#[cfg(test)]
79mod tests {
80 use ion_rs::IonType;
81 use ion_rs::IonReader;
82 use ion_rs::ReaderBuilder;
83 use ion_rs::StreamItem;
84
85 use net_core_api::core::encoder_api::Encoder;
86 use net_core_api::core::decoder_api::Decoder;
87
88 use crate::api::network::DeleteNetworkRequestDTO;
89
90 #[test]
91 fn reader_correctly_read_encoded_delete_network_request() {
92 const ID: &'static str = "1";
93 let delete_network_request = DeleteNetworkRequestDTO::new(
94 ID,
95 );
96 let mut binary_user_reader = ReaderBuilder::new().build(delete_network_request.encode()).unwrap();
97
98 assert_eq!(StreamItem::Value(IonType::Struct), binary_user_reader.next().unwrap());
99 binary_user_reader.step_in().unwrap();
100
101 assert_eq!(StreamItem::Value(IonType::String), binary_user_reader.next().unwrap());
102 assert_eq!("id", binary_user_reader.field_name().unwrap());
103 assert_eq!(ID, binary_user_reader.read_str().unwrap());
104
105 binary_user_reader.step_out().unwrap();
106 }
107
108 #[test]
109 fn endec_delete_network_request() {
110 const ID: &'static str = "1";
111 let delete_network_request = DeleteNetworkRequestDTO::new(
112 ID,
113 );
114
115 assert_eq!(delete_network_request, DeleteNetworkRequestDTO::decode(&delete_network_request.encode()));
116 }
117}