Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- use serde::{Deserialize, Serialize};
- use url; // 1.7.2
- fn main() {
- let input_query = parse_url_param(Some(vec!["query { human(id: \"1000\") { id, name, appearsIn, homePlanet } }".to_string()]));
- println!("{:?}",input_query);
- //let operation_name = parse_url_param(url_query_string.remove("operationName"))?;
- let variables = parse_variable_param( Some(vec!["{ \"id\": \"1000\" }".to_string()]));
- println!("{:?}",variables);
- }
- fn parse_url_param(params: Option<Vec<String>>) -> std::result::Result<Option<String>,()> {
- if let Some(values) = params {
- get_single_value(values).map(Some)
- } else {
- Ok(None)
- }
- }
- fn get_single_value(mut values: Vec<String>) -> std::result::Result<String,()> {
- if values.len() == 1 {
- return Ok(values.remove(0));
- } else {
- // ошибка дубликат ключа
- return Err(());
- }
- }
- fn parse_variable_param(params: Option<Vec<String>>) -> std::result::Result<Option<String>,()>
- {
- if let Some(values) = params {
- return Ok(
- serde_json::from_str::<String>(get_single_value(values)?.as_ref())
- .map(Some)
- .map_err(|_|())?
- );
- } else {
- return Ok(None);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement