forked from
rocksky.app/rocksky
A decentralized music tracking and discovery platform built on AT Protocol 馃幍
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 ¶m 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 ¶m 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}