aboutsummaryrefslogtreecommitdiff
path: root/src/utils/mpd.rs
blob: e521c4fe3c54dcee50930268b2b06a7369646086 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
use crate::types::Config;
use mpd::{Client, Song};

// yes, error handling looks fucking sucks!
// getting mpd song file
pub fn get_mpd_current(config: &Config) -> String {
    let stream_path = format!("{}:{}", config.mpd.host, config.mpd.port);
    let empty_string = String::from("");
    let mut conn = match Client::connect(&stream_path) {
        Ok(connection) => connection,
        _ => return empty_string,
    };
    let current: Song = match conn.currentsong() {
        Ok(opt) => match opt {
            Some(song) => song,
            _ => return empty_string,
        },
        _ => return empty_string,
    };

    let result = format!(
        "  {}  {}  {}",
        config.mpd.icon, current.file, config.seperator
    );

    result
}