pub struct RequestData { /* private fields */ }Expand description
Aggregates all RequestParameters for a single Bot API call.
§Relationship to Python source
| Python attribute / property | Rust equivalent |
|---|---|
contains_files | RequestData::contains_files() |
parameters | RequestData::parameters() |
json_parameters | RequestData::json_parameters() |
json_payload | RequestData::json_payload() |
multipart_data | RequestData::multipart_data() |
url_encoded_parameters | RequestData::url_encoded_parameters() |
parametrized_url | RequestData::parametrized_url() |
Implementations§
Source§impl RequestData
impl RequestData
Sourcepub fn new() -> Self
pub fn new() -> Self
Create an empty RequestData.
Sourcepub fn from_parameters(parameters: Vec<RequestParameter>) -> Self
pub fn from_parameters(parameters: Vec<RequestParameter>) -> Self
Create a RequestData from an existing list of parameters.
use rust_tg_bot_raw::request::request_data::RequestData;
use rust_tg_bot_raw::request::request_parameter::RequestParameter;
use serde_json::json;
let params = vec![RequestParameter::new("chat_id", json!(42))];
let data = RequestData::from_parameters(params);
assert!(!data.contains_files());Sourcepub fn push(&mut self, param: RequestParameter)
pub fn push(&mut self, param: RequestParameter)
Append a single parameter.
Sourcepub fn iter(&self) -> impl Iterator<Item = &RequestParameter>
pub fn iter(&self) -> impl Iterator<Item = &RequestParameter>
Iterate over all parameters.
Sourcepub fn contains_files(&self) -> bool
pub fn contains_files(&self) -> bool
Returns true when at least one parameter carries attached files.
Mirrors RequestData.contains_files in Python.
use rust_tg_bot_raw::request::request_data::RequestData;
use rust_tg_bot_raw::request::request_parameter::{InputFileRef, RequestParameter};
let file = InputFileRef::direct(vec![0u8]);
let p = RequestParameter::file_only("photo", file);
let data = RequestData::from_parameters(vec![p]);
assert!(data.contains_files());Sourcepub fn parameters(&self) -> HashMap<&str, &Value>
pub fn parameters(&self) -> HashMap<&str, &Value>
All parameters as a HashMap<name, Value>, excluding those whose value
is None.
Mirrors RequestData.parameters in Python.
Sourcepub fn json_parameters(&self) -> HashMap<String, String>
pub fn json_parameters(&self) -> HashMap<String, String>
All parameters as HashMap<name, json_encoded_string>, excluding those
whose JSON value is None.
Mirrors RequestData.json_parameters in Python.
use rust_tg_bot_raw::request::request_data::RequestData;
use rust_tg_bot_raw::request::request_parameter::RequestParameter;
use serde_json::json;
let data = RequestData::from_parameters(vec![
RequestParameter::new("chat_id", json!(99)),
RequestParameter::new("text", json!("hello")),
]);
let jp = data.json_parameters();
assert_eq!(jp.get("chat_id").map(String::as_str), Some("99"));
assert_eq!(jp.get("text").map(String::as_str), Some("hello"));Sourcepub fn json_payload(&self) -> Vec<u8> ⓘ
pub fn json_payload(&self) -> Vec<u8> ⓘ
Serialize the JSON parameters to a UTF-8 byte payload.
Mirrors RequestData.json_payload in Python.
use rust_tg_bot_raw::request::request_data::RequestData;
use rust_tg_bot_raw::request::request_parameter::RequestParameter;
use serde_json::json;
let data = RequestData::from_parameters(vec![
RequestParameter::new("chat_id", json!(1)),
]);
let payload = data.json_payload();
let parsed: serde_json::Value = serde_json::from_slice(&payload).unwrap();
assert_eq!(parsed["chat_id"], json!("1"));Sourcepub fn url_encoded_parameters(&self) -> String
pub fn url_encoded_parameters(&self) -> String
URL-encode all JSON parameters.
Mirrors RequestData.url_encoded_parameters in Python (without the
encode_kwargs variant — use [Self::url_encoded_parameters_with] for
that).
use rust_tg_bot_raw::request::request_data::RequestData;
use rust_tg_bot_raw::request::request_parameter::RequestParameter;
use serde_json::json;
let data = RequestData::from_parameters(vec![
RequestParameter::new("a", json!("1")),
]);
let encoded = data.url_encoded_parameters();
assert!(encoded.contains("a=1"));Sourcepub fn parametrized_url(&self, url: &str) -> String
pub fn parametrized_url(&self, url: &str) -> String
Attach the URL-encoded parameters to a base URL with a ? separator.
Mirrors RequestData.parametrized_url in Python.
use rust_tg_bot_raw::request::request_data::RequestData;
use rust_tg_bot_raw::request::request_parameter::RequestParameter;
use serde_json::json;
let data = RequestData::from_parameters(vec![
RequestParameter::new("offset", json!("0")),
]);
let url = data.parametrized_url("https://api.telegram.org/bot<token>/getUpdates");
assert!(url.starts_with("https://api.telegram.org/bot<token>/getUpdates?"));Sourcepub fn multipart_data(&self) -> Option<HashMap<String, MultipartPart>>
pub fn multipart_data(&self) -> Option<HashMap<String, MultipartPart>>
Collect multipart form parts contributed by all parameters.
Returns None when Self::contains_files is false.
The outer HashMap maps multipart part names to (bytes, mime_type, file_name) triples so that crate::request::reqwest_impl can
assemble a reqwest::multipart::Form without needing to reach back into
this module.
Trait Implementations§
Source§impl Clone for RequestData
impl Clone for RequestData
Source§fn clone(&self) -> RequestData
fn clone(&self) -> RequestData
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more