nacos_rust_client/grpc/
utils.rs1use std::collections::HashMap;
2
3use super::{api_model::BaseResponse, nacos_proto};
4
5pub struct PayloadUtils;
6
7impl PayloadUtils {
8 pub fn new_metadata(
9 r#type: &str,
10 client_ip: &str,
11 headers: HashMap<String, String>,
12 ) -> nacos_proto::Metadata {
13 nacos_proto::Metadata {
14 r#type: r#type.to_owned(),
15 client_ip: client_ip.to_owned(),
16 headers,
17 }
18 }
19
20 pub fn build_error_payload(error_code: u16, error_msg: String) -> nacos_proto::Payload {
21 let error_val = BaseResponse::build_error_response(error_code, error_msg).to_json_string();
22 Self::build_payload("ErrorResponse", error_val)
23 }
24
25 pub fn build_payload(url: &str, val: String) -> nacos_proto::Payload {
26 Self::build_full_payload(url, val, "", Default::default())
27 }
28
29 pub fn build_full_payload(
30 url: &str,
31 val: String,
32 client_ip: &str,
33 headers: HashMap<String, String>,
34 ) -> nacos_proto::Payload {
35 let body = nacos_proto::Any {
36 type_url: "".into(),
37 value: val.into_bytes(),
38 };
39 let meta = Self::new_metadata(url, client_ip, headers);
40 nacos_proto::Payload {
41 body: Some(body),
42 metadata: Some(meta),
43 }
44 }
45
46 pub fn get_payload_header(payload: &nacos_proto::Payload) -> String {
47 let mut str = String::default();
48 if let Some(meta) = &payload.metadata {
49 str.push_str(&format!("type:{},", meta.r#type));
50 str.push_str(&format!("client_ip:{},", meta.client_ip));
51 str.push_str(&format!("header:{:?},", meta.headers));
52 }
53 str
54 }
55
56 pub fn get_payload_string(payload: &nacos_proto::Payload) -> String {
57 let mut str = String::default();
58 if let Some(meta) = &payload.metadata {
59 str.push_str(&format!("type:{},\n\t", meta.r#type));
60 str.push_str(&format!("client_ip:{},\n\t", meta.client_ip));
61 str.push_str(&format!("header:{:?},\n\t", meta.headers));
62 }
63 if let Some(body) = &payload.body {
64 let new_value = body.clone();
65 let value_str = String::from_utf8(new_value.value).unwrap();
66 str.push_str(&format!("body:{}", value_str));
67 }
68 str
69 }
70
71 pub fn get_payload_type(payload: &nacos_proto::Payload) -> Option<&String> {
72 if let Some(meta) = &payload.metadata {
73 return Some(&meta.r#type);
74 }
75 None
76 }
77
78 pub fn get_metadata_type(metadata: &Option<nacos_proto::Metadata>) -> Option<&String> {
79 if let Some(meta) = metadata {
80 return Some(&meta.r#type);
81 }
82 None
83 }
84}