tetratto_core/database/connections/
last_fm.rs1use std::collections::HashMap;
2use crate::{
3 config::Config,
4 model::auth::{ConnectionType, ExternalConnectionInfo, UserConnections},
5};
6use md5::{Md5, Digest};
7use base16ct::upper::encode_string;
8
9pub struct LastFmConnection(pub UserConnections, pub Config);
11
12impl LastFmConnection {
13 pub fn signature(params: HashMap<String, String>, secret: String) -> String {
15 let mut params_string = String::new();
16
17 let mut params = params.clone();
18 params.remove("format");
19
20 let mut x = params.iter().collect::<Vec<(&String, &String)>>();
21 x.sort_by(|a, b| a.0.cmp(b.0));
22
23 for param in x {
24 params_string.push_str(&format!("{}{}", param.0, param.1));
25 }
26
27 let mut hasher = Md5::new();
28 hasher.update(format!("{params_string}{secret}"));
29
30 let hash = hasher.finalize();
31 encode_string(&hash)
32 }
33
34 pub fn connection() -> ExternalConnectionInfo {
36 ExternalConnectionInfo {
37 con_type: ConnectionType::Token,
38 data: HashMap::new(),
39 show_on_profile: true,
40 }
41 }
42}