A decentralized music tracking and discovery platform built on AT Protocol 馃幍
at feat/pgpull 51 lines 1.4 kB view raw
1use std::collections::BTreeMap; 2 3use anyhow::Error; 4 5pub fn validate_scrobble_params( 6 form: &BTreeMap<String, String>, 7 required_params: &[&str], 8) -> Result<Vec<String>, Error> { 9 let has_artist = form.keys().any(|k| k.starts_with("artist")); 10 let has_track = form.keys().any(|k| k.starts_with("track")); 11 let has_timestamp = form.keys().any(|k| k.starts_with("timestamp")); 12 13 if !has_artist { 14 return Err(Error::msg(format!("Missing required parameter: artist"))); 15 } 16 17 if !has_track { 18 return Err(Error::msg(format!("Missing required parameter: track"))); 19 } 20 21 if !has_timestamp { 22 return Err(Error::msg(format!("Missing required parameter: timestamp"))); 23 } 24 25 for &param in required_params { 26 if !form.contains_key(param) { 27 return Err(Error::msg(format!("Missing required parameter: {}", param))); 28 } 29 } 30 31 Ok(required_params 32 .iter() 33 .map(|&s| form.get(s).unwrap().to_string()) 34 .collect()) 35} 36 37pub fn validate_required_params( 38 form: &BTreeMap<String, String>, 39 required_params: &[&str], 40) -> Result<Vec<String>, Error> { 41 for &param in required_params { 42 if !form.contains_key(param) { 43 return Err(Error::msg(format!("Missing required parameter: {}", param))); 44 } 45 } 46 47 Ok(required_params 48 .iter() 49 .map(|&s| form.get(s).unwrap().to_string()) 50 .collect()) 51}