Skip to content
Snippets Groups Projects
Verified Commit 559454b2 authored by Nik | Klampfradler's avatar Nik | Klampfradler
Browse files

[Cache] Implement XDG base directory fetching

parent 6794776a
No related branches found
No related tags found
No related merge requests found
......@@ -24,6 +24,7 @@ config = "^0.11.0"
serde = "^1.0.125"
log = "^0.4.11"
syslog = "^5.0.0"
xdg = "^2.2.0"
[profile.release]
opt-level = 'z'
......
......@@ -23,6 +23,9 @@ use std::ffi::CString;
use oauth2::basic::BasicTokenResponse;
use std::env;
use xdg::{BaseDirectories,BaseDirectoriesError};
const TOKEN_DEFAULT_EXPIRES: u64 = 24 * 60 * 60;
struct UserToken {
......@@ -31,7 +34,6 @@ struct UserToken {
refresh_token: Option<String>,
}
impl UserToken {
fn is_expired(&self) -> bool {
match SystemTime::now().duration_since(SystemTime::UNIX_EPOCH) {
......@@ -91,6 +93,27 @@ impl Cache {
seteuid(self.original_euid);
}
fn get_user_xdg_base_directories(&self, username: String) -> Result<BaseDirectories, BaseDirectoriesError> {
let saved_home = env::var_os("HOME");
let nam = match CString::new(username) {
Ok(nam) => nam,
Err(_) => CString::new("nobody").ok().unwrap()
};
let user_home = CString::from_raw((*getpwnam(nam.as_ptr())).pw_dir).to_str().unwrap();
env::set_var("HOME", user_home);
let base_dirs = BaseDirectories::new()?;
if saved_home != None {
env::set_var("HOME", saved_home.unwrap());
} else {
env::remove_var("HOME");
}
return Ok(base_dirs);
}
pub fn load_user_token(&self, owner: String) -> Option<&UserToken> {
return self.user_tokens.get(&owner);
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment