Advertisement
Guest User

Untitled

a guest
Jun 24th, 2019
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.21 KB | None | 0 0
  1. use serde::{Deserialize, Serialize};
  2. use url; // 1.7.2
  3.  
  4. fn main() {
  5.  
  6. let input_query = parse_url_param(Some(vec!["query { human(id: \"1000\") { id, name, appearsIn, homePlanet } }".to_string()]));
  7. println!("{:?}",input_query);
  8. //let operation_name = parse_url_param(url_query_string.remove("operationName"))?;
  9. let variables = parse_variable_param( Some(vec!["{ \"id\": \"1000\" }".to_string()]));
  10. println!("{:?}",variables);
  11. }
  12.  
  13.  
  14. fn parse_url_param(params: Option<Vec<String>>) -> std::result::Result<Option<String>,()> {
  15. if let Some(values) = params {
  16. get_single_value(values).map(Some)
  17. } else {
  18. Ok(None)
  19. }
  20. }
  21.  
  22. fn get_single_value(mut values: Vec<String>) -> std::result::Result<String,()> {
  23. if values.len() == 1 {
  24. return Ok(values.remove(0));
  25. } else {
  26. // ошибка дубликат ключа
  27. return Err(());
  28. }
  29.  
  30. }
  31.  
  32. fn parse_variable_param(params: Option<Vec<String>>) -> std::result::Result<Option<String>,()>
  33. {
  34. if let Some(values) = params {
  35. return Ok(
  36. serde_json::from_str::<String>(get_single_value(values)?.as_ref())
  37. .map(Some)
  38. .map_err(|_|())?
  39. );
  40. } else {
  41. return Ok(None);
  42. }
  43. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement